From 6bb7f82f3b685113c92ce6480e2ba698d05ab57c Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 21 Oct 2023 23:05:05 -0700 Subject: [PATCH 001/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a3e4d1a Don't check if we can see non-visible entities PaperMC/Paper@3a5c6f8 Fix NPE in SculkBloomEvent world access (#9857) PaperMC/Paper@71a1787 [ci skip] cleanup some ATs (#9840) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a9302329e..ac3acef97 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 4b0bc74c90582f2d52d720c795228130545cd103 +paperCommit = 71a1787f6cf34347a8a8e50d9834906ef0edcb27 org.gradle.caching = true org.gradle.parallel = true From 85e34e5f8bd8f273e611141b0e21c63e16156570 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 25 Oct 2023 03:06:12 -0700 Subject: [PATCH 002/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@489bff9 Temp fix for serialisable blockdata PaperMC/Paper@90fe0d5 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9825) PaperMC/Paper@c1ac983 Fix log level of advancement debug message (#9860) --- gradle.properties | 2 +- .../api/0041-Add-local-difficulty-api.patch | 4 ++-- patches/api/0044-Debug-Marker-API.patch | 4 ++-- .../0001-Pufferfish-Server-Changes.patch | 11 ++++++----- patches/server/0003-Rebrand.patch | 8 ++++---- .../server/0061-Item-entity-immunities.patch | 18 +++++++++--------- patches/server/0227-Potion-NamespacedKey.patch | 18 +++++++++--------- .../server/0262-Add-local-difficulty-api.patch | 4 ++-- patches/server/0270-Debug-Marker-API.patch | 4 ++-- patches/server/0286-Fire-Immunity-API.patch | 8 ++++---- 10 files changed, 41 insertions(+), 40 deletions(-) diff --git a/gradle.properties b/gradle.properties index ac3acef97..aad58a3fa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 71a1787f6cf34347a8a8e50d9834906ef0edcb27 +paperCommit = c1ac98328c3b4dc2834497aae70020af7b3c7d04 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0041-Add-local-difficulty-api.patch b/patches/api/0041-Add-local-difficulty-api.patch index d4313c3d9..245c3e879 100644 --- a/patches/api/0041-Add-local-difficulty-api.patch +++ b/patches/api/0041-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 8d861f5522a33669f67b3e41dfbc5234637114b4..d12443e6e1f71354dcfab9cf2f166a1097b589b5 100644 +index 91eb95b04094394e8dc1e3a3343efc63690c87e4..381cd0296ece416876e136d2ca710c18c3e8bea0 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4010,6 +4010,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4072,6 +4072,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index 5613ac07f..008265b9e 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index 3bc9fa8b68b284516ddbf0ace0c1dc52768307cb..aaef58468a3c31f35e5067ed4263e9dd // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index d12443e6e1f71354dcfab9cf2f166a1097b589b5..9a1526d3da2052815404328c2022119b98db7aa4 100644 +index 381cd0296ece416876e136d2ca710c18c3e8bea0..d8ef44761148f928a671ceba74a5d1cb87af81d9 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4018,6 +4018,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4080,6 +4080,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 61f291acb..a14c73408 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index a79461457ea19339f47572c70705d655ebc55276..57739f9dd7d045d1a585a9fc1be290a1a007db6a 100644 +index 79beac737c17412913983614bd478d33e3c6ed58..f2d26ccc6abbe7804789117b0659f8094899cc33 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -38,7 +38,7 @@ index a79461457ea19339f47572c70705d655ebc55276..57739f9dd7d045d1a585a9fc1be290a1 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -52,12 +56,27 @@ dependencies { +@@ -51,6 +55,13 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") @@ -52,6 +52,7 @@ index a79461457ea19339f47572c70705d655ebc55276..57739f9dd7d045d1a585a9fc1be290a1 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") +@@ -58,6 +69,14 @@ dependencies { } val craftbukkitPackageVersion = "1_20_R2" // Paper @@ -1527,7 +1528,7 @@ index dbccbcb9b44e4efacdf53c2d161115cc20b36cff..66aeb0ea388a8c8a08cf33728921061a } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 0c2617574e21037d94ac56ad08b490f9bca5c5af..7eaee0d0dcbb420abb5c49ba0a465d90fe513551 100644 +index 28c6ec04750daca3d77a0cee2b9f17f2508662cc..261145fced66b677e8f4159b71b4a16638c57da2 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -206,7 +206,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -3305,10 +3306,10 @@ index acfe2676b840d4edc70507aa139f7db212ed90b7..ef89684b5e8ab20744ba02a71fe0465d } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 806fb1064a1769d1251f2a2b04372275754d2aeb..3298aac109e08da4801a6f08aa6f7acfc5e6bf16 100644 +index 6b31f88803041c75023a2c99bdc1efd902f0205c..2ce2bf42dd6363b7f4325fb0387c61b5deff9ced 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -475,7 +475,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index 334447aa1..022653f7e 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index f8b27b3992f1d59bf0e95bba0961540e88345754..e372110a189857056e4fae3cd1d996ce8cb69493 100644 +index 6dd0015c4a8afb9cd36e79f5745f0afd63c6e524..0eeca0c0dfbb62b7551cda95576932d3f14e6de2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -25,7 +25,7 @@ index f8b27b3992f1d59bf0e95bba0961540e88345754..e372110a189857056e4fae3cd1d996ce // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -63,6 +63,10 @@ dependencies { +@@ -62,6 +62,10 @@ dependencies { } // Pufferfish end @@ -265,10 +265,10 @@ index d7ce4971d9271dbeff4adb9d852e4e7bdf60bf03..5a47a8785bc2e251d041f80a79295c43 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 3298aac109e08da4801a6f08aa6f7acfc5e6bf16..33ea5172bb7fe1018bc39acc16963f4998ac52b2 100644 +index 2ce2bf42dd6363b7f4325fb0387c61b5deff9ced..61f3f9550f0e2e62515502ccc5e7b90178a5db47 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -475,7 +475,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0061-Item-entity-immunities.patch b/patches/server/0061-Item-entity-immunities.patch index 76b5620f1..dbd94c3fe 100644 --- a/patches/server/0061-Item-entity-immunities.patch +++ b/patches/server/0061-Item-entity-immunities.patch @@ -66,10 +66,10 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57d2016780 100644 +index 9c0f83ff8113696309265fb9e8f6006296de86a6..c57f0ae102f1c9833ed7f93af4682caf490ec70c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -154,4 +154,46 @@ public class CraftItem extends CraftEntity implements Item { +@@ -151,4 +151,46 @@ public class CraftItem extends CraftEntity implements Item { public String toString() { return "CraftItem"; } @@ -77,22 +77,22 @@ index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57 + // Purpur start + @Override + public void setImmuneToCactus(boolean immuneToCactus) { -+ item.immuneToCactus = immuneToCactus; ++ this.getHandle().immuneToCactus = immuneToCactus; + } + + @Override + public boolean isImmuneToCactus() { -+ return item.immuneToCactus; ++ return this.getHandle().immuneToCactus; + } + + @Override + public void setImmuneToExplosion(boolean immuneToExplosion) { -+ item.immuneToExplosion = immuneToExplosion; ++ this.getHandle().immuneToExplosion = immuneToExplosion; + } + + @Override + public boolean isImmuneToExplosion() { -+ return item.immuneToExplosion; ++ return this.getHandle().immuneToExplosion; + } + + @Override @@ -102,17 +102,17 @@ index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57 + + @Override + public boolean isImmuneToFire() { -+ return item.immuneToFire; ++ return this.getHandle().immuneToFire; + } + + @Override + public void setImmuneToLightning(boolean immuneToLightning) { -+ item.immuneToLightning = immuneToLightning; ++ this.getHandle().immuneToLightning = immuneToLightning; + } + + @Override + public boolean isImmuneToLightning() { -+ return item.immuneToLightning; ++ return this.getHandle().immuneToLightning; + } + // Purpur end } diff --git a/patches/server/0227-Potion-NamespacedKey.patch b/patches/server/0227-Potion-NamespacedKey.patch index 6093ea8d8..04f1c4001 100644 --- a/patches/server/0227-Potion-NamespacedKey.patch +++ b/patches/server/0227-Potion-NamespacedKey.patch @@ -191,10 +191,10 @@ index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e21 return effects; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64c04f6e7d 100644 +index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81d135cc2e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -@@ -43,6 +43,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -45,6 +45,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { static final ItemMetaKey POTION_COLOR = new ItemMetaKey("CustomPotionColor", "custom-color"); static final ItemMetaKey ID = new ItemMetaKey("id", "potion-id"); static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("Potion", "potion-type"); @@ -202,7 +202,7 @@ index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64 // Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type // is treated as the empty form of the meta because it represents an empty potion with no effect -@@ -92,7 +93,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -97,7 +98,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { boolean ambient = effect.getBoolean(AMBIENT.NBT); boolean particles = effect.contains(SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_PARTICLES.NBT) : true; boolean icon = effect.contains(SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_ICON.NBT) : particles; @@ -217,7 +217,7 @@ index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64 } } } -@@ -139,6 +146,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -150,6 +157,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { effectData.putBoolean(AMBIENT.NBT, effect.isAmbient()); effectData.putBoolean(SHOW_PARTICLES.NBT, effect.hasParticles()); effectData.putBoolean(SHOW_ICON.NBT, effect.hasIcon()); @@ -229,7 +229,7 @@ index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64 effectList.add(effectData); } } -@@ -200,7 +212,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -225,7 +237,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { if (index != -1) { if (overwrite) { PotionEffect old = this.customEffects.get(index); @@ -239,10 +239,10 @@ index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64 } this.customEffects.set(index, effect); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index 354393cbf0f113f14e936b40da56125a3130cbd9..a1ef7ecdf272546bdd76bb4b2ecd86a69c51c777 100644 +index e29679a92da5ec05e122bb972a5ee469059a7a0a..70a3463eb6c93b662c5858016f934aa9ab267397 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -@@ -101,7 +101,7 @@ public class CraftPotionUtil { +@@ -73,7 +73,7 @@ public class CraftPotionUtil { public static MobEffectInstance fromBukkit(PotionEffect effect) { MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); @@ -251,7 +251,7 @@ index 354393cbf0f113f14e936b40da56125a3130cbd9..a1ef7ecdf272546bdd76bb4b2ecd86a6 } public static PotionEffect toBukkit(MobEffectInstance effect) { -@@ -110,7 +110,7 @@ public class CraftPotionUtil { +@@ -82,7 +82,7 @@ public class CraftPotionUtil { int duration = effect.getDuration(); boolean ambient = effect.isAmbient(); boolean particles = effect.isVisible(); @@ -261,7 +261,7 @@ index 354393cbf0f113f14e936b40da56125a3130cbd9..a1ef7ecdf272546bdd76bb4b2ecd86a6 public static boolean equals(MobEffect mobEffect, PotionEffectType type) { diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java -index 70a655df7195da8e037c22064c4ebfe5d771e884..cfdf155af7ec29dd221989edbd8623d27529f9e6 100644 +index 8963d93e99bdaf719fa160c11dd5af6a1d86f9a4..d852d8b14f5000415cbb4f06601059b3934b7efc 100644 --- a/src/test/java/org/bukkit/potion/PotionTest.java +++ b/src/test/java/org/bukkit/potion/PotionTest.java @@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index e6b06949e..bb29fd10d 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0e670de77a7f9926e295e1dd63d909bed1a959ca..791e69b2c963cd034d6d35561448cdb20b1b1cde 100644 +index 4879b585df9a6488922511a8e6603964bd13abcf..e4cfc31970ca6ee2b1f943d9d1771c9d369effb1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2289,6 +2289,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2298,6 +2298,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index d25180481..63bf7b2f6 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index 6e8cd10ec919e9c42c214a9a9c78a51794731fb6..2b3b9be41930a73886735394e12f6e3e @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 791e69b2c963cd034d6d35561448cdb20b1b1cde..52b48e40c3ee5f483c6cb04409459cf25abc3f0d 100644 +index e4cfc31970ca6ee2b1f943d9d1771c9d369effb1..42040939ae5e1e576c59cd0e1e3bcdb51899139f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2293,6 +2293,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2302,6 +2302,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } diff --git a/patches/server/0286-Fire-Immunity-API.patch b/patches/server/0286-Fire-Immunity-API.patch index 8468b3ec4..bd0a164ce 100644 --- a/patches/server/0286-Fire-Immunity-API.patch +++ b/patches/server/0286-Fire-Immunity-API.patch @@ -71,16 +71,16 @@ index eb409ecf5bf06692038e9fe84af986092a7d7837..4482e9401be4af7b16991f37d319e906 public boolean isInDaylight() { return getHandle().isSunBurnTick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 8fcee0e426cd598ddfd7e12df4382d57d2016780..4ffb4046b63cbc140c76721f51c9a7a09e81844d 100644 +index c57f0ae102f1c9833ed7f93af4682caf490ec70c..26d59cdc87645b775441e013bb334c1ae6b9db55 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -176,9 +176,14 @@ public class CraftItem extends CraftEntity implements Item { - return item.immuneToExplosion; +@@ -173,9 +173,14 @@ public class CraftItem extends CraftEntity implements Item { + return this.getHandle().immuneToExplosion; } + @Override + public void setImmuneToFire(@org.jetbrains.annotations.Nullable Boolean immuneToFire) { -+ item.immuneToFire = (immuneToFire != null && immuneToFire); ++ this.getHandle().immuneToFire = (immuneToFire != null && immuneToFire); + } + @Override From ff80cf53d514db49f4ea5a2d1132090a9fba37fa Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 27 Oct 2023 04:15:43 -0700 Subject: [PATCH 003/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@acc6d01 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9861) PaperMC/Paper@b974a6b Update paperweight to 1.5.9 (#9872) --- build.gradle.kts | 2 +- gradle.properties | 2 +- patches/api/0001-Pufferfish-API-Changes.patch | 14 ++-- patches/api/0054-Add-hover-lines-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 38 ++++----- patches/server/0004-Purpur-config-files.patch | 12 +-- .../server/0005-Purpur-client-support.patch | 10 +-- patches/server/0008-Ridables.patch | 36 ++++----- patches/server/0012-AFK-API.patch | 20 ++--- .../server/0013-Bring-back-server-name.patch | 4 +- patches/server/0016-Lagging-threshold.patch | 6 +- patches/server/0018-Anvil-API.patch | 8 +- ...0059-Add-5-second-tps-average-in-tps.patch | 8 +- .../0071-Allow-color-codes-in-books.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 24 +++--- ...-Config-to-allow-for-unsafe-enchants.patch | 4 +- ...the-ability-to-add-combustible-items.patch | 4 +- .../server/0227-Potion-NamespacedKey.patch | 22 +++--- .../0262-Add-local-difficulty-api.patch | 4 +- patches/server/0266-Remove-Timings.patch | 78 +++++++++---------- .../server/0267-Remove-Mojang-Profiler.patch | 44 +++++------ patches/server/0270-Debug-Marker-API.patch | 12 +-- .../server/0274-Add-death-screen-API.patch | 4 +- .../server/0298-Make-GUI-Great-Again.patch | 4 +- patches/server/0299-Stored-Bee-API.patch | 11 +-- 25 files changed, 190 insertions(+), 189 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 67e3a89b8..e440fc550 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.8" + id("io.papermc.paperweight.patcher") version "1.5.9" } allprojects { diff --git a/gradle.properties b/gradle.properties index aad58a3fa..b7102beb8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = c1ac98328c3b4dc2834497aae70020af7b3c7d04 +paperCommit = b974a6b6f3a989050bf4af344be27da46de9041e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 7b92d9cbd..775a27097 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index fb47a794893d5fef026a35a7c573becf74420aa0..0330a20576c372c29ca4d98a2bc5b01e28303ac3 100644 +index 639651972fddce4dff63a0f0a7e566a15b9e2dd6..0b87f34c2bb5a2f72124912a62ea393b19b1f3a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { @@ -480,10 +480,10 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bac if (cloader instanceof PluginClassLoader) { diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee1b8df621 100644 +index f9b57b872780aa6b9b959494874b57c7a8ff0c53..90953bfc81168068a281be4d2d3942d5e7dd69ff 100644 --- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -@@ -48,6 +48,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -50,6 +50,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm private io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup classLoaderGroup; // Paper public io.papermc.paper.plugin.provider.entrypoint.DependencyContext dependencyContext; // Paper @@ -492,7 +492,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee static { ClassLoader.registerAsParallelCapable(); } -@@ -183,6 +185,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -197,6 +199,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm throw new ClassNotFoundException(name); } @@ -500,7 +500,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee @Override protected Class findClass(String name) throws ClassNotFoundException { if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) { -@@ -190,7 +193,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -204,7 +207,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm } Class result = classes.get(name); @@ -509,7 +509,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee String path = name.replace('.', '/').concat(".class"); JarEntry entry = jar.getJarEntry(path); -@@ -237,6 +240,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -251,6 +254,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm this.setClass(name, result); // Paper } @@ -517,7 +517,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee return result; } -@@ -251,6 +255,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -265,6 +269,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm // Paper end super.close(); } finally { diff --git a/patches/api/0054-Add-hover-lines-API.patch b/patches/api/0054-Add-hover-lines-API.patch index 4cb7789bf..a2f0f0a92 100644 --- a/patches/api/0054-Add-hover-lines-API.patch +++ b/patches/api/0054-Add-hover-lines-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java -index ab73893656932f54009340df59293df2a732be51..9448709716e0b91dd9e2c7ff4060ec0d33d77d24 100644 +index 1c4e0c7356047163a38f5ac4dd544129d0b36271..5e64f172508d928b6d74796a942ecc1077665b7b 100644 --- a/src/main/java/org/bukkit/inventory/ItemFactory.java +++ b/src/main/java/org/bukkit/inventory/ItemFactory.java -@@ -298,4 +298,14 @@ public interface ItemFactory { +@@ -299,4 +299,14 @@ public interface ItemFactory { @Deprecated net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName); // Paper end - bungee hover events diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index a14c73408..4126e6457 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1477,7 +1477,7 @@ index d02546b18cb689724887b4e85e8d32a18828a4ad..91eaff58bb422ba188e6cfaa9c20b45b public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 97745f0bab8d82d397c6c2a5775aed92bca0a034..371049c1236c6443384c0ce184e99d5b9f8e57c2 100644 +index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -308,6 +308,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { @@ -1782,7 +1782,7 @@ index 17610196db7a1c6feb2cf74a02479a8691aa323f..c1b03e4c37ea85ddf283479682d0eb2e if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 34fcdeb0f4039f1fc6c4c8c593cc615560af1ba2..ef6d8f787cba0db53270adedd923f9a47d435852 100644 +index 8bca5ba75977c0a61197eb47c94f0456d66b29a4..dcc26435a7d3eb83f92ec165cf16486a06397576 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1118,6 +1118,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1914,7 +1914,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f20ae9153b7098980ce6c0e75fcbbb4da652661b..505ed0f8f933428192f5fc806ff52d84acea7f99 100644 +index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de9378884df2fb20 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -305,7 +305,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b95f88d5e5b4785ee063695fd81935636a0588d1..2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451 100644 +index 776e9adc07e9ddd142c9fc7df56b5795ff8b2249..02d53d7c4e308b2fd70b1f7c1367484bbb3dcec7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2326,7 +2326,7 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cf this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index aa850cfaa0534d57e83f37360724da2428a48a18..eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4 100644 +index d5b97d4316390028f54aa9bb9fa52b0b003e32a0..b4793b88688bd568a428aa520e880f0038de45a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -280,9 +280,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data))); @@ -3332,7 +3332,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..80553face9c70c2a3d897681e7761df8 if (stream != null) { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 2f9e5a1adf9d67ffe18d95f2822ca3d2288fb27a..14e8e7ad8d742cdc0c50d29d6dade3e338c0463e 100644 +index 59103744ac6beeb12719fdefcda54eeff498229e..c0333ba8e57cd284bb8ab15181da6b39d55872f9 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings; diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 47fa0eb0e..d82853081 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -72,7 +72,7 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66 boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7cabf41dd 100644 +index 462c4eb3c06779f86f66778e9578d3d8f06c3294..a87d025a7ad0b7df16bea6fa4aeecae416551dde 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -92,7 +92,7 @@ index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd2adcd6ed 100644 +index 28fd04794e2a624c5d0a1322b1d6d851f443e3b1..b60ab6c545296c67304019759ab04aa659fb5700 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -112,12 +112,12 @@ index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed05f9a714 100644 +index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6bb54ab0b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1039,6 +1039,7 @@ public final class CraftServer implements Server { - org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot + org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); + org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur for (ServerLevel world : this.console.getAllLevels()) { @@ -139,7 +139,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2919,6 +2922,18 @@ public final class CraftServer implements Server { +@@ -2920,6 +2923,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index e4cacb17f56c618bef19e1165c07aac86af61150..a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f 100644 +index 2af0068ef338634d1f44532af5db66c2d0b3dd10..8e844e3c88a1100d407fac1edf0379072370a6e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,14 @@ public class Main { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index d2813bee5..e0832a8f0 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a 100644 +index c7d26a119415ced56ccad04f8a1b180d9f714586..431353d891f94bbe9fa3d18fd16e434a81b293d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -274,6 +274,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e091c0775f 100644 +index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b601ba6662 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -39,14 +39,14 @@ index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e0 + } catch (Exception ignore) { + } + // Purpur end - } else if (identifier.equals(CUSTOM_UNREGISTER)) { + } else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) { try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 604ed1f6742a6b028b9db2809f7bd4b9a3b38f4d..16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73 100644 +index 57229748ae446d70dbc3d71219d9f81f5c8f72b1..0d63baac39f0a6c01dc9e4ff7ba6194a9efdf4dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3283,4 +3283,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3285,4 +3285,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index a6e75dc7f..b2e2eab83 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,7 +22,7 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ebcd6c821379f4feb3b2c094266645ae552972db..edd53077098cfaaa5987dc7df7163b83a5ed3b26 100644 +index ef14f47cec00ffaf1ac683964d3d1831dae9bcdb..be7508a527a55ada0f769588db024f999d0b95f5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1531,6 +1531,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cf2fd8eba6aa4cf15cac924577507a700f7f72b5..19698f13530183b3580a7a6ad720d078b6c791ba 100644 +index ee0403e18b484b85c92aca76faf977c013bfdfe0..f7a19cdc38feb0dcee3e3cf42610a0604f9f4672 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index cf2fd8eba6aa4cf15cac924577507a700f7f72b5..19698f13530183b3580a7a6ad720d078 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 75faac7c8009672c733033c5aabb4e1974ce5790..3f5d87ccdee1309ae8240a3d181e268d8c022f56 100644 +index c1c596f60d4a29e70f149fd1fb67abadea62c9b3..9f644c24027dec3d89b81fbd86a183f4b773be0f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -756,6 +756,15 @@ public class ServerPlayer extends Player { @@ -66,12 +66,12 @@ index 75faac7c8009672c733033c5aabb4e1974ce5790..3f5d87ccdee1309ae8240a3d181e268d public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ef6d8f787cba0db53270adedd923f9a47d435852..675e6e7246d84195dc027c0209744896bd2b7224 100644 +index dcc26435a7d3eb83f92ec165cf16486a06397576..26b4307a6a693a1b99951d1270264baa86868630 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2713,6 +2713,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - cserver.getPluginManager().callEvent(event); + ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); + player.processClick(enumhand); // Purpur + @@ -79,7 +79,7 @@ index ef6d8f787cba0db53270adedd923f9a47d435852..675e6e7246d84195dc027c0209744896 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8bc26cc6af27ba4c13940d61154786d47cb5aaf3..5eb10b5f75b55f66a002745d016b88e0366d1301 100644 +index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed4f1dd056 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -375,7 +375,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451..cc82a506e0da0bf4318a37326924d71ca3340d5e 100644 +index 02d53d7c4e308b2fd70b1f7c1367484bbb3dcec7..aa5a70c0b791c2e0bf9cb878e4f4ed7afe9807bf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -965,7 +965,7 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb // CraftBukkit end 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 8448c5d778998390cf2b683f36e4e18ca7ffdc34..3dab78e2f39855f71bb7294521be71b3faa59b81 100644 +index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599e107b5e1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal { @@ -1090,7 +1090,7 @@ index 8448c5d778998390cf2b683f36e4e18ca7ffdc34..3dab78e2f39855f71bb7294521be71b3 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 31d4683f5e158f076ce9a416b7003478af293688..7d692f61ed4c6cc8e6b94eda4f48e9cb6baa0ae2 100644 +index 9e2af80c6a87f5849710266149cbca8cabfad4f8..b5f1d79787a7dbc8fddaa47fdeec1b224b409d19 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -144,6 +144,44 @@ public class Fox extends Animal implements VariantHolder { @@ -2204,7 +2204,7 @@ index d241ca4d0295f9fce39c11197bd435cfac7f6e54..09f796ec491f21520e1fcc454249e469 this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4..4dfe6a909ac3d553bd1cd4cfc131ac8bfb5a0b02 100644 +index b4793b88688bd568a428aa520e880f0038de45a7..d1dd2cda473bb2294dc10c66c13eac8591ea4d5b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder) server.getHandle().players) { +- this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name); ++ this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur + for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3289,5 +3294,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3291,5 +3296,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,7 +317,7 @@ index 27ce55687c7c59fdfdcc4553240ea8b023919b77..3ed1a91c93f659306acaf8bad6820f49 public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 14e8e7ad8d742cdc0c50d29d6dade3e338c0463e..d1448f50a9c03bd779f4bcd6b4fc896365316b78 100644 +index c0333ba8e57cd284bb8ab15181da6b39d55872f9..282a57df4e2e5708e9cfd9c76b1d7de2a8a23900 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -203,6 +203,7 @@ public class ActivationRange diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index 360d8d409..ba895ba3a 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index c5598adb8cbcbcf7277c2fd4dd72c243d44d9700..cda4544ae96a4fcb5c6c4483df67a59f public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 2674aede815f8c6d0fbaf22895ccb7ed05f9a714..76d448e18b81fbb4b87c9cc1425fb446d9d6419c 100644 +index b84fdc990cca9cb7c0d570123a8c7e6bb54ab0b5..87103371b53305bd7e55672f8aa8b86ff23f7ac7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3152,4 +3152,11 @@ public final class CraftServer implements Server { +@@ -3153,4 +3153,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 0c9e4c45b..46b19866e 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a22dbc34cfd9de6e996eb925c47abfccef13b0e7..4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14 100644 +index 393cf73f3897f32f4a17bdc36b0d8881605817ed..89adc016610c13fee02b7dba35fcc37679afcec9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -301,6 +301,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 0, "Maximum repair cost must be positive (or 0)"); - container.maximumRepairCost = levels; + this.container.maximumRepairCost = levels; } + + // Purpur start diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index cf86e81e2..54de2c81e 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -27,7 +27,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 57f2b54ad36d33e76e538895df691987c869a043..c29f8291b43a2e92e3444ab72dd23065a006f11f 100644 +index f99658c42e69ded4c61ccaf4ac5e9e645ee5bc7c..c5a93bb3f0ae907d3abb63f97567ab0e54a25b42 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -297,7 +297,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index b13429e254bd056cf942f39d46976ff0ef2a97f3..948760c9ee6ba921a7f1b4200fc77aa13f198984 100644 +index fc4b66e0a0561fc6705a50dc65b1120301f02f77..cf58894de9804770ba1722e2c0b727d3a637bf9f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder { @@ -131,7 +131,7 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 4149a7aea12cac04a2dfe29e071047de461eb3f4..0d16d486c7efc9a8c4c0db648175cacee5aa3a04 100644 +index a5b2af9d56e4efece7161d25dbc88f343ef233cc..39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -603,7 +603,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -157,7 +157,7 @@ index 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd8 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b..580e7c149e24f0bcbb8c21284869f78e485d091d 100644 +index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e911902b23 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { @@ -256,22 +256,22 @@ index d9b1bde3ce458b7e50f7645d07ee578d13006a0a..d133820c47ecda733aa8242acdb2cd3b protected boolean canReplaceCurrentItem(ItemStack stack) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -index 251e6bc87eb02ec4372062ef22b21249ac5164ff..6b60597a0e837054b0d1891c1e6e5e7cd3af9539 100644 +index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e83031751cf50 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java @@ -16,20 +16,20 @@ public class LargeFireball extends Fireball { public LargeFireball(EntityType type, Level world) { super(type, world); -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur } public LargeFireball(Level world, LivingEntity owner, double velocityX, double velocityY, double velocityZ, int explosionPower) { super(EntityType.FIREBALL, owner, velocityX, velocityY, velocityZ, world); this.explosionPower = explosionPower; -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur } @Override @@ -296,15 +296,15 @@ index cd0629581bae5f805842157af36c2d838e01bee3..b0a559dfefac693bda8692a30fbaa5ac } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 04c2ea1ff44af72ae48e2d6b7b912b1c14285038..7839d856b3f924f0c87b298d9a1e3b15ab0693d6 100644 +index 9d43c8520953d6fe0d0948f9dbe14e0650ee01c2..deee9fffe6981d7e728621cc799a812d78000592 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -24,7 +24,7 @@ public class SmallFireball extends Fireball { super(EntityType.SMALL_FIREBALL, owner, velocityX, velocityY, velocityZ, world); // CraftBukkit start if (this.getOwner() != null && this.getOwner() instanceof Mob) { -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur } // CraftBukkit end } diff --git a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index eccba460e..6658e842d 100644 --- a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -27,7 +27,7 @@ index 664cbce2e06fcb95d3d3d6c5302fc9119f938925..bc9778c705d23acd84fa1cdeff6b403b ++i; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 8a7c30e316db4960b0b62ca0e366c19febead214..fdf2bf10a533c3d4ee145880e6949dadf6ce5410 100644 +index cccd34370d76d96eddeba3de1cfc41d47f9d1f60..ceac7d74f6fbe6519535357a03a0e4d1214d6a1d 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -228,7 +228,8 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -65,7 +65,7 @@ index 8a7c30e316db4960b0b62ca0e366c19febead214..fdf2bf10a533c3d4ee145880e6949dad } @@ -389,7 +394,7 @@ public class AnvilMenu extends ItemCombinerMenu { - sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client + this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); // Purpur start - if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { diff --git a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch index 8bb5df6d0..031768cc6 100644 --- a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index da114737b3515b3f39aaa36c23a0d76699eb4239..6e8cd10ec919e9c42c214a9a9c78a51794731fb6 100644 +index 892acaa0c664020b75a800eaa4d6e495727a6430..8215160bdba34c5eea7aed54ecf71b76abb49a45 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1537,6 +1537,19 @@ public final class CraftServer implements Server { +@@ -1538,6 +1538,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0227-Potion-NamespacedKey.patch b/patches/server/0227-Potion-NamespacedKey.patch index 04f1c4001..c565ac2a7 100644 --- a/patches/server/0227-Potion-NamespacedKey.patch +++ b/patches/server/0227-Potion-NamespacedKey.patch @@ -160,7 +160,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0 100644 +index a86ce1e672df969b28293e7da4c6f4414d8d80a7..bc2a7120a7758097080b39f2aa37828d98b84fd5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -191,7 +191,7 @@ index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e21 return effects; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81d135cc2e 100644 +index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java @@ -45,6 +45,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { @@ -203,14 +203,14 @@ index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81 // Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type // is treated as the empty form of the meta because it represents an empty potion with no effect @@ -97,7 +98,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - boolean ambient = effect.getBoolean(AMBIENT.NBT); - boolean particles = effect.contains(SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_PARTICLES.NBT) : true; - boolean icon = effect.contains(SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_ICON.NBT) : particles; + boolean ambient = effect.getBoolean(CraftMetaPotion.AMBIENT.NBT); + boolean particles = effect.contains(CraftMetaPotion.SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT) : true; + boolean icon = effect.contains(CraftMetaPotion.SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_ICON.NBT) : particles; - this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon)); + // Purpur start + NamespacedKey key = null; -+ if (tag.contains(KEY.NBT)) { -+ key = NamespacedKey.fromString(effect.getString(KEY.NBT)); ++ if (tag.contains(CraftMetaPotion.KEY.NBT)) { ++ key = NamespacedKey.fromString(effect.getString(CraftMetaPotion.KEY.NBT)); + } + this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon, key)); + // Purpur end @@ -218,12 +218,12 @@ index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81 } } @@ -150,6 +157,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - effectData.putBoolean(AMBIENT.NBT, effect.isAmbient()); - effectData.putBoolean(SHOW_PARTICLES.NBT, effect.hasParticles()); - effectData.putBoolean(SHOW_ICON.NBT, effect.hasIcon()); + effectData.putBoolean(CraftMetaPotion.AMBIENT.NBT, effect.isAmbient()); + effectData.putBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT, effect.hasParticles()); + effectData.putBoolean(CraftMetaPotion.SHOW_ICON.NBT, effect.hasIcon()); + // Purpur start + if (effect.hasKey()) { -+ effectData.putString(KEY.NBT, effect.getKey().toString()); ++ effectData.putString(CraftMetaPotion.KEY.NBT, effect.getKey().toString()); + } + // Purpur end effectList.add(effectData); diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index bb29fd10d..11ccdc887 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 4879b585df9a6488922511a8e6603964bd13abcf..e4cfc31970ca6ee2b1f943d9d1771c9d369effb1 100644 +index 5e350fa39f47d54f6048ea89c1317759f122b8ae..0afa519068a9d7bf5b16e201d9d768254094dc4f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2298,6 +2298,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2301,6 +2301,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index c8bc91be3..3c1f2bf92 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -56,7 +56,7 @@ index 9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1..0be239c5c78432a6377cd7828cd49f61 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 219f4c9ca2dfa1f55d7c5f4443dab9844ebec4b9..2ea0db79e2a4b23455b2b2bc345621b4a58629ab 100644 +index cd319d1bddbe5f02e998c961905bcba777492371..bf5cc18304f464aec59f3982311a0a99d9a9706b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1390,15 +1390,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { @@ -489,10 +489,10 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a } } }); -- timings.entityTick.stopTiming(); // Spigot -- timings.tickEntities.stopTiming(); // Spigot -+ //timings.entityTick.stopTiming(); // Spigot // Purpur -+ //timings.tickEntities.stopTiming(); // Spigot // Purpur +- this.timings.entityTick.stopTiming(); // Spigot +- this.timings.tickEntities.stopTiming(); // Spigot ++ //this.timings.entityTick.stopTiming(); // Spigot // Purpur ++ //this.timings.tickEntities.stopTiming(); // Spigot // Purpur gameprofilerfiller.pop(); this.tickBlockEntities(); } @@ -584,7 +584,7 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a @@ -1578,7 +1578,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { - org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit + org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit - try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper + //try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper // Purpur // Purpur if (progressListener != null) { @@ -606,7 +606,7 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 018a3597c7132ba1f5972fef74b6a32837a31cb3..0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50 100644 +index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5bb234edb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -637,7 +637,7 @@ index 018a3597c7132ba1f5972fef74b6a32837a31cb3..0c56b90dbcb4aaf904eeb1773a1aa82e } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cf721106b861a8c166244efc2114e22d038aa3a7..5c38df8170033dbfee267520991a3cc3285d219e 100644 +index 11b825f3dda93005e4b6fd4a5f36935215daf76a..d83f360d5f28f39fffca2949c5dbc114c04e7629 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1249,7 +1249,7 @@ public abstract class PlayerList { @@ -708,25 +708,25 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index b486008e2ef64648064aa365fb98bd5878f9c379..fc27f690d302559dd534e9f4ede7a7bd6422837a 100644 +index 80b4d8d1283c03681106853fd83bf6df0392c230..8b537022638648c11396c0ee638750c712a6230b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1304,15 +1304,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); -- timings.tileEntityPending.startTiming(); // Spigot -+ //timings.tileEntityPending.startTiming(); // Spigot // Purpur +- this.timings.tileEntityPending.startTiming(); // Spigot ++ //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); this.pendingBlockEntityTickers.clear(); } -- timings.tileEntityPending.stopTiming(); // Spigot -+ //timings.tileEntityPending.stopTiming(); // Spigot // Purpur +- this.timings.tileEntityPending.stopTiming(); // Spigot ++ //this.timings.tileEntityPending.stopTiming(); // Spigot // Purpur -- timings.tileEntityTick.startTiming(); // Spigot -+ //timings.tileEntityTick.startTiming(); // Spigot // Purpur +- this.timings.tileEntityTick.startTiming(); // Spigot ++ //this.timings.tileEntityTick.startTiming(); // Spigot // Purpur // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; @@ -734,8 +734,8 @@ index b486008e2ef64648064aa365fb98bd5878f9c379..fc27f690d302559dd534e9f4ede7a7bd } this.blockEntityTickers.removeAll(toRemove); -- timings.tileEntityTick.stopTiming(); // Spigot -+ //timings.tileEntityTick.stopTiming(); // Spigot // Purpur +- this.timings.tileEntityTick.stopTiming(); // Spigot ++ //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); @@ -762,7 +762,7 @@ index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index e2ea90469352346b43f0a86746179a6adc53d82a..ef2f9ee9f32d6a6ad7ec9385335fc368f0ecff32 100644 +index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d64717a422 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -800,7 +800,7 @@ public class LevelChunk extends ChunkAccess { @@ -802,7 +802,7 @@ index e2ea90469352346b43f0a86746179a6adc53d82a..ef2f9ee9f32d6a6ad7ec9385335fc368 } } diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 5a47a8785bc2e251d041f80a79295c43459de3bc..a4567188e2fe3f922bb6aeb71a2845d1a1be536f 100644 +index e5b8466fb2f8c98bdc81839d9c01cece42c39081..247b233978728d8a0007b494e1d1e0aee29f68c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -513,10 +513,10 @@ public class CraftScheduler implements BukkitScheduler { @@ -837,7 +837,7 @@ index 5a47a8785bc2e251d041f80a79295c43459de3bc..a4567188e2fe3f922bb6aeb71a2845d1 private boolean isReady(final int currentTick) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779dea78dab18 100644 +index ea26d9464644b5217879b8c21b4da28e57708dcb..5835dc236b3f5291a804f7fb14a12eb466d4e0ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -96,13 +96,13 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot @@ -857,7 +857,7 @@ index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779de long getCreatedAt() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455babbe3b0 100644 +index 891f850ea99dac1433f3e395e26be14c8abf2bfb..280ed3a3b61b3eadbb6f253cd4e058641e2c3d2e 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { @@ -879,7 +879,7 @@ index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455 // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 925cd6e07efc3a42ff5787823b046726ce863104..eae9bf47521ded2a4b7972978f3bd801c685d56a 100644 +index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438daccf0e4f5fa 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -170,7 +170,7 @@ public class ActivationRange diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index 463e03961..1dbb39df8 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -39,7 +39,7 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7 return b0; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2ea0db79e2a4b23455b2b2bc345621b4a58629ab..306195a8a57dc62379ffd856b214a651fd60e483 100644 +index bf5cc18304f464aec59f3982311a0a99d9a9706b..926ba816e7bccec0d1b34c2f8fc3300be84df4c2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -338,13 +338,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop s = getSnapshot().getStored(); ++ List s = this.getSnapshot().getStored(); + if(length < s.size()) { + storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(s.get(s.size() - 1), this)); + } From c9aee076fc4f9461bc7fb79c7748b791082f9477 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Oct 2023 12:39:53 -0700 Subject: [PATCH 004/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@996d529 Resend entity using the bundle packet (#9853) PaperMC/Paper@8cf2503 Updated Upstream (Bukkit/CraftBukkit) (#9876) PaperMC/Paper@2935067 Fix null item in sendEquipmentChange (#9869) PaperMC/Paper@b3cac04 Fix crash when version_history.json is empty (#9871) PaperMC/Paper@b1faa5d Fix PotionAPI ignores icon flag (#9864) PaperMC/Paper@52849f6 Cleanup disable explosion knockback patch (#9858) PaperMC/Paper@8b1ac39 Fix warden spawn reason from DEFAULT to NATURAL (#8744) PaperMC/Paper@c6fac38 fix UnsafeValues#loadAdvancement doesn't recalculate position (#9846) PaperMC/Paper@5bdfb29 Add player idle duration API (#9833) PaperMC/Paper@a81a384 Implement Velocity VarInt optimizations (#8418) PaperMC/Paper@415d708 [ci skip] Fix author in last patch PaperMC/Paper@3e4eaf2 [ci skip] Fix module derp PaperMC/Paper@5bb30ce Fix entity camera not being reset when cancelling spectating start/stop events (#9883) PaperMC/Paper@1865625 Fix NPE when no valid world is found on legacy Players (#9885) --- gradle.properties | 2 +- patches/api/0005-Purpur-client-support.patch | 4 +-- patches/api/0010-AFK-API.patch | 5 +-- patches/api/0044-Debug-Marker-API.patch | 6 ++-- patches/api/0045-Add-death-screen-API.patch | 4 +-- .../0001-Pufferfish-Server-Changes.patch | 8 ++--- patches/server/0003-Rebrand.patch | 14 ++++---- .../server/0005-Purpur-client-support.patch | 6 ++-- patches/server/0008-Ridables.patch | 18 +++++------ patches/server/0012-AFK-API.patch | 6 ++-- .../0015-LivingEntity-safeFallDistance.patch | 6 ++-- ...able-loot-drops-on-death-by-cramming.patch | 6 ++-- ...urable-void-damage-height-and-damage.patch | 6 ++-- .../0060-Implement-elytra-settings.patch | 4 +-- ...leport-to-spawn-if-outside-world-bor.patch | 6 ++-- .../0078-Totems-work-in-inventory.patch | 4 +-- patches/server/0117-Implement-TPSBar.patch | 10 +++--- ...iefing-bypass-to-everything-affected.patch | 4 +-- patches/server/0133-One-Punch-Man.patch | 4 +-- ...174-API-for-any-mob-to-burn-daylight.patch | 12 +++---- patches/server/0197-Add-compass-command.patch | 4 +-- .../0198-Toggle-for-kinetic-damage.patch | 4 +-- .../server/0227-Potion-NamespacedKey.patch | 32 ++++--------------- .../server/0267-Remove-Mojang-Profiler.patch | 16 +++++----- patches/server/0270-Debug-Marker-API.patch | 4 +-- .../server/0274-Add-death-screen-API.patch | 4 +-- ...76-Implement-ram-and-rambar-commands.patch | 4 +-- 27 files changed, 93 insertions(+), 110 deletions(-) diff --git a/gradle.properties b/gradle.properties index b7102beb8..e4f22f48a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = b974a6b6f3a989050bf4af344be27da46de9041e +paperCommit = 1865625d958b94d82e0bd601d6d860318980c4c4 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index e3e3bdc4e..3255be384 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 5c7a73ea74efe256c695080ba92b8cf698e4cd86..776c271631a2cb519d411892715c1dfa57e2489e 100644 +index 2996db88343060624d6aab7889290ae74a973fe8..d470c0772c054f26de1da5c10b887f29e62b0eb7 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3278,4 +3278,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3301,4 +3301,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 2996d7e49..d1ffe45ca 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 776c271631a2cb519d411892715c1dfa57e2489e..53f509afb6bd7e8afe2d25ec6de23ece8d1c2c18 100644 +index d470c0772c054f26de1da5c10b887f29e62b0eb7..eb4fc096b9b96726b9c324029391baa585eca43b 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3286,5 +3286,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3309,5 +3309,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); @@ -29,6 +29,7 @@ index 776c271631a2cb519d411892715c1dfa57e2489e..53f509afb6bd7e8afe2d25ec6de23ece + + /** + * Reset the idle timer back to 0 ++ * @deprecated Use {@link #resetIdleDuration()} instead + */ + void resetIdleTimer(); // Purpur end diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index 008265b9e..a53ce8b99 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -260,11 +260,11 @@ index 381cd0296ece416876e136d2ca710c18c3e8bea0..d8ef44761148f928a671ceba74a5d1cb /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c2ab25febe558b9653cd740c477dfd7ffd9b0318..b72415a388862736af005bb2bf8d283bacfb90d9 100644 +index eb4fc096b9b96726b9c324029391baa585eca43b..ab74fa8ef7bb273b3b2abc519ba4957873826037 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3305,5 +3305,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - * Reset the idle timer back to 0 +@@ -3329,5 +3329,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); + diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index 5e935d4ae..a0b10e02b 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 460b8d831049e1bff94b87eaeeabb38e2cc3462e..b9a2001eaf83ab3445f3e44631c60705ac858b98 100644 +index ab74fa8ef7bb273b3b2abc519ba4957873826037..ccbde7687d67dec442bed0df72af1f36cc26d179 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3375,5 +3375,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3399,5 +3399,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 4126e6457..27d481d54 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 776e9adc07e9ddd142c9fc7df56b5795ff8b2249..02d53d7c4e308b2fd70b1f7c1367484bbb3dcec7 100644 +index 675d695989cef5d8fc2e85673efbb57ec1bb38bd..26b57d004cf9b43967dce65c75946895fb703b84 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2113,7 +2113,7 @@ index 776e9adc07e9ddd142c9fc7df56b5795ff8b2249..02d53d7c4e308b2fd70b1f7c1367484b @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1999,6 +2011,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1996,6 +2008,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -3306,10 +3306,10 @@ index 96d772eb02f79f8c478f5e6f065e387aa7665b18..c5ce412f321b8b4f31cc042893659e21 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 6b31f88803041c75023a2c99bdc1efd902f0205c..2ce2bf42dd6363b7f4325fb0387c61b5deff9ced 100644 +index 548c77592a3520e8053483644eba805079a14f1a..397c10f64db3a4d7296fe18585b56851bc3a1f01 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -475,7 +475,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -485,7 +485,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index 022653f7e..7a94fb712 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -177,7 +177,7 @@ index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae283 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 371049c1236c6443384c0ce184e99d5b9f8e57c2..ebcd6c821379f4feb3b2c094266645ae552972db 100644 +index 58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90..ef14f47cec00ffaf1ac683964d3d1831dae9bcdb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -910,7 +910,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3291,5 +3296,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3303,5 +3308,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index a666d56c7..85e1022c2 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7471edf871522543cb49afef63d2c539b7e871a3..960e6ae3e7ceb981459b87343cacb7458d51eecf 100644 +index 63917cc4efb9d5a21d83e263c315adc6f5fdb04e..1d8d5cdb1604d852bf72d16e29e7a74caded5692 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -34,7 +34,7 @@ index 7471edf871522543cb49afef63d2c539b7e871a3..960e6ae3e7ceb981459b87343cacb745 double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2092,7 +2093,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2089,7 +2090,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -69,7 +69,7 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 3579715faa33a722cccb13d8d7c86a3de740d6fc..3c65041eed148fe30be3c73e423433e37ae58cc5 100644 +index 2be45534feedb77c44fbd736f2725b97b3840b41..231603683dee2e7ceeb551bd3cb331f98fb32bde 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch index 02ec25159..e0676f20a 100644 --- a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b738792689 100644 +index 1d8d5cdb1604d852bf72d16e29e7a74caded5692..eaff62f5dee0423723c259328d6c0c2c8a7156ef 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1838,6 +1838,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1835,6 +1835,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b7 this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1846,6 +1847,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1843,6 +1844,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index 70a840519..b723657a5 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ 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 a5f54e2c17f618b99c76281b45d005280e4e31f9..790c6c677cd83bd4158e1567e51b7669fc219178 100644 +index 63d6fc245b38202674da4f7d15665b57d9c5ef3c..f93cf0029d51cf124bcbc4b4a8b5677978968dfd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -860,7 +860,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18,10 +18,10 @@ index a5f54e2c17f618b99c76281b45d005280e4e31f9..790c6c677cd83bd4158e1567e51b7669 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c22b07728dde5807873004e4037ce3b738792689..8b25c2f8b089caf3fa03ff73d65be5c2f442a5d3 100644 +index eaff62f5dee0423723c259328d6c0c2c8a7156ef..5b80d41b267488d632492239298c94ded9ac40bb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2538,7 +2538,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2535,7 +2535,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { diff --git a/patches/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index c1bdc9558..da6507cc7 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 8b25c2f8b089caf3fa03ff73d65be5c2f442a5d3..ee41bfa1a851340f291182f520c9cf1925a355af 100644 +index 5b80d41b267488d632492239298c94ded9ac40bb..d919966b056116dc2c0777250ecb492a68257d70 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3559,7 +3559,16 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3556,7 +3556,16 @@ public abstract class LivingEntity extends Entity implements Attackable { int j = i / 10; if (j % 2 == 0) { diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 79ac1dd33..5263902a6 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-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 85383b6a9d16b7cf7e928c4d9aaf7af932540091..8b05588b480af39d25bfcb84a5241e9e055c81f8 100644 +index 6f5632eb105f17e0f8b39f09b68d809eb4fb2c76..fa5cf2152eb48b2b099d94963367511b032cbac6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2744,4 +2744,26 @@ public class ServerPlayer extends Player { +@@ -2747,4 +2747,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index 85383b6a9d16b7cf7e928c4d9aaf7af932540091..8b05588b480af39d25bfcb84a5241e9e + // 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 ee41bfa1a851340f291182f520c9cf1925a355af..3fe857ddd4dbaa73f9556f547f03e9f747a52c40 100644 +index d919966b056116dc2c0777250ecb492a68257d70..fa59b382c25b9c47bf921258dec89cf2b5ca92e8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch index ba2fd9de8..5150f53f6 100644 --- a/patches/server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0078-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 3fe857ddd4dbaa73f9556f547f03e9f747a52c40..3271c1a14fba90ab2e6467d907dfaf8cf5c12b65 100644 +index fa59b382c25b9c47bf921258dec89cf2b5ca92e8..bb36602c78292e762e26fe23e9928609c4bb4271 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1626,6 +1626,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1623,6 +1623,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index 35d4c5d72..50efc714c 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -17,7 +17,7 @@ index 637648e03985868c1fe420f84fa778b06deb23ee..e1887523b0b6a0479544385932f54ab1 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cdf770adf641844caf0290a8354046aeb8e00cb3..a3675f1ef2317c1a0e9addd9280fe928a45b2736 100644 +index cef1f7169880560a9c79667320e63d552fa4aa03..13b57942eb63b2a9460f96ec59bb9ba36fe65e04 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1008,6 +1008,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9204b119a038868e63a345f2a8cd175cba96b090..2570fb81e94f7169a54a8e0b2dce5a2c24fcd00e 100644 +index 03b0c98e4e926f5cf630e0fddb2e51fc70d20f84..ecc5d5459350d401ed1a4bf01199ad00338954ae 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -32,7 +32,7 @@ index 9204b119a038868e63a345f2a8cd175cba96b090..2570fb81e94f7169a54a8e0b2dce5a2c return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f7bd53e548ea2f57f697b143b58b6d2e21371366..b4c00ea434f73ff59d6171fd010d4e76d6dc08dd 100644 +index 907ed5f818545afbec981c97b565556850a30571..30a872c7e0710506899eb2432d7271396f34c677 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -63,7 +63,7 @@ index f7bd53e548ea2f57f697b143b58b6d2e21371366..b4c00ea434f73ff59d6171fd010d4e76 } // CraftBukkit start -@@ -3577,6 +3584,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3574,6 +3581,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -277,7 +277,7 @@ index 030b81dd8c52ddb300e73d792f9c4cea4e8a8d46..1d4a292a37069408420ca90b1c278422 // Paper end private static enum AttackPhase { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 63c0f86469182de482b04a27741e4b6fe29f0e79..15baaf9c358019b1ce2152086e8d16591eec7dbb 100644 +index 5a3d0ba97247e3867cc85aef3f6ad30d5d1548e1..8696b3a0ff7f0d55a9cda104bc6ecc3a63d787db 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -96,11 +96,12 @@ public class Zombie extends Monster { @@ -353,7 +353,7 @@ index 63c0f86469182de482b04a27741e4b6fe29f0e79..15baaf9c358019b1ce2152086e8d1659 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index d1a550aa5905d26e5b0f534338b3f30f1f2db67c..eb409ecf5bf06692038e9fe84af986092a7d7837 100644 +index 2406c33799ce8e00484c63b87c0c2c6ded9bf25b..38ff078ae636218d157d4c885fca19be5666b52a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -369,7 +369,7 @@ index d1a550aa5905d26e5b0f534338b3f30f1f2db67c..eb409ecf5bf06692038e9fe84af98609 /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 07cbcb7f5a77b75ba10ccb470502c73fab17784e..42b336a96e5c786b95356200da7d02bfd8b584dc 100644 +index a6ab50d4a368b6d7eaaefe790f351fbc43fd7626..7feff1402b3034d0f387440f28ee7a71e4ff4acf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1116,5 +1116,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0197-Add-compass-command.patch b/patches/server/0197-Add-compass-command.patch index d2f0e84a5..bd4a9e773 100644 --- a/patches/server/0197-Add-compass-command.patch +++ b/patches/server/0197-Add-compass-command.patch @@ -17,7 +17,7 @@ index e254f7c498c5a1608afe130b2dd4d3d037069f25..af712f089e7919fa0bd3946866fd3486 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4cc1604114ce283a70fb8faf89ac2b3979b06b52..f00c8b834db7ff9c92d878560d83db91b76c82fe 100644 +index 6dbc75a216b52cf1c2d398e781893a61d95fb7da..39e64f3fcce79897d18aa2cf4c1224a994839cad 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -276,6 +276,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index 4cc1604114ce283a70fb8faf89ac2b3979b06b52..f00c8b834db7ff9c92d878560d83db91 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2799,5 +2802,13 @@ public class ServerPlayer extends Player { +@@ -2802,5 +2805,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0198-Toggle-for-kinetic-damage.patch b/patches/server/0198-Toggle-for-kinetic-damage.patch index 68d9afc62..426de90fc 100644 --- a/patches/server/0198-Toggle-for-kinetic-damage.patch +++ b/patches/server/0198-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b4c00ea434f73ff59d6171fd010d4e76d6dc08dd..cf997f8811aacd32946d81de87b1683910374e42 100644 +index 30a872c7e0710506899eb2432d7271396f34c677..7de9e8611ff12bf6955db41baeb4c2080bc725bb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2929,6 +2929,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2926,6 +2926,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0227-Potion-NamespacedKey.patch b/patches/server/0227-Potion-NamespacedKey.patch index c565ac2a7..4af9f074a 100644 --- a/patches/server/0227-Potion-NamespacedKey.patch +++ b/patches/server/0227-Potion-NamespacedKey.patch @@ -160,36 +160,18 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index a86ce1e672df969b28293e7da4c6f4414d8d80a7..bc2a7120a7758097080b39f2aa37828d98b84fd5 100644 +index 7feff1402b3034d0f387440f28ee7a71e4ff4acf..3741993bfdf6b356619d04296c16cf2d2018e091 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @Override public boolean addPotionEffect(PotionEffect effect, boolean force) { org.spigotmc.AsyncCatcher.catchOp("effect add"); // Paper -- this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon +- this.getHandle().addEffect(CraftPotionUtil.fromBukkit(effect), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon + this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()), EntityPotionEffectEvent.Cause.PLUGIN); // Purpur - add key // Paper - Don't ignore icon return true; } -@@ -486,7 +486,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - @Override - public PotionEffect getPotionEffect(PotionEffectType type) { - MobEffectInstance handle = this.getHandle().getEffect(CraftPotionEffectType.bukkitToMinecraft(type)); -- return (handle == null) ? null : new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible()); -+ return (handle == null) ? null : new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible(), handle.getKey()); // Purpur - add key - } - - @Override -@@ -498,7 +498,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - public Collection getActivePotionEffects() { - List effects = new ArrayList(); - for (MobEffectInstance handle : this.getHandle().activeEffects.values()) { -- effects.add(new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible())); -+ effects.add(new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible(), handle.getKey())); // Purpur - add key - } - return effects; - } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java @@ -239,15 +221,15 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445 } this.customEffects.set(index, effect); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index e29679a92da5ec05e122bb972a5ee469059a7a0a..70a3463eb6c93b662c5858016f934aa9ab267397 100644 +index 844fb8c662a409670f631228f687d85c5436d3dd..2bfa5908f1848702ceb42da7576a609d0928eddd 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java @@ -73,7 +73,7 @@ public class CraftPotionUtil { public static MobEffectInstance fromBukkit(PotionEffect effect) { MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); -- return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); -+ return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.getKey()); // Purpur - add key +- return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()); // Paper ++ return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()); // Paper // Purpur - add key } public static PotionEffect toBukkit(MobEffectInstance effect) { @@ -255,8 +237,8 @@ index e29679a92da5ec05e122bb972a5ee469059a7a0a..70a3463eb6c93b662c5858016f934aa9 int duration = effect.getDuration(); boolean ambient = effect.isAmbient(); boolean particles = effect.isVisible(); -- return new PotionEffect(type, duration, amp, ambient, particles); -+ return new PotionEffect(type, duration, amp, ambient, particles, effect.getKey()); // Purpur - add key +- return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon()); // Paper ++ return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.getKey()); // Paper // Purpur - add key } public static boolean equals(MobEffect mobEffect, PotionEffectType type) { diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index 1dbb39df8..f43de5adf 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -778,7 +778,7 @@ index d5837c675e033c7277656e026cb98d55b6668038..c3239a2823d152b8de1f760216323936 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9e561a8e59666f10468ab8fd5a533f63bdc6cf2a..47527f6145a71d56c428b012033bb8b6b086054f 100644 +index a5ad9a5bf708f6ed9844c5ac42f07a34f0833e30..38eed0f72cb6247418944fdd0770e4f9bda38f9e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1237,7 +1237,7 @@ public class ServerPlayer extends Player { @@ -1163,7 +1163,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd13ec68a7 100644 +index 86ea1fe2fec0edcb0ccecb9ddcb296fdbf2c6d88..b42121391e8af3e90f7064bec1687afaf1b78454 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1184,7 +1184,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd } public boolean canSpawnSoulSpeedParticle() { -@@ -3162,10 +3162,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3159,10 +3159,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1198,7 +1198,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3177,7 +3177,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3174,7 +3174,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1207,7 +1207,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3467,19 +3467,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3464,19 +3464,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1232,7 +1232,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3506,8 +3506,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3503,8 +3503,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1243,7 +1243,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3534,8 +3534,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3531,8 +3531,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1254,7 +1254,7 @@ index fe35e4d86f7ce0ac12deb50e6d189a27a29c9f47..afa08d6e886ae9056c3ff88bc3b275cd if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3552,15 +3552,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3549,15 +3549,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index a8a269f56..9ae48d7ab 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -99,10 +99,10 @@ index 0afa519068a9d7bf5b16e201d9d768254094dc4f..3b153d96b08c5591b4a322a2bbd59862 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e6bfb8d49d2c83247660147dc7015ce6855ba516..4f1d12dabcbc121ce0755e3226435c7ffba9c078 100644 +index 405894a48f4fdf48b6c887ffc5b01e205a424857..9f73cda9dc6531ce7b6276ca2399fb706a06e6af 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3337,5 +3337,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3349,5 +3349,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0274-Add-death-screen-API.patch b/patches/server/0274-Add-death-screen-API.patch index 03e192673..c52dd489a 100644 --- a/patches/server/0274-Add-death-screen-API.patch +++ b/patches/server/0274-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4f1d12dabcbc121ce0755e3226435c7ffba9c078..b9966e639b671aa97cdbfc1da49a172be99ded1e 100644 +index 9f73cda9dc6531ce7b6276ca2399fb706a06e6af..afb0229d0d895f20dcc8475430118ec83e0f12e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3375,5 +3375,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3387,5 +3387,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0276-Implement-ram-and-rambar-commands.patch b/patches/server/0276-Implement-ram-and-rambar-commands.patch index 8b5412ec9..f86418eb3 100644 --- a/patches/server/0276-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0276-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 41bd87096ab195c56695c5c5e46dc3c75e5a9078..6b5bcc87e96619877737fc8200075bdb99d59230 100644 +index 38eed0f72cb6247418944fdd0770e4f9bda38f9e..a19c2d10385d3bc81061f188e2874fe118ddd425 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -277,6 +277,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 41bd87096ab195c56695c5c5e46dc3c75e5a9078..6b5bcc87e96619877737fc8200075bdb nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2811,5 +2814,13 @@ public class ServerPlayer extends Player { +@@ -2814,5 +2817,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } From 8a1e23dae6f7f8f28e0fd9277aaf169c05d1724a Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 3 Nov 2023 00:14:39 -0700 Subject: [PATCH 005/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0b21890 Fix villager infection chance not being handled properly (#9897) PaperMC/Paper@8493340 Add another slot sanity check --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index e4f22f48a..99e27cc26 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 1865625d958b94d82e0bd601d6d860318980c4c4 +paperCommit = 8493340be4fa69fa9369719272e5dff1b7a2f455 org.gradle.caching = true org.gradle.parallel = true From 42d02904e4aeec9e783b18bae6dd79bf83d1307c Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 4 Nov 2023 20:16:48 -0700 Subject: [PATCH 006/148] return empty itemstack to PlayerBookTooLargeEvent if book is not being held --- patches/server/0119-PlayerBookTooLargeEvent.patch | 11 +++++++---- patches/server/0132-Dont-run-with-scissors.patch | 6 +++--- ...213-Shift-right-click-to-use-exp-for-mending.patch | 6 +++--- ...Option-to-disable-kick-for-out-of-order-chat.patch | 4 ++-- patches/server/0266-Remove-Timings.patch | 10 +++++----- ...ore-logger-output-for-invalid-movement-kicks.patch | 4 ++-- .../server/0277-Add-item-packet-serialize-event.patch | 6 +++--- 7 files changed, 25 insertions(+), 22 deletions(-) diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0119-PlayerBookTooLargeEvent.patch index 6e7540df2..b19c81d67 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0119-PlayerBookTooLargeEvent.patch @@ -5,14 +5,17 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 14f6abe6e7eeaf5d3053bf3ecb540b898813c267..65c9e83063c84ccff38d52049160bb093a7a50e7 100644 +index d7230d7a0ab8088bfa77d07c2b8cff66953409a9..f221f14c345ec81bc422e0f50d940eb43cdbcc73 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1148,10 +1148,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1148,10 +1148,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; -+ ItemStack itemstack = this.player.getInventory().getItem(packet.getSlot()); // Purpur ++ // Purpur start ++ int slot = packet.getSlot(); ++ ItemStack itemstack = Inventory.isHotbarSlot(slot) || slot == Inventory.SLOT_OFFHAND ? this.player.getInventory().getItem(slot) : ItemStack.EMPTY; ++ // Purpur end for (String testString : pageList) { int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; if (byteLength > 256 * 4) { @@ -21,7 +24,7 @@ index 14f6abe6e7eeaf5d3053bf3ecb540b898813c267..65c9e83063c84ccff38d52049160bb09 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1175,6 +1177,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1175,6 +1180,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index d8ca75471..06a56c76f 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 65c9e83063c84ccff38d52049160bb093a7a50e7..90561a2fb7c353bedb62b200689d8c73b3534033 100644 +index f221f14c345ec81bc422e0f50d940eb43cdbcc73..a84ec27e5fbbb270c4cb3ed814518272591ae613 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1613,6 +1613,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 65c9e83063c84ccff38d52049160bb093a7a50e7..90561a2fb7c353bedb62b200689d8c73 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1661,6 +1668,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1664,6 +1671,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch index 3e03aa2e6..6f8cbbf42 100644 --- a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17160db723 100644 +index 0520d66d9de942f12f61dd1f735f8c19d5d62f07..818b360c205c7667946f49e324daa961b3b446cb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -518,6 +518,7 @@ public class ServerPlayerGameMode { @@ -36,10 +36,10 @@ index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 90561a2fb7c353bedb62b200689d8c73b3534033..9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc 100644 +index a84ec27e5fbbb270c4cb3ed814518272591ae613..ccaee317c02bba549787dbcfa558763d67eab1d2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2020,6 +2020,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2023,6 +2023,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch index 0bd304798..eb4671ead 100644 --- a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc..018a3597c7132ba1f5972fef74b6a32837a31cb3 100644 +index ccaee317c02bba549787dbcfa558763d67eab1d2..82a536db73221dc366a06818e66ce15f23536cde 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2338,7 +2338,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2341,7 +2341,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index 3c1f2bf92..f12ddda8b 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -606,10 +606,10 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5bb234edb 100644 +index 82a536db73221dc366a06818e66ce15f23536cde..314fd1bfe080a1298a72ca063da510d22c621ed6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2451,7 +2451,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -618,7 +618,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2458,7 +2458,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2461,7 +2461,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -627,7 +627,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 return; } -@@ -2471,7 +2471,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2474,7 +2474,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -637,7 +637,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 11b825f3dda93005e4b6fd4a5f36935215daf76a..d83f360d5f28f39fffca2949c5dbc114c04e7629 100644 +index 5c90dbdbaa4655458081fea0343a48674cfd3a55..50720000069a4914c11ef5c402a39c469966196f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1249,7 +1249,7 @@ public abstract class PlayerList { diff --git a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch index 720b95303..38462fda1 100644 --- a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50..165623f5abc237e63b236489af6375bb43daeaca 100644 +index 314fd1bfe080a1298a72ca063da510d22c621ed6..a086680bde989523dbaa52ef7c403ad6520ced98 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index 0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50..165623f5abc237e63b236489af6375bb return; } -@@ -1324,8 +1325,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1327,8 +1328,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0277-Add-item-packet-serialize-event.patch b/patches/server/0277-Add-item-packet-serialize-event.patch index af1c75a4d..da57a8d69 100644 --- a/patches/server/0277-Add-item-packet-serialize-event.patch +++ b/patches/server/0277-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e2285 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 306195a8a57dc62379ffd856b214a651fd60e483..bc0dfdad161936d1881066f61de02e6c9a7ed8a7 100644 +index 926ba816e7bccec0d1b34c2f8fc3300be84df4c2..b61c4d1ebb9c15a7ecd7bec5eb864851c053fb7e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1549,6 +1549,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Date: Sat, 4 Nov 2023 20:29:02 -0700 Subject: [PATCH 007/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@487109f Readd 0414 use distance map to optimise entity tracker (#9868) PaperMC/Paper@230682d Add raw iron & raw copper blocks to anti xray defaults (#7622) PaperMC/Paper@44057da Remove duplicate water-sensitivity damage for unaware mobs (#9908) PaperMC/Paper@f78d7ce Remove "fix-curing-zombie-villager-discount" exploit option (#9895) PaperMC/Paper@aa6c4c1 Include packet class name in packet encoding error messages (#9907) PaperMC/Paper@6592fed Use a server impl for hopper event to track get/setItem calls (#9905) PaperMC/Paper@bffb08c Deprecate Player#boostElytra (#9899) PaperMC/Paper@43c3432 Add entity API for getting the combined gene of a Panda (#9891) PaperMC/Paper@15a0de2 Make Team extend ForwardingAudience (#9852) PaperMC/Paper@0cdce89 Fix a bunch of stuff with player spawn locations (#9887) PaperMC/Paper@8a3980c Add API to get the collision shape of a block before it's placed (#9821) PaperMC/Paper@23860da Add predicate for block when raytracing (#9691) PaperMC/Paper@75d04e9 Broadcast take item packets with collector as source (#9884) PaperMC/Paper@2553f30 fix secure profile with proxy online mode (#9700) PaperMC/Paper@e289acc Add more API to LingeringPotionSplashEvent (#9901) PaperMC/Paper@8cafc07 Added missing enchantables to material tags (#9888) --- gradle.properties | 2 +- patches/api/0005-Purpur-client-support.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- .../api/0041-Add-local-difficulty-api.patch | 4 +- patches/api/0044-Debug-Marker-API.patch | 8 +-- patches/api/0045-Add-death-screen-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 38 ++++++------- .../server/0005-Purpur-client-support.patch | 4 +- .../0007-Component-related-conveniences.patch | 10 ++-- patches/server/0008-Ridables.patch | 24 ++++---- ...-Configurable-entity-base-attributes.patch | 24 ++++---- .../0010-Barrels-and-enderchests-6-rows.patch | 8 +-- patches/server/0012-AFK-API.patch | 6 +- ...option-to-set-armorstand-step-height.patch | 6 +- .../0045-Add-permission-for-F3-N-debug.patch | 4 +- .../0050-Allow-leashing-villagers.patch | 8 +-- ...urable-void-damage-height-and-damage.patch | 6 +- .../0055-Add-canSaveToDisk-to-Entity.patch | 4 +- ...ispenser-curse-of-binding-protection.patch | 4 +- patches/server/0072-Entity-lifespan.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +- ...07-Changeable-Mob-Left-Handed-Chance.patch | 4 +- patches/server/0117-Implement-TPSBar.patch | 8 +-- ...0124-Add-EntityTeleportHinderedEvent.patch | 6 +- ...26-Movement-options-for-armor-stands.patch | 6 +- .../server/0127-Fix-stuck-in-portals.patch | 6 +- patches/server/0147-Drowning-Settings.patch | 6 +- ...174-API-for-any-mob-to-burn-daylight.patch | 12 ++-- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...layer-join-full-server-by-permission.patch | 4 +- .../0209-Extended-OfflinePlayer-API.patch | 6 +- ...or-beds-to-explode-on-villager-sleep.patch | 4 +- .../0262-Add-local-difficulty-api.patch | 4 +- ...0263-Add-toggle-for-RNG-manipulation.patch | 4 +- patches/server/0266-Remove-Timings.patch | 55 ++++++++++++++----- .../server/0267-Remove-Mojang-Profiler.patch | 38 ++++++------- patches/server/0270-Debug-Marker-API.patch | 8 +-- .../server/0274-Add-death-screen-API.patch | 4 +- ...0277-Add-item-packet-serialize-event.patch | 4 +- patches/server/0286-Fire-Immunity-API.patch | 14 ++--- ...leport-to-spawn-on-nether-ceiling-da.patch | 4 +- 42 files changed, 209 insertions(+), 180 deletions(-) diff --git a/gradle.properties b/gradle.properties index 99e27cc26..f0b656853 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 8493340be4fa69fa9369719272e5dff1b7a2f455 +paperCommit = 8cafc0729775aa8321b68e10de6a3953333b1392 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 3255be384..9150bb9f2 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 2996db88343060624d6aab7889290ae74a973fe8..d470c0772c054f26de1da5c10b887f29e62b0eb7 100644 +index 087898a50909a40aabec09f1e52cefed6565ba4c..45aac54f186a64b3c0845e97c97226d955f9f6d2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3301,4 +3301,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3310,4 +3310,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index d1ffe45ca..f68a643df 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index d470c0772c054f26de1da5c10b887f29e62b0eb7..eb4fc096b9b96726b9c324029391baa585eca43b 100644 +index 45aac54f186a64b3c0845e97c97226d955f9f6d2..f1485aedb9d581bca9daa7bf94876a35e7f055bc 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3309,5 +3309,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3318,5 +3318,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0041-Add-local-difficulty-api.patch b/patches/api/0041-Add-local-difficulty-api.patch index 245c3e879..dbfad0156 100644 --- a/patches/api/0041-Add-local-difficulty-api.patch +++ b/patches/api/0041-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 91eb95b04094394e8dc1e3a3343efc63690c87e4..381cd0296ece416876e136d2ca710c18c3e8bea0 100644 +index 17d404d6d1a5b46b58d612fca38f17e71adee92e..791ab7aa9cb36715a323e8b920bb67f30accf738 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4072,6 +4072,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4160,6 +4160,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index a53ce8b99..a97b3c453 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index 3bc9fa8b68b284516ddbf0ace0c1dc52768307cb..aaef58468a3c31f35e5067ed4263e9dd // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 381cd0296ece416876e136d2ca710c18c3e8bea0..d8ef44761148f928a671ceba74a5d1cb87af81d9 100644 +index 791ab7aa9cb36715a323e8b920bb67f30accf738..b012cc979e38ef1ef1ec61e71a887b91eb3de223 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4080,6 +4080,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4168,6 +4168,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); @@ -260,10 +260,10 @@ index 381cd0296ece416876e136d2ca710c18c3e8bea0..d8ef44761148f928a671ceba74a5d1cb /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index eb4fc096b9b96726b9c324029391baa585eca43b..ab74fa8ef7bb273b3b2abc519ba4957873826037 100644 +index f1485aedb9d581bca9daa7bf94876a35e7f055bc..23efdf3729f26554a1045e4d098fece5fc97c7ba 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3329,5 +3329,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3338,5 +3338,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index a0b10e02b..6f8b16e03 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index ab74fa8ef7bb273b3b2abc519ba4957873826037..ccbde7687d67dec442bed0df72af1f36cc26d179 100644 +index 23efdf3729f26554a1045e4d098fece5fc97c7ba..16b6d57fe359b5ccd4abce24e080fd09c31757dc 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3399,5 +3399,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3408,5 +3408,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 27d481d54..870c24721 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1464,7 +1464,7 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index d02546b18cb689724887b4e85e8d32a18828a4ad..91eaff58bb422ba188e6cfaa9c20b45bec211edd 100644 +index 8240bb085b619f257f8c0a25775e0b15068e440f..6d9668d993bb922ae9d2b76a4d766903cc3f98a4 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -213,7 +213,7 @@ public final class MCUtil { @@ -1507,7 +1507,7 @@ index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..58d076e2a8fa1cf56c4c8d15a502e85f } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 2b5d82fbf4e7ec32d0c53dd3e8207b1dba708bbd..462c4eb3c06779f86f66778e9578d3d8f06c3294 100644 +index cf605aa56adf7f80d3b409f60a92a5ca7ae8fd07..f623b5152c398ea460516596ad70fdb1f8a987ca 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -221,6 +221,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -1528,10 +1528,10 @@ index 2b5d82fbf4e7ec32d0c53dd3e8207b1dba708bbd..462c4eb3c06779f86f66778e9578d3d8 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 6a49a36f64521f0bddcf21585ee507040119fd6d..dba021ae5d71bc44e4aee83d6c3910a81cc8ad83 100644 +index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6ac7ee741 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -206,7 +206,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -244,7 +244,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end // Paper start - optimise chunk tick iteration public final it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); @@ -1540,7 +1540,7 @@ index 6a49a36f64521f0bddcf21585ee507040119fd6d..dba021ae5d71bc44e4aee83d6c3910a8 // Paper end - optimise chunk tick iteration public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { -@@ -1330,8 +1330,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1464,8 +1464,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -1569,7 +1569,7 @@ index 6a49a36f64521f0bddcf21585ee507040119fd6d..dba021ae5d71bc44e4aee83d6c3910a8 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1343,6 +1363,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1477,6 +1497,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } @@ -1782,7 +1782,7 @@ index 584a768f2ce1c98a1de7749060c47f21721f9055..c4a22fab14c74f268e8452c398add432 if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8bca5ba75977c0a61197eb47c94f0456d66b29a4..dcc26435a7d3eb83f92ec165cf16486a06397576 100644 +index 33be0db006cca66f38f2105924466b0210139848..2061f374a2b40ff5ba3e3bdb6ef02bbec3be9748 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1118,6 +1118,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1914,10 +1914,10 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de9378884df2fb20 100644 +index 1e05fca2a2ba6e2c0b641b6e27585520889cd8a6..e78bc576497723ed727c0f4932e88bc931834ea8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -305,7 +305,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public double yo; public double zo; private Vec3 position; @@ -1926,7 +1926,7 @@ index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de937888 private ChunkPos chunkPosition; private Vec3 deltaMovement; private float yRot; -@@ -433,6 +433,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -434,6 +434,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.originWorld; } // Paper end @@ -1939,7 +1939,7 @@ index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de937888 public float getBukkitYaw() { return this.yRot; } -@@ -765,6 +771,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -798,6 +804,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public void tick() { @@ -1952,7 +1952,7 @@ index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de937888 this.baseTick(); } -@@ -4324,16 +4336,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4336,16 +4348,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1978,7 +1978,7 @@ index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de937888 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4341,14 +4355,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4353,14 +4367,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2046,7 +2046,7 @@ index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de937888 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4370,9 +4431,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4382,9 +4443,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end } } @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 675d695989cef5d8fc2e85673efbb57ec1bb38bd..26b57d004cf9b43967dce65c75946895fb703b84 100644 +index a76eb3d051db0229ed088b71c92ff3f131449007..d6d86597fbca937a32e74ecb913f569f9740e7d8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2135,7 +2135,7 @@ index 675d695989cef5d8fc2e85673efbb57ec1bb38bd..26b57d004cf9b43967dce65c75946895 if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index d28c477171c1b6888a45175075017d960464b5cd..4cb836dfa7cbd2e634d4a3a567da0305aac0da4d 100644 +index 956d05e2ae59978ea9623ca0e167c0afe0b87306..944c22ea172796492a683d2f2bddfb0938d7a8c9 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -220,14 +220,16 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -2157,7 +2157,7 @@ index d28c477171c1b6888a45175075017d960464b5cd..4cb836dfa7cbd2e634d4a3a567da0305 this.targetSelector.tick(); } } -@@ -913,16 +915,20 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -911,16 +913,20 @@ public abstract class Mob extends LivingEntity implements Targeting { if (i % 2 != 0 && this.tickCount > 1) { this.level().getProfiler().push("targetSelector"); @@ -2482,7 +2482,7 @@ index b2bc3a832c310448046ccde37a04918aa6d63197..5e43912708f9074dee1bb351efa737a7 this.level().getProfiler().pop(); super.customServerAiStep(); 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 f555e29c7f9ea4ddb243a018bdc93d2bf1950c3c..bbcc0356b4c0470502e893cf2dc2f16936a88bc4 100644 +index cbe2a37f74f4fb2abd0b3297699e54335aaed64f..2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -2881,7 +2881,7 @@ index a71414397bd45ee7bcacfeef0041d80dfa25f114..d66806565770cb03a21794f99e5c4b0f @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 1d9b23c6e458caddc2c738164e6c079cd85d3ce9..1cfacc7dfa4a761c4a4fb28f9bb02e95bace32f4 100644 +index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..1d13fabb3f34023b4fbb1be9ad02ebc606645531 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -47,7 +47,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index 70cb7aa8d..d874dd4a2 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -43,10 +43,10 @@ index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b6 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4f237880cf53ec2eb4e7c93dccc168bbb682f473..bb4bb551992c03486c7e1dae7907c1c3f9b35e19 100644 +index 00bae5df87bcc1c75d4e2f430241579d3be82c11..cbde98589bc5e8ac10c0dc90b142644bf6279122 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3297,4 +3297,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3287,4 +3287,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 97d3e4a1c..38bd23f47 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a..75faac7c8009672c733033c5aabb4e1974ce5790 100644 +index e7452b7380511e27c3fdb9172ea7273b24fbdab7..85331b9b9edf4af02029333a628971fcf959090d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1784,6 +1784,26 @@ public class ServerPlayer extends Player { @@ -36,10 +36,10 @@ index 5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a..75faac7c8009672c733033c5aabb4e19 public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 48d1444fbad1c57738807d0128b94160a5a17a4d..09b111dd0189b8764569e24fb6de862b1bb3bc89 100644 +index 33abcf12b4426572b74ca4c813e4392c823494bc..cd6bfaa8dc06c05ab25cbded645a1dbca725838c 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1039,6 +1039,20 @@ public abstract class PlayerList { +@@ -1060,6 +1060,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 505ed0f8f933428192f5fc806ff52d84acea7f99..8bc26cc6af27ba4c13940d61154786d47cb5aaf3 100644 +index e78bc576497723ed727c0f4932e88bc931834ea8..3dde7e4a063863d6b785f41aa4f29590ed8d9a9b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4066,6 +4066,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4078,6 +4078,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index ea74bed8a..0ef0684ee 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -66,7 +66,7 @@ index 85331b9b9edf4af02029333a628971fcf959090d..03ef82e835a82d6f42376881a3e5c83d public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index dcc26435a7d3eb83f92ec165cf16486a06397576..26b4307a6a693a1b99951d1270264baa86868630 100644 +index 2061f374a2b40ff5ba3e3bdb6ef02bbec3be9748..4b9fde27189a1436e4faea35f3f0f8c276c12e9c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2713,6 +2713,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -79,10 +79,10 @@ index dcc26435a7d3eb83f92ec165cf16486a06397576..26b4307a6a693a1b99951d1270264baa if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed4f1dd056 100644 +index 3dde7e4a063863d6b785f41aa4f29590ed8d9a9b..de2a1621b2d671de8f1c10463661cb361cd9e6b4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -375,7 +375,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2946,6 +2946,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2958,6 +2958,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2986,6 +2993,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2998,6 +3005,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -120,7 +120,7 @@ index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4914,4 +4929,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4926,4 +4941,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 26b57d004cf9b43967dce65c75946895fb703b84..e73750dd8e2e444ce6e21211dbf93d857b457a96 100644 +index d6d86597fbca937a32e74ecb913f569f9740e7d8..797ef036c3fb7a21fb3a2fbc6a7e307594ea1e11 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -269,7 +269,7 @@ index 26b57d004cf9b43967dce65c75946895fb703b84..e73750dd8e2e444ce6e21211dbf93d85 // Paper end if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4cb836dfa7cbd2e634d4a3a567da0305aac0da4d..785421bc26d86c91983ab501fbc7484bbb389112 100644 +index 944c22ea172796492a683d2f2bddfb0938d7a8c9..050bb38f212fd2ec9b82ac5955496415474beb3b 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -147,8 +147,8 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -283,7 +283,7 @@ index 4cb836dfa7cbd2e634d4a3a567da0305aac0da4d..785421bc26d86c91983ab501fbc7484b this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1391,7 +1391,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1389,7 +1389,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -292,7 +292,7 @@ index 4cb836dfa7cbd2e634d4a3a567da0305aac0da4d..785421bc26d86c91983ab501fbc7484b } public boolean isWithinRestriction() { -@@ -1775,4 +1775,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1773,4 +1773,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -4758,7 +4758,7 @@ index 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86d this.level().getProfiler().pop(); this.updateActivity(); 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 3a6a2c8fc6b679619e2c12951dbe987414b4a4d2..27605b0ab3ab61f0e81e969cd4fa5c667edfbc74 100644 +index 5fdad1600cc7a7c22d1d9a58b6b2dda605521b97..9f58059800ea9fa5e62bf801c60ec8255ab9fc87 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -107,11 +107,30 @@ public class Zombie extends Monster { @@ -5019,7 +5019,7 @@ index 5e43912708f9074dee1bb351efa737a7e6796fc3..250af1ce7a93c2d2897f35c68fae319c public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { 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 bbcc0356b4c0470502e893cf2dc2f16936a88bc4..f7b81f14cd069da83c25ca6b063289c0fad07952 100644 +index 2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f..b6665acd9d9c799eedfb246354d2a74ba65391f3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -157,6 +157,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 9af1d204d..6600168a5 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5eb10b5f75b55f66a002745d016b88e0366d1301..b4edc2ab9d831c3c81677544cbd1cd7369591ff5 100644 +index de2a1621b2d671de8f1c10463661cb361cd9e6b4..120377f090669ef06ad6d53fa55facfb9e1e800a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -155,7 +155,7 @@ import org.bukkit.plugin.PluginManager; +@@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -34,7 +34,7 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cc82a506e0da0bf4318a37326924d71ca3340d5e..7471edf871522543cb49afef63d2c539b7e871a3 100644 +index 797ef036c3fb7a21fb3a2fbc6a7e307594ea1e11..c23bea8c82c3f4670ce736cb1375e1adb8aa7a05 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -158,7 +158,7 @@ index b0cff23aa6f841ad291437964ea5bebb6395de84..f440eabffb1abe4c7370bf7badf6137a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 3dab78e2f39855f71bb7294521be71b3faa59b81..89e3dbfddc739f97fdb6ec9a5714530f03cc7092 100644 +index 3f81b9d3c0758d20b3f9421a6bf41599e107b5e1..3db4ded84b8219262b24152f8d29576cdc660c76 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -158,6 +158,11 @@ public class Dolphin extends WaterAnimal { @@ -174,7 +174,7 @@ index 3dab78e2f39855f71bb7294521be71b3faa59b81..89e3dbfddc739f97fdb6ec9a5714530f @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 7d692f61ed4c6cc8e6b94eda4f48e9cb6baa0ae2..5a7f4c0565b2d8f95930b39e1aacd9904e382736 100644 +index b5f1d79787a7dbc8fddaa47fdeec1b224b409d19..f24434f577d44cef0816ebbdc88de37f449b8e13 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -182,6 +182,11 @@ public class Fox extends Animal implements VariantHolder { @@ -459,7 +459,7 @@ index 2efa2e19485f9d959a55115ab62f985454689379..eecdb1f1d49951cb8a294d176afd12c6 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 4dfe6a909ac3d553bd1cd4cfc131ac8bfb5a0b02..882c8fe0d9dc2e34eed2f1b11bb2c1b4d72319d2 100644 +index d1dd2cda473bb2294dc10c66c13eac8591ea4d5b..5cd79df01d4dbe7a1af530c502a78e48dcaffb7e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -115,6 +115,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 7be0c7776608582adf556b36dcfe289465490ecd..56f9d91ba48c501fbcdbb959f683ce8728a36503 100644 +index 9f58059800ea9fa5e62bf801c60ec8255ab9fc87..3948e9e56a260ee831fa17b0a4d4240a0bc8d26d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -124,6 +124,11 @@ public class Zombie extends Monster { @@ -1378,7 +1378,7 @@ index 7be0c7776608582adf556b36dcfe289465490ecd..56f9d91ba48c501fbcdbb959f683ce87 @Override 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 be1234f1c087b3140c79278e7d7e7c1394352cc8..a205c668d0d7b428622fbcaa1598f01c685b516e 100644 +index 3396acd9d361e05b8d7696d823c36c4fda945a23..6c96ca4bb3f94aaeaff87ae44500e87516fbf54f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -99,6 +99,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1472,7 +1472,7 @@ index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913f return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index f7b81f14cd069da83c25ca6b063289c0fad07952..95df7d57c3aaa46f09f37996a89d88aa9e9383b4 100644 +index b6665acd9d9c799eedfb246354d2a74ba65391f3..75738c810990a544225ef5eb5b94779c746899eb 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -179,6 +179,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1488,7 +1488,7 @@ index f7b81f14cd069da83c25ca6b063289c0fad07952..95df7d57c3aaa46f09f37996a89d88aa public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 808bf21dc16b5007c49a56c6597fd66c3ec4992e..9178c018c8e008b46a978bb95c244abf986f93d9 100644 +index 2bed7b373813660139d2322dcd6b83f3015768f0..731bf43e2685554174d7ff295b5561ecf9dd70fa 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -87,6 +87,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0010-Barrels-and-enderchests-6-rows.patch index b85c594ef..bb6e8dc94 100644 --- a/patches/server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0010-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 09b111dd0189b8764569e24fb6de862b1bb3bc89..cf03faf3207f886b03b0e90ad6f4ce5310db428c 100644 +index cd6bfaa8dc06c05ab25cbded645a1dbca725838c..837ef9a66921f881c5c94aa5f28746d9494d4a98 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1164,6 +1164,27 @@ public abstract class PlayerList { +@@ -1185,6 +1185,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper @@ -37,7 +37,7 @@ index 09b111dd0189b8764569e24fb6de862b1bb3bc89..cf03faf3207f886b03b0e90ad6f4ce53 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 90d437ef429fa6eef620eb54fcb9512e46b19b15..ea475f6fff35e346ca153a385d6b20f90b5f4283 100644 +index 911a44ab096bf835709632921797a749ee0bc638..3b4d9069ce877eba1adc330154eec5c178d82256 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { @@ -205,7 +205,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 633e6f4922ccaf59979a22885162f42c65bf628a..15001e7c8eae3a89f9d8669be532d56b70d538ef 100644 +index b4bd318d61834d70d666577073f18e4c49ded113..a35f60b01b371673023bd23f47a8ddafd38787f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java @@ -181,8 +181,19 @@ public class CraftContainer extends AbstractContainerMenu { diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 1367f9678..5e4ad00c1 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index 03ef82e835a82d6f42376881a3e5c83d0ec158b2..15cfc439ea0e122729e383e86d7162cb return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 26b4307a6a693a1b99951d1270264baa86868630..852e6df80caf4daae01e8d599b1eb405b1ccf73f 100644 +index 4b9fde27189a1436e4faea35f3f0f8c276c12e9c..664f07e4a31b31d2535afe135f4035cd5bbcacac 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -323,6 +323,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bb4bb551992c03486c7e1dae7907c1c3f9b35e19..d8b0fedd627d4ad9f443b8bcfc063fc2157b96b8 100644 +index cbde98589bc5e8ac10c0dc90b142644bf6279122..2b335e9835e62109a9d3720cb1ab705666a2362d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -519,10 +519,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index bb4bb551992c03486c7e1dae7907c1c3f9b35e19..d8b0fedd627d4ad9f443b8bcfc063fc2 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3303,5 +3308,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3293,5 +3298,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch index 2e70c706f..703350712 100644 --- a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b4edc2ab9d831c3c81677544cbd1cd7369591ff5..a5f54e2c17f618b99c76281b45d005280e4e31f9 100644 +index 120377f090669ef06ad6d53fa55facfb9e1e800a..f05373bd8d1b2c92c83cacaa2fd6fa845fe23daf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -333,7 +333,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -334,7 +334,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public double xOld; public double yOld; public double zOld; @@ -18,7 +18,7 @@ index b4edc2ab9d831c3c81677544cbd1cd7369591ff5..a5f54e2c17f618b99c76281b45d00528 protected final RandomSource random; public int tickCount; diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 1c7702a5c888846f93f8f80d3b854a26c11499be..14424afdb708df7f93caf6df45412ec721b5e1dd 100644 +index 9dcf28bdcb5770a191e62353a60c953731671283..43e562d740b628d5abf961312ea5ce7a23e8ac56 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -690,6 +690,7 @@ public class ArmorStand extends LivingEntity { diff --git a/patches/server/0045-Add-permission-for-F3-N-debug.patch b/patches/server/0045-Add-permission-for-F3-N-debug.patch index d01f4d38b..d2c6881a2 100644 --- a/patches/server/0045-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0045-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cf03faf3207f886b03b0e90ad6f4ce5310db428c..1eafc1854d47002d683f625f4c164290eee59181 100644 +index 837ef9a66921f881c5c94aa5f28746d9494d4a98..d4d7493569ecf3eb9456b4005f269b94fe08941e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1156,6 +1156,7 @@ public abstract class PlayerList { +@@ -1177,6 +1177,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/server/0050-Allow-leashing-villagers.patch b/patches/server/0050-Allow-leashing-villagers.patch index d1d0542d9..72ff022a8 100644 --- a/patches/server/0050-Allow-leashing-villagers.patch +++ b/patches/server/0050-Allow-leashing-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 785421bc26d86c91983ab501fbc7484bbb389112..b6fd8797d791a60505f8389a38ef6626407a4dbf 100644 +index 050bb38f212fd2ec9b82ac5955496415474beb3b..67820c9a971d9c0c24b6d7e6d10dd0b761f24345 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1318,6 +1318,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1316,6 +1316,7 @@ public abstract class Mob extends LivingEntity implements Targeting { if (!this.isAlive()) { return InteractionResult.PASS; } else if (this.getLeashHolder() == player) { @@ -17,7 +17,7 @@ index 785421bc26d86c91983ab501fbc7484bbb389112..b6fd8797d791a60505f8389a38ef6626 // Paper start - drop leash variable org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index d92a151fa308dd9cbf49e4ab6c581feeb3080519..616a6c78a056839575b4dabfeebb7cb2dce25026 100644 +index 9e3079d1446f37a568614db200e88f508a960272..4dac757aec546c2128506ee899ee9517441595d1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -185,6 +185,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -33,7 +33,7 @@ index d92a151fa308dd9cbf49e4ab6c581feeb3080519..616a6c78a056839575b4dabfeebb7cb2 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index c1c41990bc53c822aa170e3d69924437f4a25115..31daa61db84fcb3cde7ec4b18b32aba350ab2cfb 100644 +index 64dd35573db3feae6507fc05086ed08c60f5ea01..ad7a32169b0decad1d3a2bd98e25b07731a33d03 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -92,6 +92,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index b723657a5..4059e1153 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-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 63d6fc245b38202674da4f7d15665b57d9c5ef3c..f93cf0029d51cf124bcbc4b4a8b5677978968dfd 100644 +index f05373bd8d1b2c92c83cacaa2fd6fa845fe23daf..1d5037594599392e133ca593f58f9d823725c9d6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -860,7 +860,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -893,7 +893,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,7 +18,7 @@ index 63d6fc245b38202674da4f7d15665b57d9c5ef3c..f93cf0029d51cf124bcbc4b4a8b56779 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index eaff62f5dee0423723c259328d6c0c2c8a7156ef..5b80d41b267488d632492239298c94ded9ac40bb 100644 +index 5e13bc95bab63dee2a4c622a53c9144a77a8ab11..ec2bb4ae5bbbf90624ebdd5a75298e3eb42a172c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2535,7 +2535,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch index f7ebcf7a3..3fe32f7c0 100644 --- a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ 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 790c6c677cd83bd4158e1567e51b7669fc219178..ea1ecc287a75860fd8275d604fb9b130d355894b 100644 +index 1d5037594599392e133ca593f58f9d823725c9d6..63609c4ff4695753b318e345b2ef9047e7cadf1c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -492,6 +492,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -493,6 +493,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } diff --git a/patches/server/0056-Dispenser-curse-of-binding-protection.patch b/patches/server/0056-Dispenser-curse-of-binding-protection.patch index a942f4635..d3ed9cb49 100644 --- a/patches/server/0056-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0056-Dispenser-curse-of-binding-protection.patch @@ -5,7 +5,7 @@ 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 b6fd8797d791a60505f8389a38ef6626407a4dbf..92e74dd04e715650b435537014bb89f15a112e19 100644 +index 67820c9a971d9c0c24b6d7e6d10dd0b761f24345..de635f425a69ac4f21a80a2c723adf0362501d1f 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -65,6 +65,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -16,7 +16,7 @@ index b6fd8797d791a60505f8389a38ef6626407a4dbf..92e74dd04e715650b435537014bb89f1 import net.minecraft.world.level.GameRules; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; -@@ -1176,6 +1177,12 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1174,6 +1175,12 @@ public abstract class Mob extends LivingEntity implements Targeting { } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index 85faf5c1c..23fe2d162 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-Entity-lifespan.patch @@ -5,7 +5,7 @@ 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 fb887cbbd5d5ca0a29bd31672b38a18db2f2e8db..14f6abe6e7eeaf5d3053bf3ecb540b898813c267 100644 +index b74c0ecdcfa41ba10f7514290ef470666f33ab18..11e6fa3e6e51c2da43ceb4a0fe865947b55e221c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2740,6 +2740,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -17,7 +17,7 @@ index fb887cbbd5d5ca0a29bd31672b38a18db2f2e8db..14f6abe6e7eeaf5d3053bf3ecb540b89 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 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951eeaa2b5ce 100644 +index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5607919ec 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -135,6 +135,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -85,7 +85,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e } @Override -@@ -1710,6 +1738,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1708,6 +1736,7 @@ public abstract class Mob extends LivingEntity implements Targeting { this.setLastHurtMob(target); } diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index f59c727ff..a1ad2b177 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 ea1ecc287a75860fd8275d604fb9b130d355894b..267e3ddaed711ee275bf64855c0382df81d1f12c 100644 +index 63609c4ff4695753b318e345b2ef9047e7cadf1c..940157724b87e0a501a6f52d78d4a170923fb027 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4368,6 +4368,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4380,6 +4380,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch index be3efe2f7..273e64e32 100644 --- a/patches/server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 267e3ddaed711ee275bf64855c0382df81d1f12c..f2b06c4930c39a3e47f0ea35dfa5997f21654674 100644 +index 940157724b87e0a501a6f52d78d4a170923fb027..95fecfaaffe6c7b6a46490518917285ea8551c05 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3087,7 +3087,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3099,7 +3099,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 267e3ddaed711ee275bf64855c0382df81d1f12c..f2b06c4930c39a3e47f0ea35dfa5997f if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3792,7 +3792,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3804,7 +3804,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { diff --git a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch index 81f8b8df1..a78775c65 100644 --- a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 3e954a04e3ccdfcd495d0c56535c951eeaa2b5ce..1ce3ba7f703b5627e2761865c0e133dbf5df8712 100644 +index 19688acdd615068b37b928c3608074c5607919ec..dd75a1115d02506f1e99688817cb724b22b3e696 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1305,7 +1305,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1303,7 +1303,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index 50efc714c..366800ba5 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -29,7 +29,7 @@ index cef1f7169880560a9c79667320e63d552fa4aa03..13b57942eb63b2a9460f96ec59bb9ba3 this.hasLoggedStop = true; // Paper if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a87d025a7ad0b7df16bea6fa4aeecae416551dde..dd27066b97e9b9ba34e94a60c5133fb5e433c433 100644 +index 6ea42811c1e7ae1b6bf17b7edad921861c7fa2e0..8b647e6f3dd576b1984ad099eb21912e0c193eb7 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -350,6 +350,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -83,10 +83,10 @@ index 8c709fdd4328e83e44bf976ff674db66b10a8ac2..51efe3a87ca54423e8bb8c23d226bf3e // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cdb09bc6a53f213b33d897fe7aa073f79235ccae..00ac2b2d0b64c7eabdee3bdc5137428cf22124a7 100644 +index d4d7493569ecf3eb9456b4005f269b94fe08941e..1774b424620863d2fd1f6353b3ce7e9b0fc0e132 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -467,6 +467,7 @@ public abstract class PlayerList { +@@ -488,6 +488,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end @@ -94,7 +94,7 @@ index cdb09bc6a53f213b33d897fe7aa073f79235ccae..00ac2b2d0b64c7eabdee3bdc5137428c // CraftBukkit - Moved from above, added world PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -580,6 +581,7 @@ public abstract class PlayerList { +@@ -601,6 +602,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch index df0ec7cfa..24b34df55 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55f blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 6092004f91e1a4a143df1a82bcad9c16760f5096..d1a550aa5905d26e5b0f534338b3f30f1f2db67c 100644 +index 822faeca49c02562640f135948fab75a0bc49f0a..2406c33799ce8e00484c63b87c0c2c6ded9bf25b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -600,6 +600,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,10 +89,10 @@ index 6092004f91e1a4a143df1a82bcad9c16760f5096..d1a550aa5905d26e5b0f534338b3f30f } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 12012dd42a9c1faffcad55c9786a9f99e426600a..4895293d3dfd294d278c79932d354bf9fe780361 100644 +index 2b335e9835e62109a9d3720cb1ab705666a2362d..d3719998ddd7f29abb7b9a59273ddfcc27ebe63f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1357,6 +1357,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1347,6 +1347,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch index 307a2e99a..7d43f24db 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0126-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f2b06c4930c39a3e47f0ea35dfa5997f21654674..b7a619f93c7d48633dffea58204e135547778ab3 100644 +index 95fecfaaffe6c7b6a46490518917285ea8551c05..bfd8eb90479bdb1cad6343c04995788b31b3e05c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1837,7 +1837,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1870,7 +1870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.isInWater() || flag; } @@ -30,7 +30,7 @@ index f2b06c4930c39a3e47f0ea35dfa5997f21654674..b7a619f93c7d48633dffea58204e1355 if (entity instanceof Boat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index a164e13ddfe64b212fc5937b455096287d3151d8..ba2fe129aaf25c54b624f282f8994c6a884abad8 100644 +index 3238e9e8bfff4dc33247d8bf29d408f262e4172e..aa2b21c2f96b096499cf9d8e077a0aed1ea6f654 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index e618f4796..897a9630d 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index baf508a942b02d94dfe2c1fffc3cde930a492367..4c68d45f481d97d9fba7ac2eee44ca9c9261591e 100644 +index 51efe3a87ca54423e8bb8c23d226bf3e23ac8862..6ecabc14a4f50086790536b28e68b6ea25b27495 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1268,6 +1268,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index baf508a942b02d94dfe2c1fffc3cde930a492367..4c68d45f481d97d9fba7ac2eee44ca9c // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b7a619f93c7d48633dffea58204e135547778ab3..c5b89e797f614bf388c7ec2ae3e6751180425ba2 100644 +index bfd8eb90479bdb1cad6343c04995788b31b3e05c..5790e3f1d5e2c43f401bfd93e85ddee799a6aad2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3084,12 +3084,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3096,12 +3096,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 97f2a4fb9..930b996d6 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c5b89e797f614bf388c7ec2ae3e6751180425ba2..9204b119a038868e63a345f2a8cd175cba96b090 100644 +index 5790e3f1d5e2c43f401bfd93e85ddee799a6aad2..cbb786b246847a9463f9f34a63aafa686f0db7fe 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3333,7 +3333,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3345,7 +3345,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index c5b89e797f614bf388c7ec2ae3e6751180425ba2..9204b119a038868e63a345f2a8cd175c public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b13757a20b04634c26d741e27df75be28089dc37..6f6f6610c27c738db440d7be747f0be2296f2815 100644 +index 9aac4f3b758665d27a02340f97a6b16378ba11bf..95daa04ba54b8a5e1de707ca31d40c60e4d039d7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch index d4fe07be5..ee76f4e7d 100644 --- a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 03b0c98e4e926f5cf630e0fddb2e51fc70d20f84..ecc5d5459350d401ed1a4bf01199ad00338954ae 100644 +index cbb786b246847a9463f9f34a63aafa686f0db7fe..6f56cbf6104303cb6ddfa59f41e37a64e3c18ae2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -497,6 +497,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return true; } @@ -32,7 +32,7 @@ index 03b0c98e4e926f5cf630e0fddb2e51fc70d20f84..ecc5d5459350d401ed1a4bf01199ad00 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 907ed5f818545afbec981c97b565556850a30571..30a872c7e0710506899eb2432d7271396f34c677 100644 +index 011914bdbf602fa5696d24d11e3207a9bc6a9ef2..d36b2343cb94d59a8e4fea0d8608a6973116d641 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -92,10 +92,10 @@ index 907ed5f818545afbec981c97b565556850a30571..30a872c7e0710506899eb2432d727139 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4454241862598048abd4e8bf321f9a066be15067..547279a379190c2339d6335e00faf7730be6d0f0 100644 +index 54d1e9c9d98bbf8f408c3c9906d76c662ab2c90e..3a86686789ca77301e43bb9810f9b2b311d7763d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1755,17 +1755,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1753,17 +1753,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { @@ -277,7 +277,7 @@ index 030b81dd8c52ddb300e73d792f9c4cea4e8a8d46..1d4a292a37069408420ca90b1c278422 // Paper end private static enum AttackPhase { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 5a3d0ba97247e3867cc85aef3f6ad30d5d1548e1..8696b3a0ff7f0d55a9cda104bc6ecc3a63d787db 100644 +index e118cfc34b05f6d4921a0903eca70be6b68bff4f..fab8e4ffa083e3d436fd4d6d19cf8ea8a7b5a6a6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -96,11 +96,12 @@ public class Zombie extends Monster { diff --git a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch index b12418646..b5f24f045 100644 --- a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2570fb81e94f7169a54a8e0b2dce5a2c24fcd00e..12f0da455f174c5a0652ac87f62c159808fbf7d3 100644 +index 6f56cbf6104303cb6ddfa59f41e37a64e3c18ae2..bf48e496f4988f45ea8c92eb45544f44753e5738 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3158,7 +3158,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3170,7 +3170,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); diff --git a/patches/server/0181-Allow-player-join-full-server-by-permission.patch b/patches/server/0181-Allow-player-join-full-server-by-permission.patch index 551d1a790..0ebff586b 100644 --- a/patches/server/0181-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0181-Allow-player-join-full-server-by-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 265889514d2959731440ec180f6e47b19bb83cfb..cf721106b861a8c166244efc2114e22d038aa3a7 100644 +index 1774b424620863d2fd1f6353b3ce7e9b0fc0e132..cdb5ebf7ed24cdf0ab8e06a92bc2dd21f85008d9 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -736,7 +736,7 @@ public abstract class PlayerList { +@@ -757,7 +757,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; diff --git a/patches/server/0209-Extended-OfflinePlayer-API.patch b/patches/server/0209-Extended-OfflinePlayer-API.patch index 04f2fece9..e2e766d64 100644 --- a/patches/server/0209-Extended-OfflinePlayer-API.patch +++ b/patches/server/0209-Extended-OfflinePlayer-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 03fc90a470c0f63d44161843cac88bea09166858..88640ac32d70ced6e8b1984663e1c492dd673cb5 100644 +index bb794638a990488afc8d9d245dd203269c2b38b2..2c42b1a76d002c1c1758b33a1ee8474be4524293 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -567,4 +567,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -223,10 +223,10 @@ index 03fc90a470c0f63d44161843cac88bea09166858..88640ac32d70ced6e8b1984663e1c492 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4895293d3dfd294d278c79932d354bf9fe780361..a03f60665059f96fc546e880c29d3bb7b04ca67c 100644 +index d3719998ddd7f29abb7b9a59273ddfcc27ebe63f..51c6f9f27362a5da6b454f0eb515bb27df7ed2df 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2521,6 +2521,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2511,6 +2511,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch index 2a48fdd4f..cb62f99ce 100644 --- a/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 c7047bacce4851956e3732f0a73be423cc46ee54..04ccb0562e01ea5b9fcc4a14346fb0767ae44639 100644 +index 28d940393f387387fa0a2b0dea8de24324e2e55e..6146f3e52eb1d8f47b5a41eff634d2c7cc24c26f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1119,6 +1119,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1110,6 +1110,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index 11ccdc887..8e1bff5b9 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 5e350fa39f47d54f6048ea89c1317759f122b8ae..0afa519068a9d7bf5b16e201d9d768254094dc4f 100644 +index 746f88db6b78b3c8ec372bfaacb26ec98f3b1163..6d50cf1887e998793c3101ba4c22186bcd70f60c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2301,6 +2301,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2321,6 +2321,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch index 5cccb4d7b..59575ff50 100644 --- a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 12f0da455f174c5a0652ac87f62c159808fbf7d3..307eac4114192a7f0e6633e3df5a5e7a54ad22ba 100644 +index bf48e496f4988f45ea8c92eb45544f44753e5738..af06a919673f2e4f41d1cd712caa5b002d12ae71 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -561,7 +561,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -594,7 +594,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index f12ddda8b..294e92b4c 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -227,7 +227,7 @@ index d10abd28c522612934aada8124e5bb67a9b4e9da..a6a1b57b4327f5710e9ec5ebca35a47c i = this.context.runTopCommand(customfunction1, source); } finally { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 3deaf5a9a3ee0a9550869811ff0c025814a9badf..4b2b538d2d9ae220341bd49e4534ee11e911d407 100644 +index b5744414e86bb78c29f494b20c7624fcf60ef0dd..4b407c1b2b9cde3b4210753b054783d1a3787f44 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -522,7 +522,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -249,10 +249,10 @@ index 3deaf5a9a3ee0a9550869811ff0c025814a9badf..4b2b538d2d9ae220341bd49e4534ee11 @Override diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index dba021ae5d71bc44e4aee83d6c3910a81cc8ad83..ec3df1e04febcc9b2f3e47ff38f642d131f6a313 100644 +index 3abec84383a445d3ad0d3b5f613246b6ac7ee741..a428df846cc6f4b2168d0c3ffdba34b42734bea3 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -468,15 +468,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -548,15 +548,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider protected void tick(BooleanSupplier shouldKeepTicking) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -272,33 +272,62 @@ index dba021ae5d71bc44e4aee83d6c3910a81cc8ad83..ec3df1e04febcc9b2f3e47ff38f642d1 } gameprofilerfiller.pop(); -@@ -1090,7 +1090,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1156,24 +1156,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + + // Paper start - optimised tracker + private final void processTrackQueue() { +- this.level.timings.tracker1.startTiming(); ++ //this.level.timings.tracker1.startTiming(); // Purpur + try { + for (TrackedEntity tracker : this.entityMap.values()) { + // update tracker entry + tracker.updatePlayers(tracker.entity.getPlayersInTrackRange()); + } + } finally { +- this.level.timings.tracker1.stopTiming(); ++ //this.level.timings.tracker1.stopTiming(); // Purpur + } + + +- this.level.timings.tracker2.startTiming(); ++ //this.level.timings.tracker2.startTiming(); // Purpur + try { + for (TrackedEntity tracker : this.entityMap.values()) { + tracker.serverEntity.sendChanges(); + } + } finally { +- this.level.timings.tracker2.stopTiming(); ++ //this.level.timings.tracker2.stopTiming(); // Purpur + } + } + // Paper end - optimised tracker +@@ -1188,7 +1188,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); - level.timings.tracker1.startTiming(); // Paper -+ //level.timings.tracker1.startTiming(); // Paper // Purpur ++ //this.level.timings.tracker1.startTiming(); // Paper // Purpur ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1115,17 +1115,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1213,17 +1213,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } - level.timings.tracker1.stopTiming(); // Paper -+ //level.timings.tracker1.stopTiming(); // Paper // Purpur ++ //this.level.timings.tracker1.stopTiming(); // Paper // Purpur if (!list.isEmpty()) { objectiterator = this.entityMap.values().iterator(); - level.timings.tracker2.startTiming(); // Paper -+ //level.timings.tracker2.startTiming(); // Paper // Purpur ++ //this.level.timings.tracker2.startTiming(); // Paper // Purpur while (objectiterator.hasNext()) { playerchunkmap_entitytracker = (ChunkMap.TrackedEntity) objectiterator.next(); playerchunkmap_entitytracker.updatePlayers(list); } - level.timings.tracker2.stopTiming(); // Paper -+ //level.timings.tracker2.stopTiming(); // Paper // Purpur ++ //this.level.timings.tracker2.stopTiming(); // Paper // Purpur } } @@ -606,7 +635,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 82a536db73221dc366a06818e66ce15f23536cde..314fd1bfe080a1298a72ca063da510d22c621ed6 100644 +index f244d9e7bd68f25f06217b14843186b4ad817d5c..1667ac929d5f221923977e5682686cd3bfb051ee 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2451,7 +2451,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -637,10 +666,10 @@ index 82a536db73221dc366a06818e66ce15f23536cde..314fd1bfe080a1298a72ca063da510d2 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5c90dbdbaa4655458081fea0343a48674cfd3a55..50720000069a4914c11ef5c402a39c469966196f 100644 +index cdb5ebf7ed24cdf0ab8e06a92bc2dd21f85008d9..182acaad79e14e5e120094916a0d295a4584de7a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1249,7 +1249,7 @@ public abstract class PlayerList { +@@ -1270,7 +1270,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -649,7 +678,7 @@ index 5c90dbdbaa4655458081fea0343a48674cfd3a55..50720000069a4914c11ef5c402a39c46 int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1260,7 +1260,7 @@ public abstract class PlayerList { +@@ -1281,7 +1281,7 @@ public abstract class PlayerList { } // Paper end } diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index f43de5adf..956a750d0 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -398,10 +398,10 @@ index a6a1b57b4327f5710e9ec5ebca35a47c11751d11..097ac55028d66ef9ab430ff5dd103db6 ++j; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index ec3df1e04febcc9b2f3e47ff38f642d131f6a313..8f8f6b409ad28f0fe577f274abbd9e99112bdec4 100644 +index a428df846cc6f4b2168d0c3ffdba34b42734bea3..3771caa73b0b41428f3d629aca1f562df7bcfaff 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -466,20 +466,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -546,20 +546,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -1037,10 +1037,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e98f3a8b9 100644 +index af06a919673f2e4f41d1cd712caa5b002d12ae71..5d46d35db653d58ccb850794282e8613b33e2393 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -809,7 +809,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -842,7 +842,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end public void baseTick() { @@ -1049,7 +1049,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -870,7 +870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -903,7 +903,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.firstTick = false; @@ -1058,7 +1058,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } public void setSharedFlagOnFire(boolean onFire) { -@@ -1089,7 +1089,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1122,7 +1122,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } @@ -1067,7 +1067,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1098,7 +1098,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1131,7 +1131,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1076,7 +1076,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e return; } // Paper end -@@ -1119,8 +1119,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1152,8 +1152,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1087,7 +1087,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1139,7 +1139,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1172,7 +1172,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1096,7 +1096,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1277,7 +1277,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1310,7 +1310,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1105,7 +1105,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } } // Paper start - detailed watchdog information -@@ -3125,7 +3125,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3137,7 +3137,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1114,7 +1114,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3143,7 +3143,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3155,7 +3155,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } // Paper // CraftBukkit end @@ -1123,7 +1123,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } this.isInsidePortal = false; -@@ -3618,14 +3618,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3630,14 +3630,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1140,7 +1140,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3664,7 +3664,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3676,7 +3676,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.unRide(); // CraftBukkit end @@ -1149,7 +1149,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3687,10 +3687,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3699,10 +3699,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.removeAfterChangingDimensions(); @@ -1163,7 +1163,7 @@ index 30365690fb8b0170636e712ccecb267e3ae53e0a..380f93a750c30c1ce0d0050c35eea19e } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 86ea1fe2fec0edcb0ccecb9ddcb296fdbf2c6d88..b42121391e8af3e90f7064bec1687afaf1b78454 100644 +index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7c5331b1a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1274,7 +1274,7 @@ index 86ea1fe2fec0edcb0ccecb9ddcb296fdbf2c6d88..b42121391e8af3e90f7064bec1687afa // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 547279a379190c2339d6335e00faf7730be6d0f0..599094f231787db475882c38721b724a2e3bf41c 100644 +index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c57a05fd4 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -366,13 +366,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1311,7 +1311,7 @@ index 547279a379190c2339d6335e00faf7730be6d0f0..599094f231787db475882c38721b724a } protected Vec3i getPickupReach() { -@@ -937,46 +937,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -935,46 +935,46 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end @@ -1701,7 +1701,7 @@ index 250af1ce7a93c2d2897f35c68fae319c9ba7d55d..5e66c2bd3807619cadee5b7081d93d21 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 9682676aa68cf5927facd60ef061006579c1f893..81bb48853acb34ad2f26da43b4d81620a9bfcc4f 100644 +index c889e5e0ba42eac860d25c76e5956471eb29be7e..02df0bf09f2ef91e4dafbdcea590b4634b2abf08 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -342,7 +342,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index 9ae48d7ab..1c4c745e1 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index 8215160bdba34c5eea7aed54ecf71b76abb49a45..0f1a915432d794a207e034c37c1b5eab @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0afa519068a9d7bf5b16e201d9d768254094dc4f..3b153d96b08c5591b4a322a2bbd5986257d4609a 100644 +index 6d50cf1887e998793c3101ba4c22186bcd70f60c..c2e9e44f7399ba7236ab30bfd1ab7f8a69cef4b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2305,6 +2305,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2325,6 +2325,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 0afa519068a9d7bf5b16e201d9d768254094dc4f..3b153d96b08c5591b4a322a2bbd59862 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 405894a48f4fdf48b6c887ffc5b01e205a424857..9f73cda9dc6531ce7b6276ca2399fb706a06e6af 100644 +index 51c6f9f27362a5da6b454f0eb515bb27df7ed2df..57e6d4bc3ad37d3eb66b5b4ccbc728a6dc64b00d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3349,5 +3349,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3339,5 +3339,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0274-Add-death-screen-API.patch b/patches/server/0274-Add-death-screen-API.patch index c52dd489a..d03c216f7 100644 --- a/patches/server/0274-Add-death-screen-API.patch +++ b/patches/server/0274-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9f73cda9dc6531ce7b6276ca2399fb706a06e6af..afb0229d0d895f20dcc8475430118ec83e0f12e9 100644 +index 57e6d4bc3ad37d3eb66b5b4ccbc728a6dc64b00d..692387ba5f313191ba324df666ea7086241153ee 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3387,5 +3387,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3377,5 +3377,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0277-Add-item-packet-serialize-event.patch b/patches/server/0277-Add-item-packet-serialize-event.patch index da57a8d69..af30bfb2d 100644 --- a/patches/server/0277-Add-item-packet-serialize-event.patch +++ b/patches/server/0277-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index 926ba816e7bccec0d1b34c2f8fc3300be84df4c2..b61c4d1ebb9c15a7ecd7bec5eb864851 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a086680bde989523dbaa52ef7c403ad6520ced98..34bb21e6e2812068e9bf82776cda4a0c1a34a2df 100644 +index 6b194a360ef7b6f2bf3380e00cf2bbd5e2f43b06..bf74dd38b5d495f8d2ac6a2072fd95dbdd2f44e4 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3365,6 +3365,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3371,6 +3371,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } diff --git a/patches/server/0286-Fire-Immunity-API.patch b/patches/server/0286-Fire-Immunity-API.patch index bd0a164ce..8e400970f 100644 --- a/patches/server/0286-Fire-Immunity-API.patch +++ b/patches/server/0286-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4..317c22712357232ecd506911faaf79ef2bfcc3e6 100644 +index 5d46d35db653d58ccb850794282e8613b33e2393..1b58e4c4919d6e697533dd2f29f7c91ff5074987 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -417,6 +417,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -418,6 +418,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean collidingWithWorldBorder; // Paper public boolean fixedPose = false; // Paper @@ -16,7 +16,7 @@ index b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4..317c22712357232ecd506911faaf79ef public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1779,7 +1780,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1812,7 +1813,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean fireImmune() { @@ -25,7 +25,7 @@ index b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4..317c22712357232ecd506911faaf79ef } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2453,6 +2454,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2486,6 +2487,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { nbt.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4..317c22712357232ecd506911faaf79ef return nbt; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2621,6 +2627,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2633,6 +2639,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,7 +50,7 @@ index b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4..317c22712357232ecd506911faaf79ef } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index eb409ecf5bf06692038e9fe84af986092a7d7837..4482e9401be4af7b16991f37d319e90602af2227 100644 +index 38ff078ae636218d157d4c885fca19be5666b52a..a18bc175d0a6d55492edd02cdc407a52d58346c1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -223,6 +223,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -71,7 +71,7 @@ index eb409ecf5bf06692038e9fe84af986092a7d7837..4482e9401be4af7b16991f37d319e906 public boolean isInDaylight() { return getHandle().isSunBurnTick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index c57f0ae102f1c9833ed7f93af4682caf490ec70c..26d59cdc87645b775441e013bb334c1ae6b9db55 100644 +index b2a28dea0c711331c351d38ac19944ef9f9299dc..f03a6fad31b240722a2b944d91282412cf79d884 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -173,9 +173,14 @@ public class CraftItem extends CraftEntity implements Item { diff --git a/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 2845ee4c4..1f4e95614 100644 --- a/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 317c22712357232ecd506911faaf79ef2bfcc3e6..0e192a128c87124956fcec552362ab763bac5e55 100644 +index 1b58e4c4919d6e697533dd2f29f7c91ff5074987..d61d7ae47285d9779221011212f871c4ef7de830 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -884,6 +884,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -917,6 +917,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end From ea2835bfe1e1625a02f7c7d26c06fe34a6674be1 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 9 Nov 2023 09:59:08 -0800 Subject: [PATCH 008/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@274e54b Bump tiny-remapper for Java 21 support (#9902) PaperMC/Paper@4675152 Don't leave the NearbyPlayers tracker in an entirely busted state on double-add detection --- build.gradle.kts | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e440fc550..7aa96ce90 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -57,7 +57,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.6:fat") + remapper("net.fabricmc:tiny-remapper:0.8.10:fat") decompiler("net.minecraftforge:forgeflower:2.0.627.2") paperclip("io.papermc:paperclip:3.0.3") } diff --git a/gradle.properties b/gradle.properties index f0b656853..a9e5a4e0d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 8cafc0729775aa8321b68e10de6a3953333b1392 +paperCommit = 4675152f4908431e0f944a7bf9fa3b2181a2dfd6 org.gradle.caching = true org.gradle.parallel = true From 1adf78b91a73559e49715dc97fb128d5d073791c Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 12 Nov 2023 01:44:08 -0800 Subject: [PATCH 009/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c95bc5f Don't unpack loot table for TEs not in world (#9918) PaperMC/Paper@6675d13 Fix strikeLightningEffect powers lightning rods & clears copper (#9780) PaperMC/Paper@63e77b5 Add Enchantment cost API (#9856) PaperMC/Paper@d8847bc Updated Upstream (Bukkit/CraftBukkit) (#9922) PaperMC/Paper@dd47ec6 Add Entity Movement Direction API (#7085) PaperMC/Paper@9ee60ec Add aggressive mob API (#9838) PaperMC/Paper@531ef27 Use ApiStatus.Internal instead of Deprecated (#9042) PaperMC/Paper@9548629 Add hand to fish event for all player interactions (#9929) PaperMC/Paper@aee3830 Deprecate Material#isInteractable (#9216) PaperMC/Paper@a506b48 Fix several issues with EntityBreedEvent (#8677) PaperMC/Paper@f186318 Run the chat callback on the main thread as expected (#9935) --- gradle.properties | 2 +- patches/api/0003-Purpur-config-files.patch | 4 +-- patches/api/0005-Purpur-client-support.patch | 4 +-- patches/api/0010-AFK-API.patch | 4 +-- patches/api/0011-Bring-back-server-name.patch | 8 ++--- .../0013-LivingEntity-safeFallDistance.patch | 4 +-- patches/api/0014-Lagging-threshold.patch | 8 ++--- .../0017-ItemStack-convenience-methods.patch | 4 +-- ...0020-LivingEntity-broadcastItemBreak.patch | 4 +-- ...030-API-for-any-mob-to-burn-daylight.patch | 4 +-- ...the-ability-to-add-combustible-items.patch | 8 ++--- patches/api/0044-Debug-Marker-API.patch | 14 ++++---- patches/api/0045-Add-death-screen-API.patch | 4 +-- patches/api/0054-Add-hover-lines-API.patch | 10 +++--- .../0001-Pufferfish-Server-Changes.patch | 16 ++++----- patches/server/0003-Rebrand.patch | 6 ++-- patches/server/0004-Purpur-config-files.patch | 12 +++---- patches/server/0008-Ridables.patch | 36 +++++++++---------- patches/server/0012-AFK-API.patch | 8 ++--- .../server/0013-Bring-back-server-name.patch | 4 +-- .../0015-LivingEntity-safeFallDistance.patch | 8 ++--- patches/server/0016-Lagging-threshold.patch | 4 +-- ...option-to-set-armorstand-step-height.patch | 4 +-- ...0059-Add-5-second-tps-average-in-tps.patch | 4 +-- .../0071-Allow-color-codes-in-books.patch | 10 +++--- patches/server/0072-Entity-lifespan.patch | 4 +-- ...0087-LivingEntity-broadcastItemBreak.patch | 4 +-- ...justable-breeding-cooldown-to-config.patch | 10 +++--- ...e-entity-breeding-times-configurable.patch | 14 ++++---- .../server/0119-PlayerBookTooLargeEvent.patch | 6 ++-- .../server/0132-Dont-run-with-scissors.patch | 6 ++-- ...174-API-for-any-mob-to-burn-daylight.patch | 8 ++--- ...the-ability-to-add-combustible-items.patch | 4 +-- ...t-right-click-to-use-exp-for-mending.patch | 4 +-- ...o-disable-kick-for-out-of-order-chat.patch | 4 +-- patches/server/0266-Remove-Timings.patch | 8 ++--- ...er-output-for-invalid-movement-kicks.patch | 4 +-- patches/server/0270-Debug-Marker-API.patch | 8 ++--- ...0277-Add-item-packet-serialize-event.patch | 4 +-- patches/server/0281-Language-API.patch | 4 +-- patches/server/0306-Add-hover-lines-API.patch | 8 ++--- 41 files changed, 147 insertions(+), 147 deletions(-) diff --git a/gradle.properties b/gradle.properties index a9e5a4e0d..f37c1671a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 4675152f4908431e0f944a7bf9fa3b2181a2dfd6 +paperCommit = f186318a91cbd3b2a2259d39cb88576989a496b8 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0003-Purpur-config-files.patch index 52ccd2d70..e50903e1e 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0003-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 8d8fe04e6b09d2a5b1cc05002073df5c58cdcb96..c71576fea7e0e7c3ad54912ed61d1ff20aaea4c2 100644 +index d0c634629aa0b6bac0da93655dd86ad3aea0ce30..b599ed409f483379fae75938d27187b63b34225b 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2121,6 +2121,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2190,6 +2190,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 9150bb9f2..46310ba6e 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 087898a50909a40aabec09f1e52cefed6565ba4c..45aac54f186a64b3c0845e97c97226d955f9f6d2 100644 +index 9240ea09206461d61cc08d4252e8507555bf41cf..9f87e81e47c786c4cd4d274b9ec5064f3a42c401 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3310,4 +3310,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3307,4 +3307,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index f68a643df..03b2e1239 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 45aac54f186a64b3c0845e97c97226d955f9f6d2..f1485aedb9d581bca9daa7bf94876a35e7f055bc 100644 +index 9f87e81e47c786c4cd4d274b9ec5064f3a42c401..0660f7d98f1d0cbd6442df8e01d6c72b5a395c15 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3318,5 +3318,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3315,5 +3315,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0011-Bring-back-server-name.patch index 19d0443a9..f1c2fb81f 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index f78b5fd3c3347d28da58777bff88903d2eb140f6..7338dad470cd75814cce5be40f82058554484607 100644 +index 884902cb7f86c0b56594ccafc7d05c6c7a23ab53..7e125817c68d5549be1eaa35c563e44e4c2c5239 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2756,4 +2756,15 @@ public final class Bukkit { +@@ -2832,4 +2832,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index f78b5fd3c3347d28da58777bff88903d2eb140f6..7338dad470cd75814cce5be40f820585 + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c71576fea7e0e7c3ad54912ed61d1ff20aaea4c2..fc2ff6fce4d7b4466cb7936b530c1c0d17f9f24f 100644 +index b599ed409f483379fae75938d27187b63b34225b..a7afd08014f0c571e01d26e809f2c1a6f6f5ce2d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2416,4 +2416,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2485,4 +2485,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index dc208aa25..9c7429c12 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 19e58e62ae442ef9be02ca7fa2f55e370a54afa4..c5dcfd380206603c2979aa02e7094fef27348eab 100644 +index a599ed2795ba1baf2cbb465d1c7145580c27e1ea..539d16791673cfc64231995f7db3176e9332a029 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1192,4 +1192,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1243,4 +1243,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch index 23b7d9905..a37ea53da 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 7338dad470cd75814cce5be40f82058554484607..a32155e0cc63d4e4714a953edbae0b19544ff3ef 100644 +index 7e125817c68d5549be1eaa35c563e44e4c2c5239..b948c38f32f94afa1708820dbbda9c7f4f9c685c 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2766,5 +2766,14 @@ public final class Bukkit { +@@ -2842,5 +2842,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index 7338dad470cd75814cce5be40f82058554484607..a32155e0cc63d4e4714a953edbae0b19 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index fc2ff6fce4d7b4466cb7936b530c1c0d17f9f24f..5b8ce8a5658021c6fdfeabca6c7bb31ebc58e71d 100644 +index a7afd08014f0c571e01d26e809f2c1a6f6f5ce2d..f87583244ba9ea07ffd2a438ea32f0328782dbf3 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2424,5 +2424,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2493,5 +2493,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch index 05bc102c9..ae3c65b3c 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0017-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 8a948a61d0bdb06b0b9a6eac8a27baeb35a7d36c..f6e0b39ba9ea34613ecb22c55d5c38d5dcad9a82 100644 +index 8c4ba0028f5c350a2906add58d9bf3d127a16f58..8ef4fa47e6721f5154316e81c2173cc4a42f4901 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11050,4 +11050,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11054,4 +11054,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } diff --git a/patches/api/0020-LivingEntity-broadcastItemBreak.patch b/patches/api/0020-LivingEntity-broadcastItemBreak.patch index ebc874b8b..6edf0bd41 100644 --- a/patches/api/0020-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0020-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index c5dcfd380206603c2979aa02e7094fef27348eab..accefccca9993edd00f72b4e5779fce0b3ee628f 100644 +index 539d16791673cfc64231995f7db3176e9332a029..cadee82cfd27ad48b2bb9e98d1eabb89ce0b59d1 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1207,5 +1207,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1258,5 +1258,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch index 6343a7bd2..e4c5bb609 100644 --- a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 656ea43ec614e5bf4d3474b9f02dafb970f33656..ee3ca27a5406024ed71cce14b0891266 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index accefccca9993edd00f72b4e5779fce0b3ee628f..994e026d68fcda9a4c34a8b161a06623f4437dff 100644 +index cadee82cfd27ad48b2bb9e98d1eabb89ce0b59d1..298acbfb93663e40e627f6a47d51fd87a1551feb 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1214,5 +1214,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1265,5 +1265,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0036-Added-the-ability-to-add-combustible-items.patch b/patches/api/0036-Added-the-ability-to-add-combustible-items.patch index 58ef1ffd8..080f2a0cd 100644 --- a/patches/api/0036-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0036-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index a32155e0cc63d4e4714a953edbae0b19544ff3ef..222dcb75a850d224ac22b2e06895233527cffc76 100644 +index b948c38f32f94afa1708820dbbda9c7f4f9c685c..4127ae56afb05196ff46a5313e9d141adc27802b 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2775,5 +2775,24 @@ public final class Bukkit { +@@ -2851,5 +2851,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index a32155e0cc63d4e4714a953edbae0b19544ff3ef..222dcb75a850d224ac22b2e068952335 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 5b8ce8a5658021c6fdfeabca6c7bb31ebc58e71d..3bc9fa8b68b284516ddbf0ace0c1dc52768307cb 100644 +index f87583244ba9ea07ffd2a438ea32f0328782dbf3..6795f2c0c1e974c4fe3181cd6838a68f7437c846 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2431,5 +2431,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2500,5 +2500,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index a97b3c453..748795ebb 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 222dcb75a850d224ac22b2e06895233527cffc76..584e3b08935f43beb27f478cc72229b6a5f40689 100644 +index 4127ae56afb05196ff46a5313e9d141adc27802b..c5956d747a09c192355c17a52f7bfa9e333c4e72 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2794,5 +2794,89 @@ public final class Bukkit { +@@ -2870,5 +2870,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 222dcb75a850d224ac22b2e06895233527cffc76..584e3b08935f43beb27f478cc72229b6 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 3bc9fa8b68b284516ddbf0ace0c1dc52768307cb..aaef58468a3c31f35e5067ed4263e9dd3fbddddd 100644 +index 6795f2c0c1e974c4fe3181cd6838a68f7437c846..7eae8683c0d540ba049dddaed8737e051d6f60db 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2446,5 +2446,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2515,5 +2515,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -179,7 +179,7 @@ index 3bc9fa8b68b284516ddbf0ace0c1dc52768307cb..aaef58468a3c31f35e5067ed4263e9dd // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 791ab7aa9cb36715a323e8b920bb67f30accf738..b012cc979e38ef1ef1ec61e71a887b91eb3de223 100644 +index 6fa89b11548da3d6be8cd92466f3853c1b409afc..cf63054e1b597b2bb13164722dd9a829ba7069ba 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -4168,6 +4168,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @@ -260,10 +260,10 @@ index 791ab7aa9cb36715a323e8b920bb67f30accf738..b012cc979e38ef1ef1ec61e71a887b91 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index f1485aedb9d581bca9daa7bf94876a35e7f055bc..23efdf3729f26554a1045e4d098fece5fc97c7ba 100644 +index 0660f7d98f1d0cbd6442df8e01d6c72b5a395c15..8d5ff090957e924fa513928d39c5917f3c64eca5 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3338,5 +3338,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3335,5 +3335,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index 6f8b16e03..528513ab5 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 23efdf3729f26554a1045e4d098fece5fc97c7ba..16b6d57fe359b5ccd4abce24e080fd09c31757dc 100644 +index 8d5ff090957e924fa513928d39c5917f3c64eca5..8d963acdeb99cfc0b424b9b3bdbda40b1c73e7a2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3408,5 +3408,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3405,5 +3405,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/api/0054-Add-hover-lines-API.patch b/patches/api/0054-Add-hover-lines-API.patch index a2f0f0a92..3ed8a7703 100644 --- a/patches/api/0054-Add-hover-lines-API.patch +++ b/patches/api/0054-Add-hover-lines-API.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java -index 1c4e0c7356047163a38f5ac4dd544129d0b36271..5e64f172508d928b6d74796a942ecc1077665b7b 100644 +index 0217f98a74140bbae454d467de27c12b6060ca75..fba5b867ea9de36b45ef25c2a93fc436701bb3d9 100644 --- a/src/main/java/org/bukkit/inventory/ItemFactory.java +++ b/src/main/java/org/bukkit/inventory/ItemFactory.java -@@ -299,4 +299,14 @@ public interface ItemFactory { - @Deprecated - net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName); - // Paper end - bungee hover events +@@ -355,4 +355,14 @@ public interface ItemFactory { + */ + @NotNull ItemStack enchantWithLevels(@NotNull ItemStack itemStack, @org.jetbrains.annotations.Range(from = 1, to = 30) int levels, boolean allowTreasure, @NotNull java.util.Random random); + // Paper end - enchantWithLevels API + + // Purpur start + /** diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 870c24721..c0d65db53 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1782,10 +1782,10 @@ index 584a768f2ce1c98a1de7749060c47f21721f9055..c4a22fab14c74f268e8452c398add432 if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 33be0db006cca66f38f2105924466b0210139848..2061f374a2b40ff5ba3e3bdb6ef02bbec3be9748 100644 +index 65bb221993147a558995b36fb835f7b82e0eb4bd..6cc9271ba058f4af759eae34e2f6e9f892b4f6da 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1118,6 +1118,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1119,6 +1119,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -1793,7 +1793,7 @@ index 33be0db006cca66f38f2105924466b0210139848..2061f374a2b40ff5ba3e3bdb6ef02bbe // Paper start if (!this.cserver.isPrimaryThread()) { List pageList = packet.getPages(); -@@ -2273,6 +2274,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2274,6 +2275,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private boolean updateChatOrder(Instant timestamp) { @@ -1914,7 +1914,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1e05fca2a2ba6e2c0b641b6e27585520889cd8a6..e78bc576497723ed727c0f4932e88bc931834ea8 100644 +index c655c6fee393c62ba79301f76baa72f9b1154a9a..c5a5e6aa4f512b8343a7cac6bd9ab8b72fa4adb4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2978,7 +2978,7 @@ index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..1d13fabb3f34023b4fbb1be9ad02ebc6 public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index 081691f9710ff1115e4308f79ed49fbc38941193..765ee7f78532a363813286ef7db2a7e48605cb06 100644 +index 3e638f12956e57548f76c7e2403ba370f7baa249..02364a148b347e3669275553004391e31d77c0b5 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -96,12 +96,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc @@ -3269,10 +3269,10 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5f33d18234c055393255c9c3234c6688af7a455d..41b063528862e32245bdd1040544e417f99c598e 100644 +index 9c08303de2891de92e06de8a939a618b7a6f7321..697e74b4d966f7472f0cb3dcaca928cdde4714d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper +@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -3281,7 +3281,7 @@ index 5f33d18234c055393255c9c3234c6688af7a455d..41b063528862e32245bdd1040544e417 private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -1122,6 +1122,11 @@ public final class CraftServer implements Server { +@@ -1124,6 +1124,11 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index 7a94fb712..13c65af11 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -199,10 +199,10 @@ index 58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90..ef14f47cec00ffaf1ac683964d3d1831 public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 41b063528862e32245bdd1040544e417f99c598e..bd53d6406d616021ec384c177797f78b6911c3a7 100644 +index 697e74b4d966f7472f0cb3dcaca928cdde4714d7..41375e6fcf209f653bded0da27e1b3a993d2ef8e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper +@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -239,7 +239,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 030fd330b13197d752a2d4c48628b9efd2c2c776..2be45534feedb77c44fbd736f2725b97b3840b41 100644 +index 1992bd985d1beae77b88d71c5fa551a277943fdb..831e71479ed0636ae8fd96adc732c23edf7d0e88 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index d82853081..9abf45864 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -72,7 +72,7 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66 boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 462c4eb3c06779f86f66778e9578d3d8f06c3294..a87d025a7ad0b7df16bea6fa4aeecae416551dde 100644 +index f623b5152c398ea460516596ad70fdb1f8a987ca..6ea42811c1e7ae1b6bf17b7edad921861c7fa2e0 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -112,10 +112,10 @@ index 28fd04794e2a624c5d0a1322b1d6d851f443e3b1..b60ab6c545296c67304019759ab04aa6 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6bb54ab0b5 100644 +index 41375e6fcf209f653bded0da27e1b3a993d2ef8e..8378cb22269e4020f06be4cfc0e1dba32c683431 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1039,6 +1039,7 @@ public final class CraftServer implements Server { +@@ -1041,6 +1041,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -123,7 +123,7 @@ index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6b for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1054,6 +1055,7 @@ public final class CraftServer implements Server { +@@ -1056,6 +1057,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6b } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1069,6 +1071,7 @@ public final class CraftServer implements Server { +@@ -1071,6 +1073,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -139,7 +139,7 @@ index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6b this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2920,6 +2923,18 @@ public final class CraftServer implements Server { +@@ -2983,6 +2986,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 0ef0684ee..0b62f13a6 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -66,10 +66,10 @@ index 85331b9b9edf4af02029333a628971fcf959090d..03ef82e835a82d6f42376881a3e5c83d public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2061f374a2b40ff5ba3e3bdb6ef02bbec3be9748..4b9fde27189a1436e4faea35f3f0f8c276c12e9c 100644 +index 6cc9271ba058f4af759eae34e2f6e9f892b4f6da..925ecb3d737f2e0e58bfdf17e2e48334188dce28 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2713,6 +2713,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2714,6 +2714,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index 2061f374a2b40ff5ba3e3bdb6ef02bbec3be9748..4b9fde27189a1436e4faea35f3f0f8c2 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3dde7e4a063863d6b785f41aa4f29590ed8d9a9b..de2a1621b2d671de8f1c10463661cb361cd9e6b4 100644 +index d8568d4c6dd74b76f3d8444a2ab6f10b0cec6818..9501683d6a6239e7a053f9a40a377783232bbe8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1340,7 +1340,7 @@ index 4300fab61765dd224fab084d118aae7294fc9de6..66f80ec010909648278c4e74c80d3766 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } 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 683cc5f9f066d554383fcd30e3654ac06ec76510..5b3a2010da3b6429da783f8263fd170a4fb8d80b 100644 +index 17e42c49fe6f1696a0b0b4b2537cabfe565692e5..61af090813936bac334a487c21e9e67f80a4c413 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -114,6 +114,32 @@ public class Panda extends Animal { @@ -1401,8 +1401,8 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..5b3a2010da3b6429da783f8263fd170a } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level().isClientSide); -@@ -653,7 +681,7 @@ public class Panda extends Animal { - this.setInLove(player); +@@ -654,7 +682,7 @@ public class Panda extends Animal { + this.setInLove(player, breedCopy); // Paper } else { if (this.level().isClientSide || this.isSitting() || this.isInWater()) { - return InteractionResult.PASS; @@ -1410,7 +1410,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..5b3a2010da3b6429da783f8263fd170a } this.tryToSit(); -@@ -672,7 +700,7 @@ public class Panda extends Animal { +@@ -673,7 +701,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1419,7 +1419,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..5b3a2010da3b6429da783f8263fd170a } } -@@ -717,7 +745,7 @@ public class Panda extends Animal { +@@ -718,7 +746,7 @@ public class Panda extends Animal { return new Vector3f(0.0F, dimensions.height - (this.isBaby() ? 0.4375F : 0.0F) * scaleFactor, 0.0F); } @@ -1428,7 +1428,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..5b3a2010da3b6429da783f8263fd170a private final Panda panda; -@@ -727,9 +755,9 @@ public class Panda extends Animal { +@@ -728,9 +756,9 @@ public class Panda extends Animal { } @Override @@ -2277,7 +2277,7 @@ index b4793b88688bd568a428aa520e880f0038de45a7..d1dd2cda473bb2294dc10c66c13eac85 } 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 1d9427da270edb447a2c8e031c4f05fe5d39603b..29108c481756d3150fd0ae69f6d249d127b11fdd 100644 +index 7dee2d1c4ce038f42334120f5dedb836f4e21723..02d19eaa4599951dd8a8fe594946c8a3dc5b30a9 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 @@ -86,6 +86,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -2486,7 +2486,7 @@ index ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b..fef3b7d193d20c4fdd50b38c6a0371f0 this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 09e9c0e55c789f03a4b64136f28154bd114db6f5..27050c00ea4e4b301d4c85528117fc1d87e6f1ef 100644 +index a0628b9d74c29d02bfba583edf7ee6f2cde2cff6..73db73bb5b47f586ce32249458268e4b7cda2003 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -149,12 +149,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -2557,7 +2557,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe 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 5f61c97478f005aaaaad1b027118079db7275cf7..0549974c56ae7d05b5eec77029c5d08a6614a8bf 100644 +index 9120663b63fc0e365e8edb359892b0db1ee97875..cd11879b8ad7977ca9c0c26d9bcc26ac7078a265 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 @@ -78,7 +78,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder public public boolean noPhysics; - protected final RandomSource random; + public final RandomSource random; public int tickCount; diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java index 9dcf28bdcb5770a191e62353a60c953731671283..43e562d740b628d5abf961312ea5ce7a23e8ac56 100644 diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index 54de2c81e..de4d47047 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -69,10 +69,10 @@ index f99658c42e69ded4c61ccaf4ac5e9e645ee5bc7c..c5a93bb3f0ae907d3abb63f97567ab0e lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur tickSection = curTime; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3cf7d12f573363c4e83dd9185c7da22a1fd6b872..892acaa0c664020b75a800eaa4d6e495727a6430 100644 +index a6aeeecb50db310516dd9c504eb17c86c704f8bc..6ab05085b4ba01ae1d6e4decc38cff56a571e20b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2877,6 +2877,7 @@ public final class CraftServer implements Server { +@@ -2940,6 +2940,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/server/0071-Allow-color-codes-in-books.patch index a03c63ff3..5b312dbc9 100644 --- a/patches/server/0071-Allow-color-codes-in-books.patch +++ b/patches/server/0071-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 852e6df80caf4daae01e8d599b1eb405b1ccf73f..b95c47b8a56921e92097e99853007ebf75391cac 100644 +index 3fa2997cefdff8957dd71aa87b4c2ee924b7e80a..8ffd6f79a055a56943521c6e1802eace318dc929 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1228,13 +1228,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1229,13 +1229,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 852e6df80caf4daae01e8d599b1eb405b1ccf73f..b95c47b8a56921e92097e99853007ebf this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1246,10 +1249,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1247,10 +1250,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 852e6df80caf4daae01e8d599b1eb405b1ccf73f..b95c47b8a56921e92097e99853007ebf Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1259,11 +1265,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1260,11 +1266,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 852e6df80caf4daae01e8d599b1eb405b1ccf73f..b95c47b8a56921e92097e99853007ebf } } -@@ -1276,6 +1282,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1277,6 +1283,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index 23fe2d162..9549c0c6b 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-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 b74c0ecdcfa41ba10f7514290ef470666f33ab18..11e6fa3e6e51c2da43ceb4a0fe865947b55e221c 100644 +index 8ffd6f79a055a56943521c6e1802eace318dc929..93b81303c6f5a009af7c282435671fd05ca68499 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2740,6 +2740,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2741,6 +2741,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { diff --git a/patches/server/0087-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch index a65c9a12b..cdd11f165 100644 --- a/patches/server/0087-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0087-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 3c65041eed148fe30be3c73e423433e37ae58cc5..07cbcb7f5a77b75ba10ccb470502c73fab17784e 100644 +index 841426fd4ea86c2f44309682a5fcbe3a39102b59..06c4647593334842217549e3266d4d6c9da81365 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1110,5 +1110,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1126,5 +1126,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch index 7e6ceed50..a8262cfeb 100644 --- a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0101-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 be105a4460e9bf2ef4b72a307fa31291c37d5e0e..5fe0b2301dbd1bedaa26254f7f88931c2022d709 100644 +index a836bfd2ea8af8098a20fb37ca25a5a613226f67..70d3dcfdc9cd21bd347fc71db3f9446c94fdb381 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -149,7 +149,7 @@ public abstract class Animal extends AgeableMob { @@ -14,10 +14,10 @@ index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..5fe0b2301dbd1bedaa26254f7f88931c - if (!this.level().isClientSide && i == 0 && this.canFallInLove()) { + if (!this.level().isClientSide && i == 0 && this.canFallInLove() && (this.level().purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level().hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur + final ItemStack breedCopy = itemstack.copy(); // Paper this.usePlayerItem(player, hand, itemstack); - this.setInLove(player); - return InteractionResult.SUCCESS; -@@ -231,12 +231,20 @@ public abstract class Animal extends AgeableMob { + this.setInLove(player, breedCopy); // Paper +@@ -240,12 +240,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -42,7 +42,7 @@ index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..5fe0b2301dbd1bedaa26254f7f88931c 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 4f950128114b8fb6ad145a7302ce6be327c8b6c1..b486008e2ef64648064aa365fb98bd5878f9c379 100644 +index a8a494df6019230f7a301176580db9eb2d552030..80b4d8d1283c03681106853fd83bf6df0392c230 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -194,6 +194,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 4bafe0a57..73d60afe7 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -22,7 +22,7 @@ index 0cc411dd39d981187c9e9a3c5eb8043b19a09b98..f7032f4ea55f5aca293c2640686238b7 // 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 5fe0b2301dbd1bedaa26254f7f88931c2022d709..2e268aa614522b40fbffabce4017b228db5bcba8 100644 +index 70d3dcfdc9cd21bd347fc71db3f9446c94fdb381..a434d91b8dfff30cff81df964ea8149caa8cb604 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @@ -33,7 +33,7 @@ index 5fe0b2301dbd1bedaa26254f7f88931c2022d709..2e268aa614522b40fbffabce4017b228 protected Animal(EntityType type, Level world) { super(type, world); -@@ -272,8 +273,10 @@ public abstract class Animal extends AgeableMob { +@@ -281,8 +282,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -111,7 +111,7 @@ index d42c8bcd85ffb1e00d2883485bf22981611b0bc3..c501704251e5b23f697efc307ebdc906 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index f26fa004e1372f8711e76bc7fa4cdb383b989755..b13429e254bd056cf942f39d46976ff0ef2a97f3 100644 +index 72bdeff4cacac8669e2608ef9353318cb5fb16f0..fc4b66e0a0561fc6705a50dc65b1120301f02f77 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -188,6 +188,11 @@ public class Fox extends Animal implements VariantHolder { @@ -172,7 +172,7 @@ index 14daac1a87e32e0ff0a610aef256e20cbfe50001..3fe751839e4a1bc266b0d9508e1e3384 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 2832d7cbcfad43b3f0f6c33504cff68add85601d..e91f950b64f80fb86795c570f7f119c159315472 100644 +index 6c7354ca03efdaf9e01d4a63f8ac38e74c0c35c8..0d5cc20029e1876b79927a89716e2ecc144791e3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -146,6 +146,11 @@ public class Panda extends Animal { @@ -300,7 +300,7 @@ index eecdb1f1d49951cb8a294d176afd12c68fb6c3b1..39a923e48750bd960f64aad248c10dd3 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 882c8fe0d9dc2e34eed2f1b11bb2c1b4d72319d2..c217a4b78eb53af8b8c011bfabbbddcc31c88df4 100644 +index 5cd79df01d4dbe7a1af530c502a78e48dcaffb7e..9c71a3f88494d34ae02fd024f641a7af608f63fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -120,6 +120,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 85a557b50498bb83eeec4125aa2ae14f3bfaaab8..f44261137f12354640170206ca7bfb6d991dc7a0 100644 +index 909d32553ffd7a32f44f7201fdab850e4bcfdcc7..bfdd33beb8206c8b0c96aad5b5002c8db02ae912 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 @@ -91,6 +91,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -394,7 +394,7 @@ index 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa159 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 15a08abe94cb97de1450ff42cfb924a537b9eb5c..1c0d0f14659e0a64e6b3b3998f59f90cd5b59726 100644 +index 7b329fa3af99742d83eca7825e2da3b6e55431ee..6045f29c641d1958371c77701e9514d9ca44b85e 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 @@ -140,6 +140,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1175,6 +1180,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1176,6 +1181,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index 06a56c76f..afc7c1e78 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f221f14c345ec81bc422e0f50d940eb43cdbcc73..a84ec27e5fbbb270c4cb3ed814518272591ae613 100644 +index 8ed7699d2f8b636cce023c1afe0e196c8361725c..a541c642ef5132ec41dedac770fd31d96401806c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1613,6 +1613,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1614,6 +1614,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index f221f14c345ec81bc422e0f50d940eb43cdbcc73..a84ec27e5fbbb270c4cb3ed814518272 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1664,6 +1671,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1665,6 +1672,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch index ee76f4e7d..0c1e9946c 100644 --- a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cbb786b246847a9463f9f34a63aafa686f0db7fe..6f56cbf6104303cb6ddfa59f41e37a64e3c18ae2 100644 +index d16d15c92456ce2d8bb287a0c668b7bc459c5066..0aa3c178d0bca9332702589b5f0781019368b3e5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -497,6 +497,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -353,7 +353,7 @@ index e118cfc34b05f6d4921a0903eca70be6b68bff4f..fab8e4ffa083e3d436fd4d6d19cf8ea8 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 2406c33799ce8e00484c63b87c0c2c6ded9bf25b..38ff078ae636218d157d4c885fca19be5666b52a 100644 +index ac31a117428875143871cb807088250dce4f780a..8d5669917e66c16a5653dc0bca1db2618801c8f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -369,10 +369,10 @@ index 2406c33799ce8e00484c63b87c0c2c6ded9bf25b..38ff078ae636218d157d4c885fca19be /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index a6ab50d4a368b6d7eaaefe790f351fbc43fd7626..7feff1402b3034d0f387440f28ee7a71e4ff4acf 100644 +index 06c4647593334842217549e3266d4d6c9da81365..d085ba1f8019ee901c2e47ff46cd295ae6766f84 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1116,5 +1116,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1132,5 +1132,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch index 031768cc6..e2d462abc 100644 --- a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 892acaa0c664020b75a800eaa4d6e495727a6430..8215160bdba34c5eea7aed54ecf71b76abb49a45 100644 +index 6ab05085b4ba01ae1d6e4decc38cff56a571e20b..dd6d5ed8beb6d090c2aaafc540fa857a4815558f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1538,6 +1538,19 @@ public final class CraftServer implements Server { +@@ -1540,6 +1540,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch index 6f8cbbf42..a5ff82e2a 100644 --- a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 0520d66d9de942f12f61dd1f735f8c19d5d62f07..818b360c205c7667946f49e324daa961 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a84ec27e5fbbb270c4cb3ed814518272591ae613..ccaee317c02bba549787dbcfa558763d67eab1d2 100644 +index a541c642ef5132ec41dedac770fd31d96401806c..2152abc4ea04515a688af1dca8174f96a629f2fb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2023,6 +2023,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2024,6 +2024,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch index eb4671ead..fb285b384 100644 --- a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ccaee317c02bba549787dbcfa558763d67eab1d2..82a536db73221dc366a06818e66ce15f23536cde 100644 +index 2152abc4ea04515a688af1dca8174f96a629f2fb..33944e586b8547a29ed5377a22b4c51067714d11 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2341,7 +2341,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2342,7 +2342,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index 294e92b4c..e0c0d7db0 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -635,10 +635,10 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f244d9e7bd68f25f06217b14843186b4ad817d5c..1667ac929d5f221923977e5682686cd3bfb051ee 100644 +index 33944e586b8547a29ed5377a22b4c51067714d11..4fa1b9a46566fcfbf9ca080bdecd2e912c01ac4f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2451,7 +2451,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -647,7 +647,7 @@ index f244d9e7bd68f25f06217b14843186b4ad817d5c..1667ac929d5f221923977e5682686cd3 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2461,7 +2461,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2462,7 +2462,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -656,7 +656,7 @@ index f244d9e7bd68f25f06217b14843186b4ad817d5c..1667ac929d5f221923977e5682686cd3 return; } -@@ -2474,7 +2474,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2475,7 +2475,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { diff --git a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch index 38462fda1..324a974da 100644 --- a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 314fd1bfe080a1298a72ca063da510d22c621ed6..a086680bde989523dbaa52ef7c403ad6520ced98 100644 +index 4fa1b9a46566fcfbf9ca080bdecd2e912c01ac4f..fa586687929ae348d16a6afc81b364aafd2b238f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index 314fd1bfe080a1298a72ca063da510d22c621ed6..a086680bde989523dbaa52ef7c403ad6 return; } -@@ -1327,8 +1328,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1328,8 +1329,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index 1c4c745e1..0a3d9e870 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8215160bdba34c5eea7aed54ecf71b76abb49a45..0f1a915432d794a207e034c37c1b5eab02a1c6de 100644 +index dd6d5ed8beb6d090c2aaafc540fa857a4815558f..4563040a258f4379bd717c398a51c2d2cce9e77f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1549,6 +1549,42 @@ public final class CraftServer implements Server { +@@ -1551,6 +1551,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -52,7 +52,7 @@ index 8215160bdba34c5eea7aed54ecf71b76abb49a45..0f1a915432d794a207e034c37c1b5eab @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 6d50cf1887e998793c3101ba4c22186bcd70f60c..c2e9e44f7399ba7236ab30bfd1ab7f8a69cef4b8 100644 +index de2ea4f5fb93b01b6c3ab350cc5dd17626fad7f6..f93e63ae9952e409abf34ead9d46a909940af554 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -2325,6 +2325,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -99,7 +99,7 @@ index 6d50cf1887e998793c3101ba4c22186bcd70f60c..c2e9e44f7399ba7236ab30bfd1ab7f8a @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 51c6f9f27362a5da6b454f0eb515bb27df7ed2df..57e6d4bc3ad37d3eb66b5b4ccbc728a6dc64b00d 100644 +index e9ed820105b882a603b44c05bd11cec0f91072d1..5b6fb5274a4918fa235378aed520cd74239f53da 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3339,5 +3339,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0277-Add-item-packet-serialize-event.patch b/patches/server/0277-Add-item-packet-serialize-event.patch index af30bfb2d..4c37bfd59 100644 --- a/patches/server/0277-Add-item-packet-serialize-event.patch +++ b/patches/server/0277-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index 926ba816e7bccec0d1b34c2f8fc3300be84df4c2..b61c4d1ebb9c15a7ecd7bec5eb864851 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6b194a360ef7b6f2bf3380e00cf2bbd5e2f43b06..bf74dd38b5d495f8d2ac6a2072fd95dbdd2f44e4 100644 +index fa586687929ae348d16a6afc81b364aafd2b238f..a7e82f95db5c6c054175192f019072006a3ef31f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3371,6 +3371,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3372,6 +3372,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } diff --git a/patches/server/0281-Language-API.patch b/patches/server/0281-Language-API.patch index d5fba8f5b..e68b59216 100644 --- a/patches/server/0281-Language-API.patch +++ b/patches/server/0281-Language-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 2b3b9be41930a73886735394e12f6e3eab800fb2..3c83fc78af6ce549a821c0e030d3dea1790dca47 100644 +index 4563040a258f4379bd717c398a51c2d2cce9e77f..79f00c72d28426095a3f3742d77f2369164b2a9c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -399,6 +399,20 @@ public final class CraftServer implements Server { +@@ -401,6 +401,20 @@ public final class CraftServer implements Server { this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); Bukkit.setServer(this); diff --git a/patches/server/0306-Add-hover-lines-API.patch b/patches/server/0306-Add-hover-lines-API.patch index d3e3da02a..fef201802 100644 --- a/patches/server/0306-Add-hover-lines-API.patch +++ b/patches/server/0306-Add-hover-lines-API.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 57f4cf40359fe9bb427eb0134660d00839a63c86..ab510e5917081bd8750a2cd7465e7823687e94bf 100644 +index 9469b0d5d8a46ac17c3998a4b537a4feb1deb3b0..cf7b65ec3fac111b607f11d08aee8f11873a04fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -@@ -559,4 +559,17 @@ public final class CraftItemFactory implements ItemFactory { - return eggItem == null ? null : new net.minecraft.world.item.ItemStack(eggItem).asBukkitMirror(); +@@ -599,4 +599,17 @@ public final class CraftItemFactory implements ItemFactory { + return CraftItemStack.asCraftMirror(enchanted); } - // Paper end + // Paper end - enchantWithLevels API + + // Purpur start + @Override From 2a38801aebc54ea0c9bf4825ca1f6e66b2bd7f03 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 13 Nov 2023 23:41:37 -0800 Subject: [PATCH 010/148] adds ridable option to zombie horse and skeleton horse, fixes #1458 only set as tamable if already tamed or if ridable option is enabled --- patches/server/0008-Ridables.patch | 16 ++- ...-Configurable-entity-base-attributes.patch | 26 ++-- .../0025-Zombie-horse-naturally-spawn.patch | 10 +- ...37-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...0049-Villagers-follow-emerald-blocks.patch | 16 +-- .../0050-Allow-leashing-villagers.patch | 10 +- .../0065-Configurable-jockey-options.patch | 20 +-- patches/server/0074-Squid-EAR-immunity.patch | 8 +- .../0076-Configurable-villager-breeding.patch | 8 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 8 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...sable-zombie-aggressiveness-towards-.patch | 10 +- patches/server/0094-Flying-squids-Oh-my.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 28 ++-- .../0109-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 8 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 8 +- ...14-Configurable-default-collar-color.patch | 6 +- .../0118-Striders-give-saddle-back.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 24 ++-- ...oggle-for-water-sensitive-mob-damage.patch | 118 ++++++++--------- ...ither-Ender-Dragon-can-ride-vehicles.patch | 8 +- ...0145-Add-config-for-villager-trading.patch | 14 +- ...8-Config-for-wither-explosion-radius.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 6 +- ...izeable-Zombie-Villager-curing-times.patch | 8 +- ...0202-Toggle-for-Wither-s-spawn-sound.patch | 6 +- .../0205-Conduit-behavior-configuration.patch | 4 +- .../server/0206-Cauldron-fill-chances.patch | 4 +- ...ion-to-disable-zombie-villagers-cure.patch | 8 +- .../0226-Mobs-always-drop-experience.patch | 124 +++++++++--------- .../0232-Mob-head-visibility-percent.patch | 12 +- ...nfigurable-minimum-demand-for-trades.patch | 8 +- .../0244-Lobotomize-stuck-villagers.patch | 10 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 8 +- .../0256-Skeletons-eat-wither-roses.patch | 4 +- ...272-Add-skeleton-bow-accuracy-option.patch | 4 +- .../server/0300-Shears-can-defuse-TNT.patch | 4 +- 41 files changed, 309 insertions(+), 301 deletions(-) diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 0b62f13a6..f30c7e675 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -2647,7 +2647,7 @@ index a6601f70890f90691923c0e6a9f10ea597ccabc2..ae7bcfa608d8bdd2a2320618225294de protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 92d170dd0155a7a5879de4a320cdc03bb66d8887..6d5a37facc288ebb27d96c2451091ea299c16077 100644 +index 92d170dd0155a7a5879de4a320cdc03bb66d8887..0318297ed96a640932728d704fa273c4d126e034 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -31,6 +31,13 @@ public class SkeletonHorse extends AbstractHorse { @@ -2657,7 +2657,7 @@ index 92d170dd0155a7a5879de4a320cdc03bb66d8887..6d5a37facc288ebb27d96c2451091ea2 + // Purpur start + @Override + public boolean isTamed() { -+ return true; ++ return super.isTamed() || this.level().purpurConfig.skeletonHorseRidable; + } + // Purpur end + @@ -2706,7 +2706,7 @@ index b016f53c6644c6411b3a91e09049892131187179..5fc37e2322188e0db12f7679e40b1a3d public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 7f8bbacf00498a2ed6a13760266df993a289c2dd..6c03ad3d978378221db3e5bed947738bd710eae0 100644 +index 7f8bbacf00498a2ed6a13760266df993a289c2dd..8c5a083f3db046709a38355343ad7e5ab45779b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -22,6 +22,18 @@ public class ZombieHorse extends AbstractHorse { @@ -2721,7 +2721,7 @@ index 7f8bbacf00498a2ed6a13760266df993a289c2dd..6c03ad3d978378221db3e5bed947738b + + @Override + public boolean isTamed() { -+ return true; ++ return super.isTamed() || this.level().purpurConfig.zombieHorseRidable; + } + // Purpur end + @@ -5281,10 +5281,10 @@ index 61d193d8ddd87817bf2c560037d42366cff1eca9..8ad548fc059568d37675e017548b171d + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e04285792787d7193ee 100644 +index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..3eae97d610d8f61528b87039723ef4ce2dc75c91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -89,4 +89,722 @@ public class PurpurWorldConfig { +@@ -89,4 +89,726 @@ public class PurpurWorldConfig { final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } @@ -5775,9 +5775,11 @@ index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e0428579278 + skeletonControllable = getBoolean("mobs.skeleton.controllable", skeletonControllable); + } + ++ public boolean skeletonHorseRidable = false; + public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseCanSwim = false; + private void skeletonHorseSettings() { ++ skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); + skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); + skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); + } @@ -5982,9 +5984,11 @@ index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e0428579278 + zombieControllable = getBoolean("mobs.zombie.controllable", zombieControllable); + } + ++ public boolean zombieHorseRidable = false; + public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseCanSwim = false; + private void zombieHorseSettings() { ++ zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); + zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); + zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); + } diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 6600168a5..6ec0ea05b 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index de2a1621b2d671de8f1c10463661cb361cd9e6b4..120377f090669ef06ad6d53fa55facfb9e1e800a 100644 +index 9501683d6a6239e7a053f9a40a377783232bbe8e..8b9efc0477f1d97414d12282bd9d10a7d2ec83a8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; @@ -238,7 +238,7 @@ index 66f80ec010909648278c4e74c80d3766b9cf6c6a..14daac1a87e32e0ff0a610aef256e20c 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 5b3a2010da3b6429da783f8263fd170a4fb8d80b..2832d7cbcfad43b3f0f6c33504cff68add85601d 100644 +index 61af090813936bac334a487c21e9e67f80a4c413..6c7354ca03efdaf9e01d4a63f8ac38e74c0c35c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -140,6 +140,12 @@ public class Panda extends Animal { @@ -475,7 +475,7 @@ index d1dd2cda473bb2294dc10c66c13eac8591ea4d5b..5cd79df01d4dbe7a1af530c502a78e48 public Map 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 29108c481756d3150fd0ae69f6d249d127b11fdd..85a557b50498bb83eeec4125aa2ae14f3bfaaab8 100644 +index 02d19eaa4599951dd8a8fe594946c8a3dc5b30a9..909d32553ffd7a32f44f7201fdab850e4bcfdcc7 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 @@ -320,6 +320,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -503,7 +503,7 @@ index 29108c481756d3150fd0ae69f6d249d127b11fdd..85a557b50498bb83eeec4125aa2ae14f protected SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 27050c00ea4e4b301d4c85528117fc1d87e6f1ef..ad4d4e38a2f0125e0943945c9440a9be80b60257 100644 +index 73db73bb5b47f586ce32249458268e4b7cda2003..a27e99ee6d8d2406d141dc1537c7098f43a29318 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -162,6 +162,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -613,7 +613,7 @@ index 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464e 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 0549974c56ae7d05b5eec77029c5d08a6614a8bf..278c33b7de4472a746cdbc1faaa68e05592777bc 100644 +index cd11879b8ad7977ca9c0c26d9bcc26ac7078a265..8c8c135e9bc707ae8e2aad249302109023f6fea3 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 @@ -124,6 +124,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(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 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654d10a9dd3 100644 +index 8a30b101fd2cc78b867ae703f6a4e8805d1c841d..6d7b5cf3db81c4e42dda17757125d4a1c83c8c59 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -157,7 +157,19 @@ public class Zombie extends Monster { @@ -70,10 +70,10 @@ index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654 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 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43e5cbe4b3 100644 +index ba055361b27c83fd27e5347c26752e8f88d35793..37794c0863bda3d5cc24cc2e4c512d433eb4ef9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1850,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,11 +81,11 @@ index 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1864,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1867,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); + zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch index 097f745e3..01bca2a2b 100644 --- a/patches/server/0094-Flying-squids-Oh-my.patch +++ b/patches/server/0094-Flying-squids-Oh-my.patch @@ -58,7 +58,7 @@ index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0 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 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a230bca41 100644 +index 37794c0863bda3d5cc24cc2e4c512d433eb4ef9b..8af34a04370ebb0b62137387c7eb082443f68c5b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -902,10 +902,12 @@ public class PurpurWorldConfig { @@ -74,7 +74,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a } public boolean goatRidable = false; -@@ -1537,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1541,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1548,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1553,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 73d60afe7..8f7fa72e9 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -426,7 +426,7 @@ index abbeb305b2d09e9c4c02ade603adac5ceb34bdd0..1de48560ac5a1db8845c98c812b2e9f9 protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 8ffba7c368f936ea5cdfc46c5fa76c3feb63e1ac..bd83a2b82908d0beb91bd2937e263d6681a691f6 100644 +index cc8813c572618700981403d513f30b8a06e4c49e..e618d3b77cafeaee22b4140449703ca80bdd4c92 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -53,6 +53,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -458,7 +458,7 @@ index 4abb9d5fedf63eba9dc3f716d44ea11806607af0..3632fcb124be8cf77d9bebf7b861a481 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 2e6b55a01e022252245c16ed310920bcba072975..fba4eec4490e389b8b102d40542b9340d8ac559e 100644 +index ebfd54d835cdac3f95c926b3e2e10db6170b4dd7..93c44b8cc86ca4fe0c70855d4eb71411c5a42846 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -49,6 +49,11 @@ public class ZombieHorse extends AbstractHorse { @@ -522,7 +522,7 @@ index 22788892f7286f3fa6b40059b2bedaf0c6ec5ef3..80f91a11c04763c1c9ed2bd242b88b5a public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374cead07f655 100644 +index 7ebc466f72e61e11e73ab20a98f72d16cea7c077..569a09a73c9d800e78a77c430494292457453ab1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -501,10 +501,12 @@ public class PurpurWorldConfig { @@ -851,7 +851,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean shulkerRidable = false; -@@ -1565,11 +1607,13 @@ public class PurpurWorldConfig { +@@ -1567,11 +1609,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -865,7 +865,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean squidRidable = false; -@@ -1628,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1674,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -873,7 +873,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1638,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1685,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -881,7 +881,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean tadpoleRidable = false; -@@ -1658,6 +1704,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1706,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -889,7 +889,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1675,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1724,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -897,7 +897,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean tropicalFishRidable = false; -@@ -1695,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1745,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -905,7 +905,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1705,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1756,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -913,7 +913,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean vexRidable = false; -@@ -1732,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1784,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -921,7 +921,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1745,6 +1796,7 @@ public class PurpurWorldConfig { +@@ -1747,6 +1798,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -929,7 +929,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean vindicatorRidable = false; -@@ -1856,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1910,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -937,7 +937,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1866,6 +1919,7 @@ public class PurpurWorldConfig { +@@ -1868,6 +1921,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch index 0e9b27ee5..ea04237cc 100644 --- a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index bd9dd01e9140c2ad0ab9859b9a455f73ab04a253..d3da7487f911ff791dca5f7b546dccda this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ecf34286db35cebad22bf09bd1f15d61908a2a1..30635734e1109b0313039f01b46f0836eb5bdd70 100644 +index 68fa6b3492d9ad309f305560afe6f767c9c56fe0..7687b76b6a468b242835eb035781f6121b9477a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1605,6 +1605,10 @@ public class PurpurWorldConfig { +@@ -1607,6 +1607,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 3ecf34286db35cebad22bf09bd1f15d61908a2a1..30635734e1109b0313039f01b46f0836 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1618,6 +1622,10 @@ public class PurpurWorldConfig { +@@ -1620,6 +1624,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index eed70111d..1649f9496 100644 --- a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,7 +136,7 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 1754c88d9b3bdbce721062c564a5f61c2ad14e86..7fcf3cf145828b610dec15dcc2cf469a48de9317 100644 +index cf4950ae95e18f64856e4bce8e70772268f3fa3a..339918b33e825f20a174981c9d5fbda95f4706e7 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -174,10 +174,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30635734e1109b0313039f01b46f0836eb5bdd70..fe18b304ae649e93aefea3461a22151e7b7bdb40 100644 +index 7687b76b6a468b242835eb035781f6121b9477a8..476a91cb2449072f9c13bb881f2f439172f0e933 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1808,6 +1808,8 @@ public class PurpurWorldConfig { +@@ -1810,6 +1810,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index 30635734e1109b0313039f01b46f0836eb5bdd70..fe18b304ae649e93aefea3461a22151e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1822,6 +1824,8 @@ public class PurpurWorldConfig { +@@ -1824,6 +1826,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 4596fd32d..38932b4da 100644 --- a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe18b304ae649e93aefea3461a22151e7b7bdb40..592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8 100644 +index 476a91cb2449072f9c13bb881f2f439172f0e933..34a557f50cf5056592208fe0d9f9fb50f4b7e943 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2052,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2056,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index fe18b304ae649e93aefea3461a22151e7b7bdb40..592ad59fb71d6d638301f5dd0c1b5b9f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2066,5 +2067,6 @@ public class PurpurWorldConfig { +@@ -2070,5 +2071,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch index b760916d9..ad39dfde8 100644 --- a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -200,7 +200,7 @@ index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f69835 return super.mobInteract(player, hand); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b0b436401 100644 +index 38b6d2c377800134de592a780b737b45c8096a11..449acd9dc983be1cd51208bc8f8d843d2ddaa923 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java @@ -57,4 +57,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { @@ -221,10 +221,10 @@ index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8..0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7 100644 +index 34a557f50cf5056592208fe0d9f9fb50f4b7e943..50863c526d4ea0e171c326b8b989f92cf082fa96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1937,6 +1937,8 @@ public class PurpurWorldConfig { +@@ -1939,6 +1939,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +233,7 @@ index 592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8..0c0d5c6dd4d2ed8c5b71acc47fcc9faa public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1948,6 +1950,8 @@ public class PurpurWorldConfig { +@@ -1950,6 +1952,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0114-Configurable-default-collar-color.patch b/patches/server/0114-Configurable-default-collar-color.patch index 1842260b8..e100904a4 100644 --- a/patches/server/0114-Configurable-default-collar-color.patch +++ b/patches/server/0114-Configurable-default-collar-color.patch @@ -43,7 +43,7 @@ index 6a822abe936aed83da595980e0f698354a205b0b..bbecb3894d0f4a24442e8833f4d828e6 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6208c6406 100644 +index 50863c526d4ea0e171c326b8b989f92cf082fa96..9df131e8e3c14aedfafa491b4765dc05f468d01f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6 } public boolean caveSpiderRidable = false; -@@ -1937,6 +1943,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +1945,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1950,6 +1957,11 @@ public class PurpurWorldConfig { +@@ -1952,6 +1959,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0118-Striders-give-saddle-back.patch b/patches/server/0118-Striders-give-saddle-back.patch index dbf0cea34..defd1f5aa 100644 --- a/patches/server/0118-Striders-give-saddle-back.patch +++ b/patches/server/0118-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 10136a5062d154456c962e7d1a99c2dedbd568ed..64503362c42daa39dcfa270bc50b0e21 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74a210a911211d38be77a6d00a0c032c14f48aad..a877974c3b3336ae49da1bcf56b66427d1748c35 100644 +index ef40f177856981c16c667c202480591ad1334109..810745ee8b2f3dedf50533e31000ed29c2929718 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 74a210a911211d38be77a6d00a0c032c14f48aad..a877974c3b3336ae49da1bcf56b66427 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1722,6 +1723,7 @@ public class PurpurWorldConfig { +@@ -1724,6 +1725,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index 04e831f29..ec43fcb65 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bb36602c78292e762e26fe23e9928609c4bb4271..704eccf1d65d650ce1f6709136c75133f9ef59be 100644 +index c46490fd0443ba0ea04679a31a637410600b2810..7e6fe9ee09b80d022bfc2cc87363142a10b980f3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1802,7 +1802,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -18,7 +18,7 @@ index bb36602c78292e762e26fe23e9928609c4bb4271..704eccf1d65d650ce1f6709136c75133 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1ce3ba7f703b5627e2761865c0e133dbf5df8712..4454241862598048abd4e8bf321f9a066be15067 100644 +index dd75a1115d02506f1e99688817cb724b22b3e696..54d1e9c9d98bbf8f408c3c9906d76c662ab2c90e 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -374,7 +374,7 @@ index 18feb559f9fd157dd4a01faf2b2bb18df2a64675..9c834e3deed07eb70e6a57df2db732c1 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b75506d9d 100644 +index 88609510c379d0e7d94f3d821f828ed0313a9fe3..1ee8dfb7d6efea66293cfd8059b8a84a77999fb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,8 +115,11 @@ public class PurpurWorldConfig { @@ -613,7 +613,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean skeletonRidable = false; -@@ -1635,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1674,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -621,7 +621,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1652,6 +1690,7 @@ public class PurpurWorldConfig { +@@ -1654,6 +1692,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -629,7 +629,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean snifferRidable = false; -@@ -1838,6 +1877,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1879,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -637,7 +637,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1854,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1896,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -645,7 +645,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean vindicatorRidable = false; -@@ -1926,6 +1967,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +1969,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1943,6 +1985,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +1987,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -661,7 +661,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean witherSkeletonRidable = false; -@@ -2014,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2059,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,11 +669,11 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2029,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2075,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); + zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index e4cb0c56d..f66339a28 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -126,7 +126,7 @@ index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 079fd78528377ee4236fb2e7189a5f0fc5ec4fb3..77746eeffdc612793a6c907f222753bce5cd0ed4 100644 +index 3f41698deb5b1d837832285e087aa0f82f16cd59..5533b667b983fe6f2375ca8f21c8580dc373628a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -163,6 +163,11 @@ public class Dolphin extends WaterAnimal { @@ -142,7 +142,7 @@ index 079fd78528377ee4236fb2e7189a5f0fc5ec4fb3..77746eeffdc612793a6c907f222753bc @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 948760c9ee6ba921a7f1b4200fc77aa13f198984..7bd1177b58bd5ecc5659266eece39a49ec08ffa9 100644 +index cf58894de9804770ba1722e2c0b727d3a637bf9f..a1f13c54b7ded4b10fb4e6bd82a384d13446b62f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { @@ -206,7 +206,7 @@ index 3fe751839e4a1bc266b0d9508e1e3384e8f7f41e..c91ade7f4b1f04f12e38cf2c5fda1a92 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 e91f950b64f80fb86795c570f7f119c159315472..632041e2804f98a1954cf1268c6fd0427696d4a3 100644 +index 0d5cc20029e1876b79927a89716e2ecc144791e3..20eb69e7d944b74a84570d23947e7e2a75d63f8d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -151,6 +151,11 @@ public class Panda extends Animal { @@ -411,7 +411,7 @@ index bbecb3894d0f4a24442e8833f4d828e6173287da..f79dff635b09300f8d2cff0562f71587 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index c217a4b78eb53af8b8c011bfabbbddcc31c88df4..8aae4bda1c39853c972bf17cd2ed5b940ef7ba27 100644 +index 9c71a3f88494d34ae02fd024f641a7af608f63fd..98721f3d2ed8e660f3afdbdc59fef93fb7d377af 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -125,6 +125,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 46fec497e411e3160d9ae9553ae52654d10a9dd3..63c0f86469182de482b04a27741e4b6fe29f0e79 100644 +index 6d7b5cf3db81c4e42dda17757125d4a1c83c8c59..e118cfc34b05f6d4921a0903eca70be6b68bff4f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -141,6 +141,11 @@ public class Zombie extends Monster { @@ -1085,7 +1085,7 @@ index 46fec497e411e3160d9ae9553ae52654d10a9dd3..63c0f86469182de482b04a27741e4b6f protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 01f6b7eb50870f9bcac9bbd3b6a87382d6aa1f1b..5933bff2db353644705f5e1cfec3b0f2dedbad87 100644 +index b71c47c275a3726eb5028c9524013ebc608a21ea..135ce8822ed7e3d6182755deca37a2c0531960c6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -109,6 +109,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1165,7 +1165,7 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 7fcf3cf145828b610dec15dcc2cf469a48de9317..2215bd386a617996095f24192f05825d0201b2ec 100644 +index 339918b33e825f20a174981c9d5fbda95f4706e7..54897b889d053b8752fb4a4f5664e39c6a8954d3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1181,7 +1181,7 @@ index 7fcf3cf145828b610dec15dcc2cf469a48de9317..2215bd386a617996095f24192f05825d public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 31daa61db84fcb3cde7ec4b18b32aba350ab2cfb..502ff11b909537f98339d3bef49f324e69d2f0fe 100644 +index ad7a32169b0decad1d3a2bd98e25b07731a33d03..5a373ba4d9e404c064bc158718d02c0cd2aca548 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -97,6 +97,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1197,7 +1197,7 @@ index 31daa61db84fcb3cde7ec4b18b32aba350ab2cfb..502ff11b909537f98339d3bef49f324e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c1eec6135 100644 +index 7d576796981ce7b6a292499ed755d86c86bf51db..e8d642f0bffb2a12b91b125d3f0536d76fd285e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -568,11 +568,13 @@ public class PurpurWorldConfig { @@ -1978,16 +1978,16 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c + skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); } - public boolean skeletonHorseRidableInWater = true; -@@ -1640,6 +1740,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -1641,6 +1741,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; + public boolean skeletonHorseTakeDamageFromWater = false; private void skeletonHorseSettings() { + skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); - skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1655,6 +1756,7 @@ public class PurpurWorldConfig { +@@ -1657,6 +1758,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean slimeRidable = false; -@@ -1664,6 +1766,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1768,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1677,6 +1780,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1782,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean snowGolemRidable = false; -@@ -1691,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1693,6 +1797,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1709,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1816,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean snifferRidable = false; -@@ -1730,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1838,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1742,12 +1849,14 @@ public class PurpurWorldConfig { +@@ -1744,12 +1851,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1758,12 +1867,14 @@ public class PurpurWorldConfig { +@@ -1760,12 +1869,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1774,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1776,6 +1887,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean striderRidable = false; -@@ -1782,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1896,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1794,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1796,6 +1909,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean tadpoleRidable = false; -@@ -1815,6 +1929,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1931,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1833,11 +1948,13 @@ public class PurpurWorldConfig { +@@ -1835,11 +1950,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1847,6 +1964,7 @@ public class PurpurWorldConfig { +@@ -1849,6 +1966,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean turtleRidable = false; -@@ -1854,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1974,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1865,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1986,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean vexRidable = false; -@@ -1872,6 +1992,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +1994,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1883,6 +2004,7 @@ public class PurpurWorldConfig { +@@ -1885,6 +2006,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean villagerRidable = false; -@@ -1896,6 +2018,7 @@ public class PurpurWorldConfig { +@@ -1898,6 +2020,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1913,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1915,6 +2038,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean vindicatorRidable = false; -@@ -1920,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +2046,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1931,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -1933,6 +2058,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wanderingTraderRidable = false; -@@ -1939,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2067,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1951,6 +2078,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +2080,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wardenRidable = false; -@@ -1966,6 +2094,7 @@ public class PurpurWorldConfig { +@@ -1968,6 +2096,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1976,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2107,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean witherRidable = false; -@@ -1986,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2118,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2004,12 +2135,14 @@ public class PurpurWorldConfig { +@@ -2006,12 +2137,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2020,6 +2153,7 @@ public class PurpurWorldConfig { +@@ -2022,6 +2155,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wolfRidable = false; -@@ -2030,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2166,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2048,12 +2183,14 @@ public class PurpurWorldConfig { +@@ -2050,12 +2185,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2064,6 +2201,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2203,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombieRidable = false; -@@ -2076,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2216,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,23 +2285,23 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2092,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2094,6 +2233,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); + zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); } - public boolean zombieHorseRidableInWater = false; -@@ -2103,6 +2243,7 @@ public class PurpurWorldConfig { + public boolean zombieHorseRidable = false; +@@ -2106,6 +2246,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; + public boolean zombieHorseTakeDamageFromWater = false; private void zombieHorseSettings() { + zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); - zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2119,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2264,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombieVillagerRidable = false; -@@ -2129,6 +2271,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2275,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2143,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2290,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombifiedPiglinRidable = false; -@@ -2154,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2302,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2169,5 +2314,6 @@ public class PurpurWorldConfig { +@@ -2173,5 +2318,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index f9596e176..4ec09566e 100644 --- a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 1588c4ec1ff1d9f1eca8b6c7971a2cdd1f98efb3..82d81fd2edff9df0bb4ff116d9274887a316d0a8 100644 +index 20aa7cdf10284c14a2d623aefb061b6197d66d27..d706a20583d24fbd739a680538ba3324b4200d94 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -1187,6 +1187,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -29,7 +29,7 @@ index 76f88b96e4965e61a620d8e8809411a0711bf02e..8d882e6ef4e199258866f30f5548a6fe } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a522bb29ba 100644 +index f7ca9e256524e1b080631d7cda5ed80edeeaf73b..1af0f19760426f108d32d202b087323d0ef60845 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a5 } public boolean endermanRidable = false; -@@ -2156,6 +2158,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2160,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a5 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2175,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0145-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch index 2edc663a1..b4c1fdee3 100644 --- a/patches/server/0145-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config for villager trading 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 2215bd386a617996095f24192f05825d0201b2ec..c7047bacce4851956e3732f0a73be423cc46ee54 100644 +index 54897b889d053b8752fb4a4f5664e39c6a8954d3..28d940393f387387fa0a2b0dea8de24324e2e55e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,7 +18,7 @@ index 2215bd386a617996095f24192f05825d0201b2ec..c7047bacce4851956e3732f0a73be423 } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 502ff11b909537f98339d3bef49f324e69d2f0fe..bb18a29281df797e05d828caed0a604329209cba 100644 +index 5a373ba4d9e404c064bc158718d02c0cd2aca548..d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -153,7 +153,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -31,10 +31,10 @@ index 502ff11b909537f98339d3bef49f324e69d2f0fe..bb18a29281df797e05d828caed0a6043 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6fb581ce27 100644 +index bed3d00422b914c99c3e598a392543e84f58df61..fce3d4c4af444860c72b5058fcd7276838299f89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2123,6 +2123,7 @@ public class PurpurWorldConfig { +@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2141,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2144,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f } public boolean vindicatorRidable = false; -@@ -2170,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2174,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2183,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2185,6 +2188,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch index 623482c4d..95b9c519a 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0158-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index f40ab9d5b18c189ba9b572e49243640bd44362d1..b4687453256ead43cf5288994316c7bf if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b71f78d71d88e051cb12bf1cf09abb909a4d0465..714e605d56a35c69c057fa810e6a18649cb8cba0 100644 +index 18143874afd0fb7b6fdc7f1471368bced0dc39d5..fa3d2dbea60d7d40e30d7c8205c97f3a44b6f948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2290,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2292,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index b71f78d71d88e051cb12bf1cf09abb909a4d0465..714e605d56a35c69c057fa810e6a1864 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2310,6 +2311,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2313,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0186-Configurable-hunger-starvation-damage.patch b/patches/server/0186-Configurable-hunger-starvation-damage.patch index 70fe518bd..2f1327761 100644 --- a/patches/server/0186-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0186-Configurable-hunger-starvation-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable hunger starvation damage diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java -index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be942e70261 100644 +index 2840c0b16d9b8147703f34bac5a8aa21f82e6e44..e8079d126e6c0cf0b15c01afb6498922ee05964c 100644 --- a/src/main/java/net/minecraft/world/food/FoodData.java +++ b/src/main/java/net/minecraft/world/food/FoodData.java @@ -102,7 +102,7 @@ public class FoodData { @@ -18,10 +18,10 @@ index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be9 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e49cd59e4fc687c9365d722f12948378e29b9327..9061a6819cbe7d9da35ff5f8fd8c49bb1128d346 100644 +index 111cba29dfd34d3953f65846bb0c453033e80113..0152466a72847518a4b76616aa98694378c24104 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2583,4 +2583,9 @@ public class PurpurWorldConfig { +@@ -2587,4 +2587,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch index 3c025c5b7..36a60560d 100644 --- a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizeable Zombie Villager curing times 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 5933bff2db353644705f5e1cfec3b0f2dedbad87..ecf41531855e1f60d9739ac6d2d82df7794f072f 100644 +index 135ce8822ed7e3d6182755deca37a2c0531960c6..6a85de8af9b260e92b4ccffa2ae3503cd29b0b98 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -221,7 +221,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index 5933bff2db353644705f5e1cfec3b0f2dedbad87..ecf41531855e1f60d9739ac6d2d82df7 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8cece9543a87ac86a8320fef4a23b39dbc76ab5c..b2f365ab51b56a83ed7ea67c921c163c3511b834 100644 +index b74734549b55ac08f67496b455b62bf65ae21ffa..78b57bf24e0ec6a4e5e4e1f56deb62480e8fd467 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2770,6 +2770,8 @@ public class PurpurWorldConfig { +@@ -2774,6 +2774,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 8cece9543a87ac86a8320fef4a23b39dbc76ab5c..b2f365ab51b56a83ed7ea67c921c163c private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2785,6 +2787,8 @@ public class PurpurWorldConfig { +@@ -2789,6 +2791,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch index d771ca331..ba9f0efda 100644 --- a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0e // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13aa8ae8f33834793adf18c12541c2ecd2d0699f..7670e4e1291e8c48b960ee44977d4850b470a81e 100644 +index 9a1b71bf2d33ba979dbfbc17b178cf6f40755ea5..06566fb9555c34718dad810b06c53d1020671f82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2617,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2619,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 13aa8ae8f33834793adf18c12541c2ecd2d0699f..7670e4e1291e8c48b960ee44977d4850 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2638,6 +2639,7 @@ public class PurpurWorldConfig { +@@ -2640,6 +2641,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0205-Conduit-behavior-configuration.patch b/patches/server/0205-Conduit-behavior-configuration.patch index d9255aa2c..6add5b67a 100644 --- a/patches/server/0205-Conduit-behavior-configuration.patch +++ b/patches/server/0205-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f64c758f51134e8102ca4092bc313eefd346d211..5fd3e6bab03a2adcb776720b242c902b1330779e 100644 +index 1de902f3efaa1b685e6a38eff2b5838f7ff32f8c..a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2836,4 +2836,27 @@ public class PurpurWorldConfig { +@@ -2840,4 +2840,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0206-Cauldron-fill-chances.patch b/patches/server/0206-Cauldron-fill-chances.patch index dfe78e80d..b82984265 100644 --- a/patches/server/0206-Cauldron-fill-chances.patch +++ b/patches/server/0206-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fd3e6bab03a2adcb776720b242c902b1330779e..909e6bb2781637e5f4c2525371de2ad0b5524afe 100644 +index a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974..86306d03a4212bca0dbe990cf9f6a3854c1f55e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2859,4 +2859,15 @@ public class PurpurWorldConfig { +@@ -2863,4 +2863,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch index 46f05ff4b..35f8d25f6 100644 --- a/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie villagers cure 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 ecf41531855e1f60d9739ac6d2d82df7794f072f..4bac02d30ec28ea0bce069f0f915b660b99b122d 100644 +index 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b19974e37cb85 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -215,7 +215,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index ecf41531855e1f60d9739ac6d2d82df7794f072f..4bac02d30ec28ea0bce069f0f915b660 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51350d67992bba19be24bfbc75968cae29ca5d98..cbf30293766899b7aa66dc922ba76395feca1094 100644 +index f93992b7ae14d0e3dc5bfc3036e40cba2a0c89c9..48b21a71c25974668600cee9437cc8214f47b906 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2836,6 +2836,7 @@ public class PurpurWorldConfig { +@@ -2840,6 +2840,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 51350d67992bba19be24bfbc75968cae29ca5d98..cbf30293766899b7aa66dc922ba76395 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2853,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2857,6 +2858,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0226-Mobs-always-drop-experience.patch b/patches/server/0226-Mobs-always-drop-experience.patch index dddf1ca3b..74bcf2133 100644 --- a/patches/server/0226-Mobs-always-drop-experience.patch +++ b/patches/server/0226-Mobs-always-drop-experience.patch @@ -117,7 +117,7 @@ index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 b6342637f1b42b6368dcda17eea4b39a22ec3b79..4c9c07d470357c35bd5ba3c21437a2c44c52811e 100644 +index 9a1e9a69adf97ab92d9df817716750b7da6e6742..1807c7bac6f5012da8130dd41edeb9dd4df32a47 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -169,6 +169,11 @@ public class Dolphin extends WaterAnimal { @@ -133,7 +133,7 @@ index b6342637f1b42b6368dcda17eea4b39a22ec3b79..4c9c07d470357c35bd5ba3c21437a2c4 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 7bd1177b58bd5ecc5659266eece39a49ec08ffa9..39c982f83a8b5b0787fc8dd48a0c11e5ad452bb0 100644 +index a1f13c54b7ded4b10fb4e6bd82a384d13446b62f..075554f28dab5809d0f2d346bad40efc16b38371 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { @@ -197,7 +197,7 @@ index c91ade7f4b1f04f12e38cf2c5fda1a92b129bec8..af275fc579d66bb098c08e88e4186846 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 632041e2804f98a1954cf1268c6fd0427696d4a3..505469cf6b7fa66c6cbac73a49e4eec850d5bfec 100644 +index 20eb69e7d944b74a84570d23947e7e2a75d63f8d..97c38b72b998bdf397c72d3ea08fd93186585f30 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -156,6 +156,11 @@ public class Panda extends Animal { @@ -405,7 +405,7 @@ index 6b51886e383992f35e0313bd9cc012354190a87d..5d49ed7ddf44a3d549b178ae54866419 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 8aae4bda1c39853c972bf17cd2ed5b940ef7ba27..7223528b4fb2885e0f6c0df2238cada16dbed35e 100644 +index 98721f3d2ed8e660f3afdbdc59fef93fb7d377af..89e473aadb1ab0bd802e7f74a77cce09578320d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -130,6 +130,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 79f791188a14a319a19b55674c891384fcb750c9..3f00634dd8d426f4578a3d6362f7a52f57e09d3b 100644 +index c95d76c696d9ee39e284e7798bf624d339c98799..1be1bfb831198b68d8e20bf5ff922edff8832114 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,11 @@ public class Zombie extends Monster { @@ -1045,7 +1045,7 @@ index 79f791188a14a319a19b55674c891384fcb750c9..3f00634dd8d426f4578a3d6362f7a52f protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 4bac02d30ec28ea0bce069f0f915b660b99b122d..858bf64d951ae48421ceb2f9b62de9397ffb4dc3 100644 +index faf03e2c69b6b4ee7d7425322b5b19974e37cb85..4d744e00bbaf25d1bad3782a6415e9bf5958e536 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1125,7 +1125,7 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 04ccb0562e01ea5b9fcc4a14346fb0767ae44639..1ad37f05e37551c72f780c56ff0c01ccc4907ed4 100644 +index 6146f3e52eb1d8f47b5a41eff634d2c7cc24c26f..093b10bec1212d47f05e1270302436290cbd282e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1141,7 +1141,7 @@ index 04ccb0562e01ea5b9fcc4a14346fb0767ae44639..1ad37f05e37551c72f780c56ff0c01cc public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index bb18a29281df797e05d828caed0a604329209cba..6986fcbe67e55c4942d13b2af39bd6293bf993a9 100644 +index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f81768c80fd3d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -102,6 +102,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1157,7 +1157,7 @@ index bb18a29281df797e05d828caed0a604329209cba..6986fcbe67e55c4942d13b2af39bd629 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e465c3143e 100644 +index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637151f81b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1044,12 +1044,14 @@ public class PurpurWorldConfig { @@ -1936,16 +1936,16 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 + skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); } - public boolean skeletonHorseRidableInWater = true; -@@ -2300,6 +2398,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -2301,6 +2399,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; + public boolean skeletonHorseAlwaysDropExp = false; private void skeletonHorseSettings() { + skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); - skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2316,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2417,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean slimeRidable = false; -@@ -2326,6 +2426,7 @@ public class PurpurWorldConfig { +@@ -2328,6 +2428,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2340,6 +2441,7 @@ public class PurpurWorldConfig { +@@ -2342,6 +2443,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean snowGolemRidable = false; -@@ -2355,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2459,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2374,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2376,6 +2479,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean snifferRidable = false; -@@ -2396,6 +2500,7 @@ public class PurpurWorldConfig { +@@ -2398,6 +2502,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2409,6 +2514,7 @@ public class PurpurWorldConfig { +@@ -2411,6 +2516,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean spiderRidable = false; -@@ -2416,6 +2522,7 @@ public class PurpurWorldConfig { +@@ -2418,6 +2524,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2427,6 +2534,7 @@ public class PurpurWorldConfig { +@@ -2429,6 +2536,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean strayRidable = false; -@@ -2434,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2436,6 +2544,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2445,6 +2554,7 @@ public class PurpurWorldConfig { +@@ -2447,6 +2556,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean striderRidable = false; -@@ -2454,6 +2564,7 @@ public class PurpurWorldConfig { +@@ -2456,6 +2566,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2467,6 +2578,7 @@ public class PurpurWorldConfig { +@@ -2469,6 +2580,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean tadpoleRidable = false; -@@ -2489,6 +2601,7 @@ public class PurpurWorldConfig { +@@ -2491,6 +2603,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2508,12 +2621,14 @@ public class PurpurWorldConfig { +@@ -2510,12 +2623,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2524,6 +2639,7 @@ public class PurpurWorldConfig { +@@ -2526,6 +2641,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean turtleRidable = false; -@@ -2532,6 +2648,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2650,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2544,6 +2661,7 @@ public class PurpurWorldConfig { +@@ -2546,6 +2663,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean vexRidable = false; -@@ -2552,6 +2670,7 @@ public class PurpurWorldConfig { +@@ -2554,6 +2672,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2564,6 +2683,7 @@ public class PurpurWorldConfig { +@@ -2566,6 +2685,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean villagerRidable = false; -@@ -2579,6 +2699,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2701,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2598,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2600,6 +2721,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean vindicatorRidable = false; -@@ -2606,6 +2728,7 @@ public class PurpurWorldConfig { +@@ -2608,6 +2730,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2618,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2620,6 +2743,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wanderingTraderRidable = false; -@@ -2628,6 +2752,7 @@ public class PurpurWorldConfig { +@@ -2630,6 +2754,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2642,6 +2767,7 @@ public class PurpurWorldConfig { +@@ -2644,6 +2769,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wardenRidable = false; -@@ -2658,6 +2784,7 @@ public class PurpurWorldConfig { +@@ -2660,6 +2786,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2669,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2671,6 +2798,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean witherRidable = false; -@@ -2683,6 +2811,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2813,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2705,6 +2834,7 @@ public class PurpurWorldConfig { +@@ -2707,6 +2836,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean witherSkeletonRidable = false; -@@ -2712,6 +2842,7 @@ public class PurpurWorldConfig { +@@ -2714,6 +2844,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2723,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2856,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wolfRidable = false; -@@ -2734,6 +2866,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2868,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2753,6 +2886,7 @@ public class PurpurWorldConfig { +@@ -2755,6 +2888,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zoglinRidable = false; -@@ -2760,6 +2894,7 @@ public class PurpurWorldConfig { +@@ -2762,6 +2896,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2771,6 +2906,7 @@ public class PurpurWorldConfig { +@@ -2773,6 +2908,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombieRidable = false; -@@ -2784,6 +2920,7 @@ public class PurpurWorldConfig { +@@ -2786,6 +2922,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,23 +2248,23 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2801,6 +2938,7 @@ public class PurpurWorldConfig { +@@ -2803,6 +2940,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); + zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); } - public boolean zombieHorseRidableInWater = false; -@@ -2813,6 +2951,7 @@ public class PurpurWorldConfig { + public boolean zombieHorseRidable = false; +@@ -2816,6 +2954,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; + public boolean zombieHorseAlwaysDropExp = false; private void zombieHorseSettings() { + zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); - zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2830,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2834,6 +2973,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombieVillagerRidable = false; -@@ -2844,6 +2984,7 @@ public class PurpurWorldConfig { +@@ -2848,6 +2988,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2862,6 +3003,7 @@ public class PurpurWorldConfig { +@@ -2866,6 +3007,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombifiedPiglinRidable = false; -@@ -2874,6 +3016,7 @@ public class PurpurWorldConfig { +@@ -2878,6 +3020,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2890,6 +3033,7 @@ public class PurpurWorldConfig { +@@ -2894,6 +3037,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0232-Mob-head-visibility-percent.patch b/patches/server/0232-Mob-head-visibility-percent.patch index 29b22fe15..7073f012e 100644 --- a/patches/server/0232-Mob-head-visibility-percent.patch +++ b/patches/server/0232-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cf997f8811aacd32946d81de87b1683910374e42..7a5b7e2d50c98774d8bc50a9c83d15a67996fc90 100644 +index 619a475f7a7869ddde87c47950c0dfbe7048d9d6..73fed7fb7cc9e38ebf111a365d25ee91657668e1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,7 +32,7 @@ index cf997f8811aacd32946d81de87b1683910374e42..7a5b7e2d50c98774d8bc50a9c83d15a6 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953cacbf178 100644 +index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e2fb28133 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1305,6 +1305,7 @@ public class PurpurWorldConfig { @@ -82,8 +82,8 @@ index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953 + skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); } - public boolean skeletonHorseRidableInWater = true; -@@ -2929,6 +2935,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -2931,6 +2937,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,11 +91,11 @@ index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2947,6 +2954,7 @@ public class PurpurWorldConfig { +@@ -2949,6 +2956,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); + zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0243-Configurable-minimum-demand-for-trades.patch b/patches/server/0243-Configurable-minimum-demand-for-trades.patch index 5b7a62303..993d75613 100644 --- a/patches/server/0243-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0243-Configurable-minimum-demand-for-trades.patch @@ -9,7 +9,7 @@ This patch adds a config option to allow the minimum demand to instead be configurable. 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 1ad37f05e37551c72f780c56ff0c01ccc4907ed4..54c96e3e2a0b7efe082a0cb48492c0605d0db51b 100644 +index 093b10bec1212d47f05e1270302436290cbd282e..b2aa0ff2f07590e8832098d6dea027f1d3d20026 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -546,7 +546,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 807ca55a5734fccb10b1aae2d99e0b37aeffc614..321c625b1374e1a5676459d33f071d62ad45437b 100644 +index 65a2db407937c887f00bdc7cc8a84b5eba8e0df5..8517c0b219ccd3cbeb457d8d244534efec89c9a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2731,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2733,6 +2733,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 807ca55a5734fccb10b1aae2d99e0b37aeffc614..321c625b1374e1a5676459d33f071d62 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2751,6 +2752,7 @@ public class PurpurWorldConfig { +@@ -2753,6 +2754,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0244-Lobotomize-stuck-villagers.patch b/patches/server/0244-Lobotomize-stuck-villagers.patch index 45e66ed8e..477fe7a60 100644 --- a/patches/server/0244-Lobotomize-stuck-villagers.patch +++ b/patches/server/0244-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers 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 54c96e3e2a0b7efe082a0cb48492c0605d0db51b..6760c9cc9ee244b7adca379d7e34696c48b65dbf 100644 +index b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287adffc11b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -93,7 +93,7 @@ index 54c96e3e2a0b7efe082a0cb48492c0605d0db51b..6760c9cc9ee244b7adca379d7e34696c if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d35ab1604e 100644 +index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -252,4 +252,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { @@ -109,10 +109,10 @@ index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d3 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 321c625b1374e1a5676459d33f071d62ad45437b..3fa481c71331a19b58511392a840f47915639ce2 100644 +index 8517c0b219ccd3cbeb457d8d244534efec89c9a1..b123c0505ab3924258aa7ed32262c0b6e99d0ec0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2732,6 +2732,8 @@ public class PurpurWorldConfig { +@@ -2734,6 +2734,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -121,7 +121,7 @@ index 321c625b1374e1a5676459d33f071d62ad45437b..3fa481c71331a19b58511392a840f479 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2753,6 +2755,17 @@ public class PurpurWorldConfig { +@@ -2755,6 +2757,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0245-Option-for-villager-display-trade-item.patch b/patches/server/0245-Option-for-villager-display-trade-item.patch index 98e7dfb00..c0108782f 100644 --- a/patches/server/0245-Option-for-villager-display-trade-item.patch +++ b/patches/server/0245-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fa481c71331a19b58511392a840f47915639ce2..38d13eb230cfb33a450b8a9a1a3c6aa2efe5b053 100644 +index b123c0505ab3924258aa7ed32262c0b6e99d0ec0..0786e51fa84f0b4e8661c1ea9c76b0a7c00648dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2734,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2736,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 3fa481c71331a19b58511392a840f47915639ce2..38d13eb230cfb33a450b8a9a1a3c6aa2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2766,6 +2767,7 @@ public class PurpurWorldConfig { +@@ -2768,6 +2769,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch index 8838fe09e..0aa265a28 100644 --- a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 6760c9cc9ee244b7adca379d7e34696c48b65dbf..9682676aa68cf5927facd60ef061006579c1f893 100644 +index 3ec73049c8b681d2ff7f63623037e287adffc11b..c889e5e0ba42eac860d25c76e5956471eb29be7e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -1101,6 +1101,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,10 +18,10 @@ index 6760c9cc9ee244b7adca379d7e34696c48b65dbf..9682676aa68cf5927facd60ef0610065 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce4f8f9661c6c0d09fa517861aae80559859f09f..b964bad8d599e093ad312a9dedf1a33856ce9ec1 100644 +index ecda4d9dcfb38189bb579b93f67047d5d0d00ae1..40bda43c2acbf41eb55cd358307dfd4c3e2c281a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2745,6 +2745,8 @@ public class PurpurWorldConfig { +@@ -2747,6 +2747,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index ce4f8f9661c6c0d09fa517861aae80559859f09f..b964bad8d599e093ad312a9dedf1a338 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2778,6 +2780,8 @@ public class PurpurWorldConfig { +@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0256-Skeletons-eat-wither-roses.patch b/patches/server/0256-Skeletons-eat-wither-roses.patch index cf22f9748..e53b7b39a 100644 --- a/patches/server/0256-Skeletons-eat-wither-roses.patch +++ b/patches/server/0256-Skeletons-eat-wither-roses.patch @@ -94,7 +94,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea082eed28b9d63514291a094ebd99b8670e7910..40f127476d96b39ac107cb1d18dd08798612c952 100644 +index 4076b32e2e35165634b6d328ffa3ab692f8c854f..9ee1258955e99fa0adacfdc56b8621a2dfee064b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2429,6 +2429,7 @@ public class PurpurWorldConfig { @@ -112,4 +112,4 @@ index ea082eed28b9d63514291a094ebd99b8670e7910..40f127476d96b39ac107cb1d18dd0879 + skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); } - public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseRidable = false; diff --git a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch b/patches/server/0272-Add-skeleton-bow-accuracy-option.patch index 887b8ab1a..8358207f3 100644 --- a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0272-Add-skeleton-bow-accuracy-option.patch @@ -18,7 +18,7 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71d2da21e1dcf5991f9161b3fcad66247a5a4991..86340e782bbc125ec672eea855de29f90ac127de 100644 +index 9df11e164f6aaa13c2ad50717cfc42b8c4c8c6e7..712e9b87442e0eeb05993e6589123d756d875518 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2449,6 +2449,8 @@ public class PurpurWorldConfig { @@ -48,4 +48,4 @@ index 71d2da21e1dcf5991f9161b3fcad66247a5a4991..86340e782bbc125ec672eea855de29f9 + } } - public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseRidable = false; diff --git a/patches/server/0300-Shears-can-defuse-TNT.patch b/patches/server/0300-Shears-can-defuse-TNT.patch index 2fd4164b0..154157dd0 100644 --- a/patches/server/0300-Shears-can-defuse-TNT.patch +++ b/patches/server/0300-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed3 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7a794ce230c481e39436506facdb77726f96199..ec7c1b39a87f253c52de4d0f3b01e8329aaa723a 100644 +index 5019942bbbabef9a73f34d3b3c84c7c6f2a014b1..469aa0c5d2080394f0a9cbbb3891f0de36da72a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3219,4 +3219,11 @@ public class PurpurWorldConfig { +@@ -3223,4 +3223,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } From 4b1a082c94ebc090bbc74b9230e4f43075090a29 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 18 Nov 2023 23:40:16 -0800 Subject: [PATCH 011/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ce7f068 Correct typo in javadoc (#9944) PaperMC/Paper@0a8c873 Call LivingEntity#onItemPickup before mutation (#9948) PaperMC/Paper@e5274ee Fix spawners checking max nearby entities with correct type (#8945) PaperMC/Paper@39dee1a More paper config cleanup (#9938) PaperMC/Paper@581c743 Add API to retrieve an attribute modifier from a UUID (#9924) PaperMC/Paper@8611796 Fix missing event call for entity teleport API (#9937) PaperMC/Paper@250388d add getAdvancementProgress() to PlayerAdvancementCriterionGrantEvent (#9865) --- gradle.properties | 2 +- patches/server/0008-Ridables.patch | 6 +++--- patches/server/0077-Redstone-deactivates-spawners.patch | 6 +++--- ...d-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index f37c1671a..e93c38c8e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = f186318a91cbd3b2a2259d39cb88576989a496b8 +paperCommit = 250388defed6660c57f40733c318ac90b846c264 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index f30c7e675..2d762d46f 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index ef14f47cec00ffaf1ac683964d3d1831dae9bcdb..be7508a527a55ada0f769588db024f99 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ee0403e18b484b85c92aca76faf977c013bfdfe0..f7a19cdc38feb0dcee3e3cf42610a0604f9f4672 100644 +index 8aab01170fb512d98103935a19e468a145a6bb16..5d20509fd92969ed05f1044290650880fd4a663e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -5191,10 +5191,10 @@ index 06d1bdb9bd124b201c36d284c50d22bf50d3735a..937f57d8af629c4e913d7ccabf6adab1 public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 0e6c7284b9aee6c5f2454a3a095ebf349f887740..88e226431bd84747b9fadd68f273432a9efd766e 100644 +index 9f843b89dc20b91bf7243facee8486d525e4a1b3..4c5d6e37f7d56436119278bbfad503867d9ccddb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1527,4 +1527,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1538,4 +1538,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name diff --git a/patches/server/0077-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch index b41ab812c..ce03b99d6 100644 --- a/patches/server/0077-Redstone-deactivates-spawners.patch +++ b/patches/server/0077-Redstone-deactivates-spawners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Redstone deactivates spawners diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java -index 633500aefd515df5dadda3802b94079f75a03fa0..64d911bee1607880514061c75116d8672df8bb8f 100644 +index 1279132e2fb3e8f64f062df0ac8b8197f9d8f343..fb933cc388acf26cebe1da692b9c5dd165f797ee 100644 --- a/src/main/java/net/minecraft/world/level/BaseSpawner.java +++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java -@@ -55,6 +55,7 @@ public abstract class BaseSpawner { +@@ -71,6 +71,7 @@ public abstract class BaseSpawner { } public boolean isNearPlayer(Level world, BlockPos pos) { @@ -17,7 +17,7 @@ index 633500aefd515df5dadda3802b94079f75a03fa0..64d911bee1607880514061c75116d867 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9cd4d38da512f209db7196f632031d51acc5947c..669454dd9ad60116b664f4432f4fef9662ba170c 100644 +index 51dd20665e5cdf1e76a63367d75890d4ae8f55b6..8f085e8ba40d3bd9fca27b18b9ee156bbffe6bc3 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/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 462263f28..ead8bf953 100644 --- a/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 5c13e376dd079134da465044f1057bcce66973a3..8f10ced20d7cdb7020f032c9e37d9bbb38f360d6 100644 +index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddbb5fbbcc5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -597,20 +597,33 @@ public class PiglinAi { +@@ -598,20 +598,33 @@ public class PiglinAi { Iterator iterator = iterable.iterator(); Item item; @@ -45,7 +45,7 @@ index 5c13e376dd079134da465044f1057bcce66973a3..8f10ced20d7cdb7020f032c9e37d9bbb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39236dc4d7c70edff091bb1df54b2158e6dd5e2c..cd7f347e46f4fa08e291bfdbbb01ea4f3271a877 100644 +index bb5b1acf54f8347ef19c50f50bc6e9ff90fa87f5..cc9aa6b7a76b1d993f0e3eb3d8e9374fffd87176 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2205,6 +2205,7 @@ public class PurpurWorldConfig { From c46cb7ef66675e00a48e20c40febed7ff914f35d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 26 Nov 2023 22:27:27 -0800 Subject: [PATCH 012/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@eda3d53 [ci skip] Improve PlayerChatEvent Deprecation Message (#9956) PaperMC/Paper@e1cd9e5 Update paperweight to 1.5.10 and Gradle to 8.4 (#9957) PaperMC/Paper@96d5e6c Code Generation for TypedKeys (#9233) PaperMC/Paper@ed753d3 Re-add missing vanilla safeMode arg PaperMC/Paper@334b2f2 Fix max nearby entities class check (#9967) PaperMC/Paper@faa2f47 Lazily create LootContext for criterions (#9969) PaperMC/Paper@8280211 Fix yaw being ignored for first spawn pos (#9959) PaperMC/Paper@8eac3e1 Don't fire EntityPotionEffectEvent during worldgen (#9965) PaperMC/Paper@0b20f94 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9953) PaperMC/Paper@f9938d3 Fix plugin bootstrap dependency tree population (#9963) PaperMC/Paper@b37bbcf Use ? super in Consumer/Predicate API (#9939) --- build.gradle.kts | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 61608 -> 63721 bytes gradle/wrapper/gradle-wrapper.properties | 3 ++- gradlew | 15 ++++++++---- patches/api/0001-Pufferfish-API-Changes.patch | 8 +++---- patches/api/0004-Build-System-Changes.patch | 4 ++-- patches/api/0005-Purpur-client-support.patch | 4 ++-- patches/api/0010-AFK-API.patch | 4 ++-- .../api/0041-Add-local-difficulty-api.patch | 4 ++-- patches/api/0044-Debug-Marker-API.patch | 12 +++++----- patches/api/0045-Add-death-screen-API.patch | 4 ++-- .../0001-Pufferfish-Server-Changes.patch | 12 +++++----- patches/server/0004-Purpur-config-files.patch | 8 +++---- .../server/0005-Purpur-client-support.patch | 6 ++--- patches/server/0008-Ridables.patch | 12 +++++----- patches/server/0012-AFK-API.patch | 8 +++---- .../0015-LivingEntity-safeFallDistance.patch | 6 ++--- .../0023-Disable-outdated-build-check.patch | 4 ++-- ...able-loot-drops-on-death-by-cramming.patch | 8 +++---- ...urable-void-damage-height-and-damage.patch | 8 +++---- .../0060-Implement-elytra-settings.patch | 6 ++--- .../0078-Totems-work-in-inventory.patch | 6 ++--- ...iefing-bypass-to-everything-affected.patch | 4 ++-- ...0124-Add-EntityTeleportHinderedEvent.patch | 8 +++---- patches/server/0133-One-Punch-Man.patch | 6 ++--- ...174-API-for-any-mob-to-burn-daylight.patch | 8 +++---- .../0198-Toggle-for-kinetic-damage.patch | 6 ++--- .../0209-Extended-OfflinePlayer-API.patch | 6 ++--- ...fig-for-mob-last-hurt-by-player-time.patch | 8 +++---- .../0262-Add-local-difficulty-api.patch | 4 ++-- .../server/0267-Remove-Mojang-Profiler.patch | 22 +++++++++--------- patches/server/0270-Debug-Marker-API.patch | 10 ++++---- .../server/0274-Add-death-screen-API.patch | 4 ++-- ...5-Make-pufferfish-config-relocatable.patch | 6 ++--- 35 files changed, 122 insertions(+), 116 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7aa96ce90..62e42d678 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.9" + id("io.papermc.paperweight.patcher") version "1.5.10" } allprojects { diff --git a/gradle.properties b/gradle.properties index e93c38c8e..5f1c93763 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = 250388defed6660c57f40733c318ac90b846c264 +paperCommit = b37bbcfd984a325c47d6dee200634b5fa189c64b org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba7710deaf9f98673a68957ea02138b60d0a..7f93135c49b765f8051ef9d0a6055ff8e46073d8 100644 GIT binary patch delta 38440 zcmZ6SQ*<3%6s?oSw$a$O+t{{kpWwtNwr$(CZL_f&H8y*DImUnA_rrded+oL6w`Tc1 z#Mv!G{V@^ba0IDo(ixEwh?a02n}!DKIvnc^%1aoMq1+#kAhJLP_oX|jgEPsr;V`0k zL+b-2$5Bo(3c}Buz&-hcO_SO<6900dXYt$Ter6+Mad;kQkW8)Rc`!+|ia-jh^V%qoFb5JQ`

cw$=gQbRBDL9uPo|6z1d&0P$^g)iXXq+aG z!TDoXPDJupv0Ph%%-$NJB$S*LH3Pj-EMdD`^o@l9JuD9pr?_DZoCP&%ipHzPybh{p zrtwXlO?7IzUEJYjV*z1IMJAc^TVcT#aJCR5sh_J*AgM{aL(JnfKKDlvti|)rcg$yR> zFZY!7AP{l1!V<|AO7dcVC$a;d#(osjC65jwf6;m;>++|PEYd&my^0!s~Q>DmRKZN~jp{~ON52%b=q z9ZhEnQes`_LM8(XXSsI$^djEl)Gsh4SqMl>FfdqHFfcG-unjH*zN8pZVbEU%3}Mu< zK5xbz0Aq7G$yY7xH_bgTEb-`wy|{Qa4&f}RLJR9TfY&zrrsyr256<6sG0KHun45y= zrnRE%=A-^}sxJ1Xro4=eoXxMd&rfQ9?JbUc)8(J|rrQ)T7c}@%CX4-;3`9$O7PxF! zbp|JeI)LCA7PULGnM!E`H;{eR0pF@A6M?&%^_*n@soNAv(4M|!WzdvUGqGgPoF5`;C7G@DLC3l8yzd>B3}JjlDB z3x`&ah?|Q|rq9}QK_f`h>~h2v;CNKAfG5NzNk^nNpF_nIEBA~cF8stYk|6Sz7O2a_sKs73b zj6jQWa9#&7hJhMllw>wII;=UUko*~9!czPm0iABBcJAGu0K9(Q)gIi1R7u)WdQnO! z41v^(wR%Ho`GC84TClP}LyO3oimU>kv2lUoM13DebVvVA`Bv4!8OF}rFw`~yQI$~v zUUZ;=_6$8Vh&x&$FemM-6fEgVx~w6tTVcV6uj1=dF1xHFAMBOm6Ff8B{}$%I+Qsio z_(<}nFaZTI)54_%7xVDcVCW?6m=&}mw;u#47sazo5E2)a7=>LVeOWFa9+5rtWRhneb(A=y3$Mj(yWqLF)-1}d(r@@520N*pB-DY;ufpBNLuocLuSo* zX}4Wf9OFw5daA10>Q<^_y{9UnJK;%aJcN~&>{ja_b*(eB*|E{IA&ItW*xD2oBTzZu}=eDUV#ZOUN zXswi>Tw~0*4c#%%VtG-oA}haWl-!+leTbj{?i0_q&Ns+EUcB_*I1#9aq{baKPOP8> zquJO$$G)wOH=wq5Tiu=1cmtY?)G-3*}6ChrN)@=vIk7+q!%J!R2GIF{_RZ~^(0 z{1n&rSjNQ`6#d0RmcOtAGsuJ$MgO;k=K*5et>Z(iMwKVVyV!{>}(x^|yTjyaQap8`SK%w+|d2}-nX_*q5Ii^bId@HzNlTf-ik# zJt&R~9y-|#9MD?O!l@&h6a*#gi(@<+p-qK4GHjvGP7UUd%ua~&)mNf)BN!k%6o{;b z?|a^{1H%YT-~B{M=wqb&On0#I-jMfw$4hwZgIE_eb1zNHF@+dEquD7zjW2`+f{1@R zZ4l^*~{ojx~Aa%*o*H~t2O#>Op2Q=bMZI`iY`RAFt@{#ka{{8#H*j0Es zuc*a&YKU-+ys?}Vtg`aflW?HLXKnx?y5yc6tk|9p{qnan84i~)e)sY1e3of!qA^y@ z<9^mM?3e7r^uxrVTrK_4_t~|MgLSRpE{-~qpN1^5`>&`ao+{|R0BmQQu#?~lC9pz8 zgOJm}rgn%0Ma$cSqoETH5b4Ce?H z5N_V5{HTW|P&G*0_CWMxc8m9U%Ui*+@AKsYs-MaI-brb~RDzj{`208_$Sr5bNy$YC zSU(ZJnG_KHj5i%~juy0n_#S9n%LoCwwQ>E0bsi7&olO2^9QQ7%C+$0%sPUm8fk-b; z9HD_4L6X=YfRUp$VKk4Z7^Zj2qlV}}4;yUrCJ+gU)om4KvxkIv{XTf{x=8+q7Uiw; zf}obHfKHW$08xRNcLDc;;1a`cR4@+)f?1r4ihTupC3r|HbRc$>9URy2I)IKt5M zLwq#f`p21+)I|BH736z*yP*U*aq2C?M`GLega)LzyHQg#f!SmTtkaP?4-b*SI?s3R z?oTtQ+(B?S#imnsbU*ri;I~N5KlrH|7r#QKV+CcCYj`o=K!4cex3A=EVvG2{F|tk( zTjABWh^aV6P{*Vy*jh=kW3Ub_U$5Fpwxu0S*5SauV?#Q0gqAalZeiUrH28;Gk|mH! zk(tL@&Ng(HjUClH<_F&{X)yJBrADX*!e#ig#whyQu3F!`xyi)3iLaD z<67yZlPlA)))IX)?QeiT5j%pQh1GjTnkD3Ss{|g_uz~sYG^EtJ7GZ+%_>1zIMy8)? z9%(Zi&1j58bvBiJ0oud3yPGvgFlAXY4fA$wlDj8~Ao_1p7nXJ|PySa9tJ!~~WiHaT zPl#eE!jkxk)P9!`n%5p9pFgeUt0fyVXP?c{p0QK@64sFNFc=hu1EIb=KmRz1bZPVQ z)NXX-MX3>JzO4@oOVJBkn*ZtltV7FRyKC%ZR8@Av;lf9=?*IM%MlzsduiA9z_xaar}nSh2do z=VmjwNVL+dx3cndUTINzc4S{#MVr;F3%p!7Jle>+{nqtd7?|cHWh5F_aV|P^^%b4Y zSIK)`Zy$pTCs=URYRBn^wKRi{Oz(kLM{_!=4}$*+Ob;Xvm*%0X@1*&)9eSw5^!h3y ziCi1#33c}8o;5%#&W$LxvM7|loXVBjfq>X8M^eLykQ%c)G6`LQ_Jv-7o+n5Y-eBkg z{%cg&=30SLKWLKKbVXUxO*fC~C;U#oHWbLxXlGd06a1E5dVn`}#Iu`mp9s7~OP{vg zAH*8Kx#p=4-z?uWe;@oCGoN$jbQIMpTe<^*A!mnCg4?wftV?fuRd1@a?dPoyPI=a7 z&50qME6x&bsTPX0D`y?!yqWtj)f)a|&bJ;@g97N0$)rx+J!G%e&T^uoANb+bl;}yt zOBUtwYRb>2QdBhyau5X$^mwyWOqaH$DIkzS0MU{I_?ip73$RO27xayL6-TU0Bx=lU zOnb2tz^i|l!)`AN<)$F?kt|pEj31CSTLuFUS?UPF>gp1N7A6U%nA)-;T zFzze1YG#tz8w@ZZU}ftt$f3@z1y>oK)5phro`WuYJW10jr$<{lQh2b#LcdqCnwjM#tbFP{xd@3dNz{_H*E8az|^PIxa zd4CV2M2{Q+5QOZAc5@W>0_Dz~g3_h#Ty{PTa8KdRp1nqtM!PwFRllA7#=Y!BP)YWw z*m=tX_kQCJG5{1bl=HGJDL=nia>)l&=#lT;j`B{Sx_YC`-_w06oFrM?ec# zW(F;~7JpWReEQkJC!u)4&xF0UP-f;Q^j6YB-+^^v3ESAJ7UFpB6!U;TD6bm7Pkv5@ z4qX?H?rNjnV|~OETOPJ==>9>>kqK&GA<7jG8DbZflmvnfA^nDtr;A1yzkN4$Ruo<0 zNzHzJqBoSkgdCxn0;*=#)rJv~t-i7E`bkgSF?8DpgAb3T(+dsI-74B)rx}NX_WfT_ z1Y3kgq;CzgvHuR4-{J{j{2ekn3?Qe9>iUhP}+8;1Ha> z6Kfda6}SRfzkPv5My^HgfdBaem7B(b#2{RUdx=6K`l4Uc;k4X(@$Q%XOYr>NCM@&&R9n+}hqVTT=3H!}7bQfo40wGW9~I z5S!$BLPu-G1O zbT@MRy|HteMUHSJMA*;;A28)(R>6oTXvSWXX>0^*?bc!aa|{mR9+$n|UmW7Zd7z&W z6g}23%(AWI5hyXcK?dT`12Q zG#!5cNQCYfNPE>SBo&tmCx(V+qUInbJ*79pewM-8p(KdhQWtg=ONxPC$uAF zh%8z!0ah3gBNbH5*F^1#LQELAtxiFt3etSiXo<`w0+73K7;zdy!Aw$8LkTM5TQ1AR1iiC%r`rY{x6YQ}BTDk28 z9lH~24>AoGimx+@G6NV)II`KI)87J9Sie1f(jB6oX+ud-fBk=b-hew=T+$h*E-Yno zGSwBOy-boE*H6&6)jTU5aE;R|+IpO>Y>619X6(p4)J{-=bXh0RcZ5QXX>@%?4DWq{HXnT^FjDmmCj~8GU6j+{ zfKU~bu|50iFp#(86Fb-9IN7%g9Pieu+g{UcpYYa{Wt5e_Gbv-#*3M`v%E<$YW0%sG z7UER-96%;oBi*sOT1pM&rf^e;E&&meNJ>>yj zWwg9jPrnt{RYM~{6*ZAvh^7NBxf#}T&dUIl&TM3SpL6`W72@t&NalNqsgEhMl&*@- z<%<1o9Zr32c5eALj|bdm6@@>mppL$=ni;ROU!aK&i9lzWOrbPBUnx=CDaovoNwCz`&&cd9>XB zZ>(iG#s;ORZv&PjFuzt)$;D|#cp^j>zmo*($e3h9%2;KW!u_7Baki2d71d3TsbMXQ zJW4Pt?Kvg5`Q{tAW;jl0gQ9~`cf$oqT%9ak(hXG`&KY|9XQcoHxYoe{}q&-g0R$Dm^ z*F;!5RSsX5H~yj~AwP-~TA)7F5Xc$Y>|n<#h1F)xMp&aAt9^ZSmA=E+Ynnu*>5{dz zbC659+Moh|r7I-r-h`o5tLhBo-#QGqV6{>oW9^BY@!h2u?#R4ok+qL&vuj#zu0b~j zc7T@9jU51U+&vjVLX(I9c0J{M+c#2VvZ*_xU}efY2OdMSbYi<3_+GJ=E1f|)P4E8i zcZoAO?iFYrsY^_f-jI0KklnABNIMams`JkQ+(6>=nf$Ff)=IW>QV*jz?5Trjm0d=b z>2A18<96c~B4Sr@4BNV?QUWdav)$P`WRSx&euoBu!{~ z!kqPFKT12!OIyvJkoeNOW3_V_vCyXLuWvt5zV{#u`2ok`cv)*TV~TBshWUw>tXVOW ze4Z*y-r@_;+yCC!%PG3*OWmZS7J(w6y!zsTj1zk?&{YoZ=Ff?AQl!`tGd2W^L8a30 z*NZ$9$$#*6iaM~toxUwmWaP`4O=AL5NwNMm?V1D;Kfk@wCcpXQ*@)Bq4)s<7 z4OdX}H1@zS>cu_WXrM^CXybeFJYf`@_^L!EEU~hwJP5NVEy9aWM9>tCNP{ZE8pe_p z`Kn2o0j6`TlV3jrKBW~$3||6zU~T!n9}}%nSXkcpX`PT`TBQ!s^oAh^`Cu8Dq*|c= zwgMq8A}pKJJm{A7H3*Bk2X(T2Z*$GCTcnV*ILS5f$^8;M`u=_KR{~88!*CY{|7*M% zolu(EUB?l5e-%EPYdS)6-YADjxZz-jQtlXS;!^To$jjVf5^?Z3I3UX8TAq%VF~2uxp`CO3gVa46XP+4jn$55b?HO9c#NR6*c-!)0T#3Z$4aT2!;_ zl*+IoYBVR61SAG#&|jv@QU(WL*7nG0(F^2Ph#1NL1}-j+IFP>}trk1jT`Xs_GdeEw z`hI{Q(np#&yo{|VN;%Aw&@FgFtdY2lE7KS93n|3J!#6OmBG!4aP}Bs>!kzmD;&pd^ zgYr7goZ5_QLwYZ{e&Zz?&^HUFB|~kt42g$Mh*;{Cm9@{J)_J)_6*z9V*QDh9E5hQ!{^oXXv0ArPwLPt|s@YdYu5 z+Ny~{ckKAC<@aSK#2Ig`wU5AW#rtsq4{}t=p${=>lki>>F?fFnZKEK-QL(Ttz~C~BE;yxI#aa~5W48A zN;h8P-&;-Ywi+FeNjFSRzc0kI8l2&m7Lp@BT%YN#D;sTz!J2XLa= za!dTPbx$!Ci64E4pRQQ=)H8|A*|@AZaAyQyf@+Oie|oFRniQa8K@*aXb9BkxoY>vcaEJJMLOU1Q0;QI$ZdvCcc#bfu=)@ z5pJ&99yNh%v3#a&F-dE2h^`|nJV_>TdAz2}?^F|Ic%+Oka*a-BjW-ciy1v z`e(WZQ1AMjMKQ-)nLMoQnneTM=_AE$eNMOHcwMeL%GlqJH{avHQtK;=zBlo?c36$u zrY{wk7%-u5GK||dmWGNWQHCCcUjEvr3QA=D!&Z*v2--Elt=y=6Y<6q5e4QJ~70uYs zTtl6$y|KpwCfaxy!60Vj9L_&&d7W-LG#wBTAs7bd&Karcuieqd!hVZ#y5O91%#=6$ z!=Jk0WS3MgIk=rRlMDBw{$uMgWfD<`JhJ@EuGgJLA@~fo&3bek04!B1VK-2#q1XU| zGqt5jfr9t???ne2(tdoKEIlu<>h>awt`WI z>eMVNl1BLu?#<4>jAa}q;aD_%-}>m4MaBnm%7=lh8J+tQHE~CND^kkgkjpcBoY9mJ zSZ;yMyG5x;iQ>vGQ^6b|IDo|DYG&pyd+`}{mPVFrV-+K?); zArG>_RK!!bU+o6_J`BDX9ao(JXxT=V7_319=t`6=95 zD(<)nSg;M>m?Y`=_~N>MqE9|vWxP-j8jdF{MI}>9UXH?%UWBB@Co7TH0H7tc;Eph} zLZA!MU)Egnrmfk^E)PJ?7VX-iOz~j>-I(tdI|8!TwDGF(Z2&9dw0c#;>HF@QxL+?H z(Ms>%IR>tvaBTK^?;k4aW{h;aG6fjS;50tn*4G_589DCPMHdEzj2$yJJeon9yytlx zLE%pIAHU#MMuzllQwgEwSg;rN)IdEc;)oU@pc=#n^MQGKuze7=B(kna*3KvRApt+M zou7qk;^cTko+6l?CU{axJ}ySeIu(U|EgOehQ}P?~{RL9yW4Z-n00l<_5C$kLr#1SS z?mqxhmts((uF03k)iP>vpD>s@+%cOWFZFnYq$eKHBo`TyKv1!L0 zf55$|#cE%>K8i2cio)3)|B3Kltz2sjcPH^l1jF?Z7$R^xY@Nb1jY(8|LqdJx!;e7+ z1EZq@1EcysEjn~kzBDYz+DLaLy>XJ!v;LpX94iK>p9zHPH+l1=j(O2eh&jCm-gvtHB@$fo8blesEhC-WV_MCa3Ey6 z1-)z?-QYm?ayapPhq+CG!;q9a+Aj|19Y-J3#E5P;;IvCiaB=OKrPGlW_f zp`3VvrP^~+6;?t6opG8xV1QRB5n4IM!l|;CvcD`Y;ZZUlpFl-*h^m>Y92(7~94u;Z z+mMp9d}ubpDj^6Or2{`q-nu>C*YvXKRlU1ylv6@sH7kse$uJu?!(cyF6D`G6F*9k! z%qmYr7w1@sSHZZqhN5LxuCbsi*@}n9h)U^4F$>fzU7!PGW@cQaEUnO4dYFgW(983x zT2$^Zh*sV;=vjE1$CA3J19NrUdNr|WR;qd$m3o-j%o;!uE6I$qV(Upwr%)|TD}Y8) zOYdXCmKJ=BwDFEgV6J8=9mGne3iXtnHq(js@i#irG^rk1`XiCLYPF;)#11K=e<;n} zRhb4gYJ+uP-2C#^h(hms9P|)l6j|0Uh=rd5=$ysEEPl!)7Hh$#?mXDhFw9Nf7;vF{ zTW3C1P(>hS#I_LftfASXyPq5uk{5>o?e^pNwH`ZgzgOWy&G8JVX{wP%P4s?c)Wo)) z(q5Hx@;XT7ETog-AV{1hGzBhbb@!S=JpRIjEcCi@s1&A6f*Zep9v_>X}F>c z{D=+!!;x!CHF{}0rngC5si~`~)o=9ke2m1BWhw_@yreoH>S33khQo+rDR+(Rs5A(m zmTBy7sF^v-`#uhq$gWcJq#4#9RpWb=^zXw#4KiZIx}u}#4BL-D?7vL@EFXHBgdT_w zZ`ugSktPZ)uF)W{qSiI=t*0am2Z~u2P-Zl_yfHO#pxakiML=hYxQm<8XeHFoEE=u5 zbMb?`iOrD_f<+Q$S_T;1RR_1^TspnliRW&(EkhMm7O++vqk+zGo7PvOA?Rn*J}ioEGUE;6d744zR9=ZOacAGHDWWJ+Cy;0k&^DS&hc>-0GDcoDo=j{; z#R5~G`;w*wqo*HyExi~2ZbWBMW~x^s7uJt*Npx9o1{bus_WyynTYJg1Bgv#Nq0|5o zT}{MDi~B;FN2#eI=!~k_5?i%fV6ay=02lpyODWL#v9Q$I^W(y`s9Kjdo!PQ;dD$#U zPL20SMeVTgwv;~xwemxldtKwy+S=INb9_kIv=R`LiO?drHWtjhc#32?p31kY_2UWg zGE27>jpWXUJ_BXRIh~PBVvFhK*uULDgaH z3FAe?S*6U$4$)?~%`N!=#=wZ4%XH2}>c?O6aN`!1n-W~*bCZHaf62)Z@+w z&xOYRwm8mS@Ws|Cw_FCyRAP?{RC`0t(kiEBKX%x6m@`_hFMhil6O1CckfgEp(59V zw#@grwjA~qR=QxG(F?p%d8k3Cw#RItkc=BN_SjcrOaXmA)-TC}tWBk*xSXNjswBmf zHm;qMT2R%t)J|1o3(=b>n21vKsInqxdU7l$ut}Ycl2fz+9eSiR7r>DRe09d=lzLr_ z*53ym7o|FY5?38Sik|%hXX8wwtvP=|k(FOHk1%Un_i*CHk(c-bqb$fFo&YY+%Rs(L z+Xn{NU?d%#QbW&dyj2FS*@&u(9wSkhx>cM^yu!^GSU{D+I_SI2(53~b+On9qoJ8GC zy-eLA1?m9OwyY+$+t(7W#|2Zjs>B|jbn~=YkGk#zSCzDlR7OVU*grbSY&IXN_L{*p zehPA86 zd?U^Mre1|SK%UDU>mJ7BONwXtEDpxR{*QzkHRWKU{#`!lk9yEe?ZRW(${))_<xSM?M4nB0z6FOLOO%!x6Rrw&kk-q=5z= z9Q}^*V7K!2h6bVo3f%LqVIjn0cMLHgOLmXQIO0ty?`6dtcvPs;y-aEu;I!r;P~K#U zdw$RqF`3`y)IiUYEXDKjG%3lG$)ZR#y5B>Z%x)b;SJEgSVLdbM2zJ_0pPUvRV66D| zVyNYu6N6ak-ea=a?ICEQ-uhslKpleebsF=U2&w7=$up7`cFbo8Zi2Q*!{>h(oj)gn zA9Lud4J9zKEa?-&9N=9Yl(?_01U%sw7$#NxYBloUnJ)JVmZM0{;Lw*JSm$?peS^w; zO{?xqbNM#V(R8)cl3L7&iv#)W5vrQ(_8mK@EJ2@UY&;F=Y>i*8Z1!N!PX>7m(MIhP zJB3U)Ob!(i9Zgj4t8z%fd`M6TO&!0pYIE{7^?*AkS<71q zf(T?}%$Y-%<+tMsx;5KJ4FdKk5$gbHuUq=K4WhXZ9SHDUEC85LcT=?> z6C(XKUE;m^It1#=e(Br7nZV}0WK{k^-e%E<%XZC!n>250I zmf-4!ao@$-@uLSbp+cXl#^Jfa+FYNf=7E-olrA?{m^SYbHwG&`96>oIg$JkV#U1UN zl~H501oi5kO|`jAwQ0X$v}8T8w-cNJ)ks|fc%LY_kQjzgSj?eSDoEHWLD?#$0XFhG zK?yD?FGf}|v9WegxZQBcVr;oyMEX{AyFeteXW;c*fvR69{Sl{KN}F@c2i)e7svdKg zQ;<(c))B75gfd*E$zM3cA_L+NupdYF#L;CMagEQgp{J}tncA}qZqBEOwOrs22yzj| zLVjYg0yZteb6y<|2B1RC=)N)2V)pW&p^M{Lp`k;<`+S|;vA7MFDmxjA@7^dX^s7gA zmI4uZEZo$Sk}tHmCSQU%azObUunbgl$-}R zO#5LmN=^a}Z=nwlTJ0gCcw7J%1T&sThGGG4Z+|hljq99oH0jdr{z!6A$^3gYrNrO!$L|H~?R3RWMo>8*#o9#;?E@X!Q}q!Y`Cj zI`HkKNXT(uJbSq@1iOsw25 zNl0UXC~x`1Y6|dQVW96USAKIlW6|}By-A~QDPgI)_b=FAm_a~Cx@(WbAY_r=1gUaiP)t!M%(k|*@Hr7{y zX>2r(Dx05dRHa=PT2Ne*7ohRd7lPewkjN}E;H4YVViyh~rSoq96<=V-@bVB(2CNsR zDMv5zoS*`Ehj+ubY@D3_=_BEPk*BT?77Gx~1Lq3$rC5i1cum-4$F|l?y|(H_CikP8 z2mGwQPUCmmr3)H4g=J;+s|NlA&B=J3wo0{}8JsGEtM2VF&=juDZjkjcJj0F9r>jyO zZ+aE-p|x%#h^p6D%;#N`p})_V^lSVRls(v{q7l|N_I(*|^ASYA3+x8 zHK|O^S90@^-b;EX2OG|++;jwLkKG^~0$W*5#M1AShm$Hl4;H;TWRkQV3Tk5kEsylt zM-ZR^Sf9zIWA^FdI-G;L>KGwOc2+<7liCr@=v#7u_c(OlSXNM6SvSkKnzv+U7x(yC za<@rBsT?*K^s?#8hmy&*qYM+mAkFU-l1c+$L?B#@KL2+bcsCAq3TouXgCC%qyojXE zz#2d{oAVV$&lNoT;;a?-mu!vP?;rbf+UYJ{h8&ITphP!wy#C4P?!OB98Q7>1x{1<|ua%a(RR+W@B<5XXe!{Ol88)ens_o=&3)(37m$ zMYD;!xnXx`$G>hM;heSMV9c>O@dQYVpkH@5ey3^GZ0w1=TuBy4zvQ%QYv@@`3A(ha zBmaD~>nlmPBk?<%cnAGYzbh&41V2g55;f_k8ETWL9vTYL_gONzu73zR0vZgAJ;~UX z5Ts=6YNZA+b~gvO7~6?jnVZ_01DH(hj9pw()O0lo)G@z8AuV7e;YA-tf+DK0YctYk_C$S>h2hs8t!D?3dggSs=H0m& z8P4AseLL)pCkDsfa@(B7{^5r%Y@vxg)h&Wy%NM;Wcd_XqBZ7H;6Nz z<{2bH#_)I?f)++5%?*v8=w+xW+V!)=^Utv?HI-ysdpKm;xAckjFk6l^XfI@HAiYqA z8_o2}TA9`%^XWjJl(ak-UdR5}4b@sVaSiexCuIn8>&W*I*cu;+iDcE&Ctr+Y{VWYY zud`6u$dtTY%SYr6Q!)dD-C?}5ko)z14_>liWbbmcHsfr4^c=HRb-02tAkogS7^Mh&L!1T@6kTvPXGpAN{>oRuQ)wQ|@FWk1UvW>WZ;t27~4Z z@?2uc)|3RBE_I=Hj&NM#{jZCl8cWRP2pBGnn~+dHtD@j2XvE#o%HKwIpkGc&Lr4U+ zT5Zn47w-ah$-f>12;!Q#jyKgKDg+&UbJvi3Uzf`_89VsqMRZ@pot(qa` z;WzP-@C!_7p4dQnl{Wb}o?CEV+P4DGCyQ&-0-rEli&GN`Hsi3Hii2PsT202~xCaKHxQ1%DPCq4XP>vp_YAJq%=Z$4NnHSDA!$G_;EW$6c5j+b+|kc2Wg`}iK4!aNX&s7ae@`;d2L!nQeL=C8x=mc{pTP9$s^ zCCn__6mnGzbRKd6B6J+ERw2&Dh_D-W+mWVdy@;kr-l1X_mIkX;&33^Z{HAa~m7qnD zt}AA>{{uEd3MI#yz0mUy%Oo24C;wHqw|`RKo*F{YEN+1fM^RO_CtG)N@_JEcTM2vr zkN4oBfVGL6tF@zpI>1iU z(cxcJaQ(mKAV<~yU-Saiua#L(Hx6eiij1rzztvxGn0XW*BQP@^lOuci#@Snc@}L3O z;Q;qmb%Q{W__8wm4*@o<=@{6V98hw*u+L4iH?e#F@bmqIHbPPaj2rKWu!eykv7@z` zopw)Qc#Ci6!xKXqLnuQFPE@2n14*^%*6>sagjHFhSBuegbB030ckV+KbA1?Z+6_+< zINawl7T+6ZZmO}x7|XD3OPRA{Q+vr%uoDh??@14gX$sRCYsfc97?k)E`q0YB|Ahon zj3+Pf*FlGHMN z=Zc0AMO?p?GNG0p%ZgZ)ZCWpv4yB|CtGp)mx-P8I<`CKr`W+B8+GYYeM56=w?^M|F zl;gUtjG9)n3ViOmu}14h-`gMl^xzoGn38YLOa49fIl&@_yk6L0wUIhs+s2G+t%Xr? zm(MBxB)X;K0Z{b1_7H=@k|+JLpYI;YKnA5sw{1` zzjycscA{XNH%d9tof`~f+Ahr(B```mNdc08mtGukp>U5N>F5ANE(4?U$a}ivc111g z6%u&0c?-(TrnAckjUqf!BN_s~X&lmpFkw)!;I(NFV>&1wGn6`K?Lc0|b3;5~Kt)yK zHL3*fmRxVNUwfxtxEX-?{eQ%+uYR$j6CA9G$dMZs>U)*_Gh>oAPzy9g6&$Zb)2C}C znh)7h7~k58Bql0a5gcf>qMf)|f7uw7h4kQf8l>oZ7A3^%dt1Uzre^sdZ}}$4o9hi1 zpa5QG%GUAxJJ);m+4m&7=lv~j_Y3SssCOlye~j_8zZutJIDW;t9edP`i2FvGKCzwF z-Qlb~MvvZtwT!fGUll}z=7ZhY0sXq5+~19RWu-O$FD*hQI__Sje#QELsb7~_;bk%M zJA-I$>(_xnDNT%as8h&hx6NDj{-iXFKEr!!v_H(P{k6}gL-@cE7WMV26e5q@c5?daR%ge#h7)$bvYd6u+gk3 zH;4Y0AWIlDRLP1seHUi2{iGN*ZG=gf>C&oQ-%^8!k~Ht%2W~==k=i<1pk} z**!R)Kqti3HWNMcIsI88;_hc)wKy#!4rvtLYi$vptREKmCVr*%i8T2~Ajl6_Pb?Z$ z`>~0Jx`uQ&WY}$~o>lNjSdDggb%on3}=FKFLjfO?B)*Za6KR zPQBoAo6vP&V@l~-0s1Zp731+2dbF3MZSlPxF%GZ+a4ki^@J~ksA#!*u^AWb8XN$)A zvE)#z;E?hNv_vNQVVUqAwtVu9H~M|6t+cRGnQ3aM=Rp=c%s_h?UyF*XmsKi9e5ixW zP-Y~b5E$s*Q3#}67PG&SE7A{WI|py%2Bm+Zdqln2X=s%Tu2l1|y~>d*r&uj>PZ*2*tTt_ zW81bmwry0cWfseJL%XqI!^zY@1KjAd7iqdi@G~iwa?k>UE7peJrEMrj80b@ zMy0eMBor3;A^8($puWoi9WDKLsxZ=Qrq8dSCv?#VNWcP0FZUzx?*p^)XIL)L1;Uj` z$?YFkaVs_yx@r z-^ncci-A}2SBT@{4&)rGQAvXWj=&{1)e?pt;q{nTJ~G?QGonJECuK)1BWy0g8Pqsw zPEO`hjQM<&0>2NVQyMKS!5o`qG^`}0N}NgdfK6QzQ^%)HVNXB>=OF9uP8B1Wo>Vrm za6q}#!Ini=2740)QD3fD){EK%)BNPLPmL?6g@1JWy2zjSHZQ9LInwIlj<%#{O;~P6 zEE0>veBhq^dy1n$ho3S<=xgu){=Z?xX$0pcpZSUaZ;t3vD4&1rT>hFX#NbP-;Ymls zwCyW$=f%R~dL>=x17U|j7Anq|U3O3h+}}&9;<(TY`I`O|9GrNsD~L7b zyv>LNs02~@9t zp+6qarTO!%bvII0!lzxvbFe{Q1&?|M^6MiZhY(T`H}-%g*0z&IA*M9va^QAZ#c|3Q z!I7njCb5F?H|d6i@J%~s$(AjNej4H;JC+t|6^h^=q8q=SZjmLcZwOVJo_fnYOo7E9 zO}NgiokBspiPn(09X;|l4&b4r6RG7DG;iDZ*&Bx&2lZg{bZ>)W&g~77*`MKQn@d{< z=tP~aPHSqK_uWFpxpu_`P-60wvJ{!7?Nc3bA2sBgCYr+Lowf}(#LVEnuCev%{<=td z;MS~{4LA2xJ8r8%xOVaj>O{Ep5DOdp!)YM$LZFO@6vTm9^V=CtChX$hIdqt5Cv}rO zf}2?qX^QINXhqi1!3u{CWl`u<6j`$Zpv1wYF+utpivpASg^oK+?3XKBYZ|U%Z{>C= zP2|~dI~gN~lmz{cy(wO?)()CZg^kV-NBjGILhZs=_=S`u8y9vZ#7u#moK+9QdqzH~ zC$Vl8xZQ-T#KojX0rw|A&$0>=M#T!76b#gr3nz=qT=oyF@L0;dK2P{_U?A&; zzd;6BjjmfYzjT{AJ5|&NHsk^6X-;oy&)Gd%8cswlJ&N~5VSYNXbk5E!j7Vg{j`V@h z8V}0qf(+pXUvYK}{7;`umx8OdyT{<5VR5K+t@#-Y5HGepKvq$O)SclCa|ta@MBdQ_ zX<8n41yNQIw;In~y$kD88kT1Q*b!@YVR8!G!FQlZl@gOT@bjyV+UlM73-=TGqfitF z3n&<3?BIqzXA6?_E^wV7XOHG-mw;UFLCU|!!hIqp{Z{U)IvM6O!z6nk%qERYoZ?oc zpcS==RbO}jAlBqEczs%ce}SVS1V|h>85AK2d-QBgkS#($$a+MW8YQBj8izJXED63k zDYo{}Emq1CiiShX1v^~&=N>9t9rA+K>%ad~2+V_%%<+ENE7%!8KuD8~J&Az-zXhGr zh4oWkS`woEIqCbe%MM%|3RDUbK_`_?E*KRp7?uK*4VFEBUg|C>M&4pxN84^`Ez0AU zNlCPBYfBo_ya_!z3jLadUgsbG)@Z%-y5*~?sVAYQ?mtPa^Ve?yy#c~k8;2XdE&q6q zw_ugt&-=q8t#JQ!XVA4T0)yt?uSDuZGi9y2@Mi83vMha1L~_*zH2id736I<7pV@P@ zM4|Go3Ls|Ew}R1lN8mXG#Vjl)eg;@iryMcF&iqxzWKQZgu}*^tadoRr)0cCvooibb zgKwW6eB2<3jwMlEGVzSu3bD+nI@mItj^Z`9uV|6)&BQXCGXxF8)?`h))pFD?) zq&L@+fE%sDTFSPpGiX7EVTk<)9Z6!cU}|nmdNFFaBe%jI>Yf)LZ<9X>;EZ-|{=Q`Kp)8)z4#n~A`Q>*=%4z|(Wv}mC#U52dg z+e)3|^(N}c#&TSRjS1cQM(63?)?Z;GDLv=|8jL5_cCo}nRMh8(T4}dpX9^pn(CQHZ z6<5EFC{B+GiHKt34bwOsd7_6F?Ky20G>b}{yiza!9>CRLT9Lb*tOfalwK|Z62;)3$ zT~cN!q+rCsl|XzrXh(WAhPn`CCwOCNX@Qa3zZB9kCA8)_SK3X>&}lM?Vo%xMorNH# zm8Ds8CjYI1pw|sPxr*_dS>#23{ZcZ{y0ygHWDcp^cLH2?F}+DE<&o)PdO^G&rSKNt zu*@9ZwgK5?+QJ-89N6nHXYd6Ee?|8+RyO!4xias37?!xJLCek$9_n1mHad%q!BtTz&j=q@g_agE)6`f~at? zfmFe5t=EkhH`VkiAN&^XQ?o)g-MIh znQJCbQxi{g@t_I|FA>JHa~z)A9n!9&G)WmEcV=5O50%<0(xKK7tDxNi@hv<1u17)2 zka2WGlWRK5#wHguw!=h!rJhYNSP7?|3TT?CkqPETfWxNogdGMOagWmOP8N=|+W2LS zwA#K4#$HSFfd}YvV}h%Fw2)Ym)iV=tJz20kB|< z64`}I7sl*QwTFvvJK{%7s~GlNMFsiFQ@;zxTVlz+CrX@XvWOfvRTG|tt(IWzRPdpu z(>R7iCg8TdE~IhO_vX1QX{Nzf(WeW>i8;Fmac*VrWAyyA&^i|ACwJ9LpgB0xF+tAu z)ibxC6*!I?y1+MZrbrWL=j7$416F$aMRtHW@8jHw#RRVO(rd;AM`TFfh6(ftio%ez zAqG0Ps16Y;#Ez`1xo4)3>my$TUU_1!69XUV%y2^M%YEL-RhqbzP$|R!AwYN^8PAUy z7~2thHx3aRAU4lTJw7wK8GSB-+8(vLF+TOr77CKPMzFzg!{2n6eLD#RL_B9fzsp#V z7(BosgTYKnA#@~PeLD$po6VOxQ8BW?cxf~Ke%IBuu=DnkEY0~1e?oq6i_JOra~8!S zZ~hrHB;I8{-*A>0F?Yuliuf2Bm7m!VQTZG1+Da|kGsNKE-qL@;3*x~(knG^?D9dl` zLUuPY0Yf`d!_axVGo{n&z|FZtuy~JLIMSXe9j6|8e?n9?-0o5Q8pkAY{4?Sw0br0h znqd4fNR|I>@jxjRqZgvFS9h5>oIy@vCS3Jux<+3bT<-kcneX!Wh~*>xgDC|D|L z8)1;2)fNSt1Sm~{NmjT1YnuGe1QYR-bV!T6jg6EY@pFoFLY)P6G#Dg9DA5APN_ZUA zBhl(cwyeC}o)qDgvD@l~`9%xrUnb}a++2sqyp&iKoemW6FU(Mw#taTM*iCkt>$&y) zYt3DBN6+((Ux+SZH-z-*njwV-51$;)Lr0#Q*I7BZ;!Kd;cGEG1!6LpTf`v%|6;l5+Vy!;pK zl7>SZ9|%k(5WBu5oPXfAxD8$z@VRnu|C~^?)@V=8%7LS9_^=H5H*k?s9k!_m%9fp| zmN9<0t8F0}J%o4Rb1K4Yxu#Be@i5#lGRz7*?rHyeZDp^ry)k@o9E0>mvp?>5NOkX* z_kQLtrciI6&)x&SWZPG4>-!|L^5~JWa`@p<5(X%q$=GMQ==`9(-yUwfH{p)vhv)S# znj0f}YZsut#-zgbJzEE-iC`JS@^NtY=$`RDIzN*O2`t&7{-d5@GtHV>I2U3Ku5p-9 zhCrrZw4 zf)D(gAxd>|WgHm4RNdxUB(hJ_T%8j3RUpjlhpGDWV;5}V>b>({3joP=6Me2Uj!hEm4Ob=*iMP4GE zKcolM+C084XD5X~u#xe9bJT%sQxukEzy-pb9?KpAov(PO)K2c7-RVC3q}c~urY6ry zP4%p+O_pN@Ts`Py_~`G$JmN3$;3Q3dI-)fi?)6N5pO({D9#3JLENG&g=wqNh%uX9- ze51APz1)HQAepttZJ$cPthkzriB@2Qv-vT;++#zE4b zOx@ZlAxX&5a;M<$PgM%UlIQ)@b1&+W*t1fzRSmySiyl}X^(I^>p{jCWRP%kvWD88( z@&>JbuqSQ1YFe;n?q}u~R#XF;s*p9R)zht9#X1_L|G9Xpi>Y7RoyLt{xtIG=;2X&H z90WzKf?(%6Y?6wJ%S=kII`$8YGn{#NDdpo6=G63nY}ubl>S2mJ3;SLIL}Y_RMt`|A zFy@!VlH*s1`hPM}x~3*MbDX-7GL~YkNn@)Z*QngR_4~6j7AVaEAF=~e4>GS9g6?Pe z&?$~_mFRE;l@#R{&B#XfV7B%LK9OB`gbOFn6pWPVlE`c1u?Td^oBqkGDV@qz%sboL z^%meeKki1vT8vM0y$0<&yKA?O?=UrT)pnl?SthX0cm8^m$VDsUu3QGU2D5{}Er8Sq zkP>$3{y_w|2lov)6zJ&QgETxn?6dcR z&{U}xLE1dvq~_&^f^+bTSQ3x}k~QBbMVY6{1S?A!W&N^tRi)lxA;*JXC^J3~{Fh;a zCRnJ0iE0HTEvZhcuY%J$C~`hv7;Ri$zHbf7=&Guni;?7psBp-)v&+<$PhAv@gT{4tx$)D%6#6^*af(Tr^0VW~;a2X+wiahp zZg!H`URjqpWWUdnpTr=MW7QCT_G$J)wvpn2WVae0s%A>0_ZOv;7hUD^`XDAH%P2IV zCvw4TBO71Scp#In$B{rnF5sm3=M~Ki(!lD1+6n=+@7~<8frAf_uViiK!iVS&lsI$X zjsduWOzKc!_y&c}u{{Gdcs05*h8mKV9cV&^Mbv}@Pih5U!Lp|Tie|eS)FFcu8TS@0 zF(bCH0PY+n7qN?TS&UQvkeE z-KoqOfwsYSCv1I>7)}c7{Tg+jU`<4?PO9=ZGmYQbdml$pNtLRPI=ULXSw16C$Xg;% zY5Z@7sipHbOro}7U@G>sYM5r^*y3A`wE%rb_AF&p%Ktd zTmT4=c!OV-a)s7BmqJYb;BEl6|EkfU}7R`o?c z5J|hxuguzSNVndK?xuw!KDS$Wal>H9z;W_-uH zZlBDZR{yjr_nFdc3+Q+57Pd^eTUXowrqLOs_b!XzNpk%pqVAC9q&xNex5OEbBZ~KU z<0C;{c$Ak2S1oRMT_MR{)rUtqy+0M(3U)TD`Xs&9PIt4$+#+{+a)@3CkBj8%o7c@Y zq-sfFj^tvHLoi^4(|nmx#reRH(g%dT@hDP~SSbvn`r}>l&LeHc6R31j@j~CG(x~%4 zZVFRsT(#O!E!IONS`I3ACAG^ z5zC3HK+@&%4VZ(CF#fhd?Yc68Nng0rGO%D{^cHRJ|A6An`V7p4XLCJ`f1vhq!r*K< zu9f)xkL?4p+khgow~!jZX=k-R$4}KS@wqJPo!cfY(r!zGqw4Qb?#BUrK#mNerw$_0 z@{vu3E3Fv6Q}X#Oa_5f|$+o@-d1&J<5=7atbd$MQUv|aH3-0~k1}#$VJwd0uwyo?) zegbpjahb>-c7cEYlvo)6!vBFn`zR$mqNcNIEqA_fq`vRc1^Ee-IK0Cr7E>*(_G=td z+BDR4j7bb#7?sYqOK%m5`V z28aF$0xifx#{t;@19vb~F%rIS2M71DH_9K-50|V$CMaqpkTC?iuzKZb^2PhG+=;hD zm6$1T`=bhl)HI?xto3H zbPnpGbyDrxu)iv4f|)2=6eH}w(N1yhpff}?+!iROZkum|s+thJMfF)RyE`r0Hw_*{ zcS^`Tns4ehr2oGCA54bm0`C`Oaw;|sF5-fhv8JX8d5OObj`DQGU-@IaWay%HN_-LoS&1$Z0K_>9@|gDOxb^3 zdmp0pVX}P`--eYwl6}^4xA>BUgA>V}T(&!(Hb1sJx8EPPuK^J5z;>UDVQVN>C`%mv zK_h7~`Y??cD`jWRVW2$B2Z7Bc&ePOA;@&5hb{~NXNB&z|zA=g#o{w{4e~Ax&^s$$x z&fvXQkdB*$jFmK5iO3#Yk+ookrm@v(NEO}-OVNOOqKYxCRaa@2eQD0(RJ5eWEK5l+ zqL|jBt=y$ZnVgQ?vI684w(n4-+8IwH6 z)$K@aR?v*^)M{-`tu$tu*N2ln=ftf3Z+c^rUk#UioBbx7hbCH-PHkBh)jc5_!ysQl zA8g%-Hjx@-^~o#v+p1sz$)aN!jX9!N7^RfU&mV5n=dg+<3n<5KqMisN@Ixr0#lk}j z(J4PW&SgbC>wrB^J>*avGKG}A5vRBDaTs!=^Sm^f%F4@ggVGJ^eTmJI>SFnclj#_@ zU@C3mr-y^d`dr4g+MJHu6rH$rjYN(5_LGy@1Ojw#G{)L2`XEP$foyvC%`OFT^-3GX(bNFyO=&#jC zt~1&OZ-I*qG(VK-}P-bTIgM}QH~`v1td_jE9+V$kJ{cc?PRT}I%0nuc6}w$ z=+G9Fhj?IVIM6(mO)cf_n2A{ z`)_JpGtKa+kGF?mmk<`cM*!>mAc6HU9@*oyjnkvl0Ymbvs3A#>@@!b{f);D$j1mqCjB;YUmbJ@Tnu)Z>;B6mm@+p^*^%l^@ckq?x z=>}pMo!_A-oWmY87zgD7g__56+~MSJ_p99DL}WDb2uPV&4c2X@s9DF#QWI(Gy?_yY z&H9~J#B&xk{D#H@JZ7;CRztVAj1?;1-D-PvStzp33YkY@+-7o+=~QyhC*LaDFcjA8 zU0I&c^Z+b73PCY}kb+@s8S4+6J?;>A97!;8>3xE3OXrP31R&n|Jp%Uqhs?VyL3G=J zC37&!@5??^g2#KW)`U@(fIimB0z1+9&CrE?@$Hy1z*!`;vhc~#?isqMiBw702ZR65 zs+0~uH`ZZjSgWQ$5g+cT#gGew11Fijh;niNqExtT2<o&%_etq zRZSpS(Ddta@!uFe6MLc+`|UjZKbn1CMRC`i$UdA7Nwwc;paUkGQOfRHvD|_q?p<@ldgpmp zD!aMUl8keYs&NKm4la{UMSLofkqDS36vzWntk`TJL=6%GZ$L1T@kA<9G_r>3{dy3i z+1&JPW-<(Vy3?N_nCYJ^iCo4;t3&P^vtK4LcS#|t+MP-SWB_M`ciMo<;|C#Y%s=9y zmhw1QpFEd`wG!n7BrDAX535NP#Vg_CcJP?IF^Bp)u9LjfGydV~uEESUVOKVT z(C8@RF{(Gz@oHq_Cmd3b~X3u1$UF6O?MZd^M-LOkaVC&BBp{a)uE_= z6-lX0a7UaGl>s(bOB<>zg}L}#Kh-1L*gJ!scg!`%lQn9qQ~!>Ht2;b*?kEeVcFXHtv~E zwJh>pmfyYU&!&k-Cim8HQq%&DTBi~*L-4HR$A2{@asG!$pYhpX^&J-kM3EB&gyg>~ z0wh2e+DmTg1beGz>a!VN0EkPeWpb?Erx=c^_Mxu z09~jmo|O)vHGF6>qeuDA5=hyvH>kvSuA6K9W5!=;LQ{0U&hOUuY18@Y=RcmOsN=1d zc~kKwb-oF?;qTP(KHltJ6**idejOpthtxpV!CtKQi9^aLm3KC2JQcIR%#?w{?v#N~ zO6%CZe2!i>`_FZ=InA8b-`SVE*Eg!D*BEP;cdLgbj<*ih6*=2QUoJ&Ksbg1nBp+)g z#~Y{cF22LLLu0kAO@quqfyS1VK~nELYPXqmDQzNuUMaUYpNgorZuQ^TW8_rvZPNfO zGP0L9^7Z45AT#n^C{fRt+{ClVpI5XT=Eoaz(SvTHfV^~@>d%S$Q*1v8!H=Z6lu-?$ zfL=Gl%UxTus{mxfteKVD$2;c`eusw}=&lFi9+_igp9+a*uUN;lT)kq<^yTm_KYCzQ z4z)*N=r!WPxo@!b+%McMU{Q|vFdmRO&LQfN+w$~%A?jHfBu-CMf&tG0 zg~;&%&EvPO#X&6od%)yG{5|@e*SuW%%`nktV|d=(oz`=e_dB}~Iq=SZzFYVE zjpxt7IWI6M_a*`Q_LBATeQG;t^q#kOrv%@aIUvz6Y5C*Z+d6M=^}T1;1F4P^JfNlN zuLR*WJP|En|8^^U{>J++@V8aW5PH8;TkXmPzoEb6q_#dcPJEU#m7)J&*qXh9-b{s~ z-TK;ETfqAA$Q0wTUBzZcB2ZC(+O?Bw5_sC zikX1^Tz8@q`|2<|^~%tQkMDQw6J#nM+kU`MN}Fb8rrAjDh=3u}7`Qq|KpqnFokT3C z*IEB#J+eR5FRgs5nG-EKsDd4s?W;h8CR=UJ+xdXwLa3MIY3V!XL1n4mG+~yxh!K^+ z2<}g4VP}gHVv=iR$~m3f}A6o0f>i@sFI*IiJG2tE|nNnfJ1XPe$y^D74B&r9*{?8yhCME>8@!; zRf8KKGw~nc&jEg1l{Re3Pi$*s!H?7oAa$^)5J#18Dot3FPkDyE9^&(c2xWXUezgNm zIMH*u{}9+QPn9MxPG&UhFLU!7i4L)M?mbq3?CL+W4Ua`p0WHW{hB#++P*t=<{eW|6 zz`9RJ#B58DV4H&{3PWHV5gRKL4NCzd>IHu<&uU$l^fB@IJNl1FZc?`LZ0C1_WX9LR z@8x?6507Q+mtn3RGTMqtHQ$A1H|<9zYc)B@2F#UzW2~KwyQJj>KL|sNtF%~VW-Un4 zF1M7y6jeF90#v)!`WCD58Bx>ARzPz5=nv-MA#B-EHD|X-Io!zV$Yi#QB?wLtcN-4` z;v|A)+R zV+R~-i7N@hk1>|#_Xd-rMsjkb4Z?A4`L(OZS@F7d0QrMdSgn<;_ObubLN9vX;#im= z1*h5pstru%Tuh*JKDtOxnPCts@iPd*gEiz!aKQ@&YS1s9K#P1(vza(C;@lKKf`J9h zy8nxZ;?s64i_c;J*B76jUWGdoN6)~J07Wz5u@@b>+N-F`p2J=$qeiZc?5{T z%9Z-O*WcwsXsfOig0g$9S4ZA>96e{~HKY;I*K$3RER ze~NbVJD{}i7Trd*zsv`poCF{LB>eN+u2HagPluJEAq!YICkrj!uTAY^t%7i6KPj5v zMkskcS!~c>n{!@r%9A;k#*wmo`?KKakI#X0Tt?~B2KD%CyI&pJ(JWm{q3Qwe!^mIH=eXY`Nt8loRIjh<%i31df>d31<3fhFw9!2VosETle}>-iYV_!ach+l-_}aEDR`7eol*;L5WiPuAXXtyUNo zUrBP_WxXZ*8w~lRv?i^}2WpzUIX$z(9mMG86githbt?)O=a1OBkIUs(eMcK47Pp^z zosF!_b=zw-aCA$cJUF{MhtMMWGf)(MU(GbYrBpQ!Lw%$LSX#+7l}vW8mn_1$(=Fah zb-LEv=}{MZQzj-!^VKsPXZP%oyt~JrUb9R^2%%n_r;puSBU1W&<^IXwzMJ}giaW9d zg`XN`+_SgLZWBkF7@N!@qe7W8!`sr?S64KS7Rb?epw4_*SZI)zuaYP~jS#BMpNs7* znV&pI3;n;M_nau$Kd@CD1_3= zJK}7|tHTAgOSrn-%SKlC5HI8N!av5bw(=P4KR!;^G+CGf0aeBLkt#A8RQF3avGsC} zvo$I)J~7*GO%^qfgT6Jv^Rt|`UwK9O8ccJiX}pOY)tafak*6FBsS? zFoxvSTr?Wago8vUG}czjksi4xEzeC{P7516tv@{%Xcu^>UC^I}^jk6GcGU@kR3}TX zx4JUYJCJ#Ab)RWcZzC56uJZjMs;0b|^BF=H!8`ZefVA>jaQZ#2uYIp3Q>xe{P6J!5 zMrq1Xm$Y;EUfK;h+T2=8$H)l9bbF{FkF(}c8y=1lo&UyErlYGz^-Hced%LA`ZB0Ho zp-JS_l7fd2ln*y3?G*uWKsr}@w4=gBr>=MgAT*33_iN1qW?ysKi zVMWeefaMX3_bZu3Jap%jeFF+hx7(z~AMH4QsqTYxF|(#omp?}b{!!v)_R#9z5?B}! zy+vs!Gjub(k&}kdcx;P4?OC5dxwBCp$35aw_}XjULW;8O=I^E$1(xTOz1!PoM8BUX zqRlMRs0n&$^<$n6Vadfg%oJ^H@eHGYDRr(e17K*K(661r1GRBT@C_UKoT9vP*uNQ# zp(tb(HEgDo#JNhDpQ7aOU7_I=Zv+aBgvtJ9YUp}0lr4+hhV^_7y(px(k#g#4-uyUc1-6QI;V4PCk=7?8vB)J; z30#)$2t$PG*r~CkdEBwKI^&kxM*or>(h+d@dmFvS$t)~`LmWaNqi{7Y>*+q{g!3f` zH_WA7Zn(F%j;k8wZ!h04(ig(&^BjpvAdXt0j>nueuZIud#>K0Fmn=k8|1hSW#>v!q?1aMb( zfj=c9ymw?ZX$O<#KTFv%jxF9I^sBCV(WPWcnx)z%zlJp%-t;yf6B#Wg%nT2=u`#>z z+V5No#BhymL|;wQl8)k>^T8_MXbqm5)0zlVjSuzops4f2!K4G)5N|X3I^NPReeVtZ z;rHTGS-G;q;w)2&9LHl%{FT=A3@``og>8Hl;s!G_`0T^nJ{I{D+-U5Q7MoDjJ*zJ~ zgOvP<;ypf2T-enZ6+Wh?`GRsttjXs`G=qCE;)j0E5PtoBgL50j~b z_$r)0@x;`>$x{m%T=e)qG!E{#gV`6eSz%G2T{ej_6_R|f3h7#m1m+y>)R0q^nNt^D zX2pnWifA~Lg_iXrQn8iUhOMZF8*BnQtdK3POIR+8&QHl+N%X7P*AZ<3xDOT{5WMS6 z2nFN}#o%>itlun3Bs3Z2*5}a(`PAj?b|EZR=3JdzuxSj$450yoM;ufA6fp1Yzu+Rv(cIaH{`4G z2;5}3E2`F2m`trGuM7;$DZJv*VAH5{Hg!0K-+bXR4{_DPD!>Hka$(`)l_?R_mzYXx zh)Rb+TW18s<-j_+(q13LK;xJ0_=%hb8t#*pzayEXN?C>C0AHcNYmJ|5iXwGw(_dP1 z;$UsdWY}}m&%(3I!h53%bE|6&#|dz-8)y0l=J0UCps}{7%oCgHt@y_k=ioejnqO#-qv_Z^3Dx?Q zx(XJzv}KDKokJ`pO^JuZDX|Dp24=GO2Rr@kI z?5Xpn3*Vy$I?<2WUU<+%-a7e%^+5Fh?Acy-5fk_*^N&2PlI;ffE)Q@6yWbP+z- zu6q%3=1xgXzr+r(B`%2dm2NsMA*|kxDYWDOTvzH=Qf^|#3#c{@cm-)56nj%sam|p) zr>IJOJbIncewZeWjJB5BJg@OCc?+z*5!3wKuX__$BPxWVCkWP9^h#; zRNXcBR&)eP(nsr0FbRn2F@mfeb!FZ8Pydb%w|Ya$Q|maoZkr#5mNHC;l|>3_moZ`o z^7Bn%ee`VB;wpdS!*F4+z!vBQP6`l;2;ducgTT>*!ljYA*9PN5+z29G^FBXGMgUav zhYl2z1{4wSAg3YHNY`T9OHSr0mpV5uVCC0OAl}gB)5Suw#09wqf#Z2Q5e{o`Yrsf( z+XvzUHjU2Sjm<0l2Vzu?c>4VIDe(^APp-Nm)UX^Rurk|wvYk&hqAmJL1JjA&@-9`j z5=dBw{yDV@VkIK_GsZFJXuu3UfyY2<`nNom<7}44MQkvnaiQLDF2p7hYzJ*9UrxNL zZ)Z{ACCnwSXeYAq0mEXwr}2q^X*dD$!kNWc-eX*OUe8GiTo@wR;ltkmokTZC zf#HufX43T@g!p%)y<<#XLXbAx9Tz4P(Z%+SJ(k0YO%F5KbH;Kt@Ko1R`=N4h+v9mY zy0nEkI#Z$6ZZ9;REi$1(_po_+RIK=Ke|BHdIMLe5tNg;U!%_VRX_kiKd6CCj#r2HS zYY*rgZ9U<(TADlQ*4H)#%f@g4CmBL=+Pi~MwKz?vdJ3m~2xKNBF~M15IFlNjL^g1y zMwBpvxF;JNUj3z|lHwY%wO&0LJiij9~Pdj!)(i=Fpnh9K6-RR#ql*MboHzH7ai%q(M$I5Rms@f zD@rI*g39Rvap^t#nsW)h%2V=qQ)E>i(VQ(s?oZ_KECf@9AlgzfETJE|h@>|CpHxk) zfxn6?w8%Xu$lOwMlWnY;V+C<_L@be?pB7ZtPh`~e1Z33G6X=PTQl`C&xLHp;1ctrA zma@YYtfy@cOd8@wUY@@+54bYFlE~)NgzN8z|HAdc4}zRoK(RbFcM_LKcNVe0anW3a zqxWGmS>cyvl-ow^fu_%Jh)04q_0wfTtsVN#uv}_1FTh-ectF>jS_OwpzbR5YwxH-C&X)q+J32peQdg%zHE45lD<3(UW!D!k0XiF==|MgX@1#-%)5cr(2k& zckTic<*D%X$>=bEFBG;hGq!$oyQ&WNspjf~4wI(!Sw#vlf5|`=YI}I!O0sMRbl>J? z%M$+BKJIW&#VhVVGTz5ie!|rBI8kB;ZfO5tzv)RC@pF|@yZO^3*Z{APc*|8BZz#^h za(cS1cNqO!?+%xUS{piMzkewDjAbh4`A4a=T_{Vw6-fa=W%JO{dSIGmCCl;wwO`f^ zdV)rNP3iaHdDX63>sqf&ES}}*TH&57t*{`X*HI-Y!%Am;V~bLl9>*{*4mc|PPyTzXDf zkul#PBHNA+N$dPKA^*7#wL>Nj&*9~n1VzGR&%*1UE4drI=&{(P;1kQ{7r~BnVxIc# zlrv9Io;Y!p+bMx+XNQ!LfFCJtD~!-FU6f1-uZLe9Xj6RlZpFa{KF)H&L$(gR3>CF1 zTiN_m4%BGlSLP^cDT(XCN0;|m=7rC_z&UPCn-aO^m>dcn97M$JMk1?2p>DQD^-jnf zBz`o_eLWrWM-bYiwDF~~wE6SlVL8)Ad|9xsVd6$`2RW(D-JMr%RTurt&cjAJ= zQy?9n7n&)eZvz`q*w1Nh9Iu77kpc8rfZpjP#|2v6O_*MyuXuC;Nyu^p(sqLDm~F}v zly#-uSoO?dxEdd00D}KsDJ7&Lh7052>}A^D)M-8|6N!={92U3H{yCw3Ts=^J==soc zx^8dic5iIV8;8tcOYov~Ch! zakqrS0VY8x&(wn%a@~Q3haHDeYPO=AyN64$qxyzTG~ICUcIH6YD#J+xvfL>zba5ld zZ#)Cj^Ie8c&AVW;l5CEqL7ocTU~e_`ZrVx%xj(!L4XB?S>W71J4azf5LE z$-WVy)r#qD2((Ux9}HS;&hD;q-vfT;;&!|gruRGXp@=p8P%I#;E}>&bULr&j3S~9 zjfw0umaNL$NaGEy&c}Rf!R_dFpz*^8FX^bm<9_-T%R&Xj(()oZ_X8EH?beBE#iHbFYkAaN9TyBv(dQ4xaSk zeK{L{l4`#<55nwHF>mh~iw#|}_}u-m~8hiZ6u zy)u9^wBr377U3A>CHTWJl=X*W_zj`vClm6vsnoXRDI_X$*bO)qfHNRR+C?xBul;Y7 z%mDSKFUBBYBDvBU*Ji5)P}fH%G3QWV{bv4$9aF7uH~JnunN6)q4qolPYQeR=Vkva^ z<>EpDH1X&8odSdtWiW*0`r85oFHAs*X#fb(oJWRhkqtO)S4cBr20C zggCjUW7u+OR5fUND0LW;nJ6&+37hQLC%?wuJ@EY-e9Ca~K$c&Ul?Dp=`{Xa9B?UQ9odb|enN1}MCCnYAYi+#)6jHDhxSxekF1Iga0k%sqI-!C z@bHuEX~0^)%MWPqQ|`)4%4Uq9yZ!a-NWXFIq7sqJ?dUV0vDRb6#uOW1);>;u#$-)S zy0OiT-RD9J04C>lI+E!eGXl@WMJ-0DCA<^TEYVThLrD! zS!i2*+mH{uDD(&1shV;+Q>wBt*TmHIdi@|}PM`v9%IyMr2Ze2-=)(=h8 z7ivy;QytWoDqAq!qb+0nS7x2W;5Vy!x+8&8)*Ka12WFWR$1hW(*WzT z8y{1~D*w7~W%AxmG&M9v58yfebwh2*I>I^WbmrSyo;sEFsMc^*;Z^0ddyeywxIzvodMawb%}Dq+FwoPM0HwoZh$ zX|%;o6XWk{VmDPu{2}uUT3upKMq%)o3vQ_HbYV%eZ`Z%oB1*z2wumY0$AF&+g;rrYd$=WrTXtN>~jmGDK4N- z#S8Ms{6hJEZJl>Ko7>~ZiM?YJp*F3pLT%F8t*sQLRP0%^H6k{#W7J-$QlqWfO6^VU z-r9SVlqi>$)-UzF_kMrw@0WkhdCqyC^(4>h^_+8ZKA!`L>^d&hZ%O;llejwGnY6-?+GOB8GtJQ8r?`;xsP zaThPK+lEkMRmF|>WeT?QJra+I_-i*k}5Vtm}?*l;FI|#DLdq&wM|YnqNYVwQe%!*o(U+cbP&ZZ z7{()^A9ccM4-Rk(iVncD5|FP4Baaqt!xI4x7u;fwRP|wWA0n-Cx;9it1~GiU*VM?V_n@!9%jRky8$S@-UWmu&B{Fb@8^*bAdT} zUa?2x1NN1O5K0~DAF$ML;30R9)0)ui?chA&ruAp^DM?eFU&axpw3@E`K?D%Wn;LEG z8_!~;zmmmChU?aNWVm?nn2RZ4?$B#JCNdRFWj;~fMhh@}pn2c;F@^7JPaxkG-o)!M zQce-hpwN^BKC-T`L9_k@!YBtNRK9Da+0bk-6oIo_rk7O4l3rpddq|f#@8{X3ZhJ~F z6@er&9+d+$Yk zQrGR16TCLGKUFr0AN12UBAOI8$ok_2`AfF7QZ=4Ldh0_-~xPp&6+L}ZW;h8Kzu z#TG9UkODS}4BLxBZ*Ei4I|?IG#kFqS4B@xlj%RlWS|K^OE&G*Ub%p3~S zsQTb_3E|l;X8hsxt8f1_FuJ#3;$KfbNx7PUB^nuL^*NO_8L2Gei_c0g=yFD{P24NijrVr9<`zB zGDZs_Q{UtHnbA=ni{RZewW0Gz#?JNX53y8pLd`iJo|s|xNa2VmX>s}Zgl-Rd+r z=ppk)b-wFM9&KIw*IRMgXMIDT4*VxA-Miu^bR7kwUbQ00dUJb8lvkN)xPRRS@UYFp zBfMO1twne%a>FQ&ZYT=QQnlch^~#T}o%5&-el^H48+i3O`bUkb_Xj@E*IRjLfPZ09 zN9ZziOnz8CF(l5kulMb1*O4ux&YAp+7gax}M~?Z3+M#XGdFV=&;*) zuw!S&ExGAmca7v4lWbI&I^(%r>vwEX>Fkwo1@)<4clBjsqbg$WE?Z@eZfPWdH*!P; zsy=2^?8)|CDm)%qDi&F^hle+Qe|@TC2fzy3%NY2%*HTwyYD#$clR~OjSCs` z*de3bQ@+4hk^xfHC*n5%DFMj_Q}L0ZV+Uo}=fFFgs>WRX1QIdB;R@;_C}6T3o}?(D z)0%2NxvH^*CL4`pLUtA~*%%Lgs833_qPiKunbgfm%V9?g`3_9}if0EUrQ1-wk4x?0 zG~lqKg7g5Beeezm`H47Xl)X7~pvl+4tTYoy>zg!&&=EgU(x0kj*qZ^Ocm@H<4bWuf zTfz7-o#F3qkDLL4KOzm*SoOXg{>v&T(_NeZLxy{sjb*~a6TJLm6nv5yP8P)Az<8lo zGvFGf#mSbM%JL)3AFOnRD)*ZYpAA)Xy&iZ^qoByza(v_0+Rz zf}~f4d~8UDin>Rwub(mRpS2~;{#YD-leIt@^Wj`_>7@0f?LxloWbp*^SWod37z%-w z$C$=6P9~XZ3wBoAd2bFSgC}YNJ(-QHcvkB|-s^Vn@_~EVc+*xA=$MvcVq~<;Vt8P@ zPi5eX!v!Vpu^hkNNBS=btyBfD4Ye*L`5&C>ZZ7n_^Z$-@=UD10IQiif-*+N$_EX_3 z^xCy`Y{;*m{v?`jr?kJoCu@XB*I=KMuzUE*x`(&A(u6L zN1u9|ce9e^9BA#6|$ycGx z3ZaRAYGzV!6?|UeSb*=?isHQN{pypdA2ftWN&dmJ9GBvG;mA8HGiDOAy~@ye?5E~` zLbV4ry*rfp0iCX7tL&+1Xqr0pry>Md$WYR_^IT34yxX zI>~d4_2|+DY&Ng<<7ZDSbAV%0Rc!Qb^igzrWp0yEsl~x=Ef_dXtA2nbu6##p))-RF zhIV)jy4m1D9PGPR7+RO`eK`}lCs)`jS)0%vl=m!G*y4{WzUjr`sprmj(k1F4V^w`= z-O09&@BL!-8cH&4HT-Uc{v=Aw(74N2|5`&!_Ds9MS!-mT{}Bw4zF6b}qT?K^cQzIE zWsfPpE&x#SHY|a+%UI?kH=(a7yR~_UjIgvLMA`(1nhFcS7dZ?deJW}6*5HGj51AQtWRM>>Q z&>}FXvqXzyoaS#XafzYDnQgdN26o4MQFrefDw3a7v6RA{%}7>^;>qIF)1#>+q3^he zrmVHOh=PX+F1VlWJCR3zW|}M4OZiA47&K~QaQNCW*CTg}Ye-j%W6y*IR?^otq!w4P zrp@nFR5BgF8JW|W)@S3fsX0k1u>+rkeHLGJiol)W7}lqWp%DE1F)HTt2CSl})Te82 ze8Pz?2bl_I7{950w@$~$OSPz0@_i`mq6OXW?@vYHD4g7oS&<9dwPa4i1_dP;2Qn&t zYa1xG!#HhY*z+%b)ocPUFz^x3)1VwZ7s%sJH>a3 zZvm-9r{0I1C-c#)^0O-2);*>B87F&vtxp(BZ-2ifD@7|(v`N!myI0RG-U4l6~w6(cirDiWe$%J(9L$@K2@ zLVFq9ZSYi)!=b~%?i?SE4p|=0-m#QBzRT_2lRxL=IlK0pGI&s~^nT(+LD|Dz3KRBj zF4l%MVAk5GlWQ>ppA*8Oj1C}{gX&>ybS-ZtQx?oZh`NB4jT_yWL!V_v6+nsB6!U-3@eD?P*&o)^P+$6j#}vXfP4osNytb zYSa2I+YyWi8{htpwvA0SgF1ZL75#--up~T_k zmbXiON%6GxkKU%z&iuOjvKkad<#*rE!L=nOrgnyrX|~UI7L)Lq!LrHv>AWBOSwtI- zBETIcN8X=E<~}wgRr&WSxGPJJbw4#{{OYVeHZ)&aHYagv9jbFL^lfl~x2Dc0 zR{O@xv{w5H0fJg56xwAfArpBzkBNRpuy+HszLuH@Xgd*4<%fv}k*jqTsdzE9840qE z7E4iJ8;MRVf6Rv6V<~;@>d_fP^e{?Mww)}7={27e!G)sP6LMG={(wJ-A_{psowb#t;-l1MBHMB+L}e!KuqMeWxO;hw-MFtpT7;VYpBf=`dWlSSnKIWNKdP zFk4%AuO$vp=Splk*G-($I8SG3GkJfuRvkHGHwl%ll0{~)R@OLGNms!|kkdB-^COo?{)dq<^*P6Z?@Qm?@DO4Dpc1Lo2r9e zdCyj(Yw@2NskfQvKP4)t$Vd7ooLHsGNpX+mJBej?^jU6!mX@Qmo{l)A|@0 znrU(9f6lD`&T}D)kgz+J>oJOI6-M}3nnDicxB8F})SPmT`m}0KxQSNLMyalO5;+|4 z7Ez+=*X)V@<0sFx&Ip*3M6C$&pe)vf*nV4dzrvjd>Bi|)E8?_j|Nfv6^QfYAeee}4 z<-ap=AsVrA>#`E@4Sw)%m)4i~cz7kadE>1s(73{15HTuegX=Hz){YHEz^Kwc8KO#* zD5^~$_`jx@|L)3w>i>d&TV(=K1G_-*6(7PY%{Je;EYP>f1^#V7w}2a<3+@$K`3gj> zaR~`*iGr`V(OrQwwNYMMh5*)wC@xDu6lUuNfFFj7a-;O^C{d@&K$Ph=2%znV^4_)w za5$spwqXFQ3ktfU0N`>(h3*J}uLyx(soMNE0H*yvvf!wcWft(iHH7~ziALCa;)<~` z{r^(JD6ZvesEZvCfWRBY^??y3{zV-??t2+k@dBZ;a2;;=0s>e)yG%NVlcEm3uz)WW zVR2%`f8g$s>fbHlLNr1(@E;KF&;PqT_)`55_eF=`V5uwc2>c)T&F*#Z6|K1|U~Bka zAT^3*?*>5n`9I}2QB0SejNStQ__HpP8~3yUB88Vxnj8>HV;hLNjR66$#g|Dwm}}rG zhe@wAG*@y7;m($#hA=GPe-1z4e(WMwK&$e9K(?9J-@$?s+XsTLY(iYA0yBsM1uuuWI|!uwI}eSxGjUlr^$`2zjsEXS z%)fhU{OJ<>&)N(R_&-y`zh;PkSBDGH2*SC)Kt?8g9U|PQe?OnM@N(&KzUUjjul@(= CEjxVx delta 36364 zcmY(qQ*@wR6Rn$$ZL4G3wr$(C^~UL#9otUFwrzE6+v#9`dz>-$8UKAZ){u~j2pT1i6CZ7=~0lHj&=#?sowozzB7*m3wwUmAw=}=FUx=)eZ;1Or zd~{}NCcVW==2~aNQ2E z`CuaUA4}uu727iJ0V!-;H~aMz1lDHz%8n7{{yDokd(C1tmag30=jUCr9=ds!n{yYkX;R zPI2rG=1~{&b=dnRr>4*vu5rRTE1oe;EEQ3Y*7S{MD4s{600@@fZBfQS1yXYQe)_X9 zWF!2Qg61I8rPN`2OT}5|UzoQ!4e6snbv?A9W9mc#f+_Vt$C~0_8W~0&pvu-5ju15v z%*EJ{Ulk*jk>k%?Ewp$t)^fkm{Vf@BC;U(7c-Ud=NGDjib2RSXc9j^-tpSX%dHb}p zxQb&FHTA*)Kn7fGMtj)olHETj#8OzC_j4}mbanP4V7}JsC|uT!aZWMOW3kC|@e(dfZ~y~V z@_8>n(HBd{$_|}}BN~?jicz-kw^>awsjuDuMxTx{utSV9=zece)Ki2N8gV>72h}Ff zkMLQwu2KSk+Ay`5vuwI<4k-X`T zC3FKuw9J@?izpw9&^bqq9=a2_@FsD#Lefgmr$|E43L{e|teI*t2G?d(E`g*W zZT^~^P9kl*MJPDiCLrDc^KR2)Ag9EcT2FSIT6dkBp8$m8TSk z1*6X3q)^8tbec))-fX&3+Q1#KuiEEXA!WexaCcs{%q4bTM2Q2UjlI~m{i~-E^d2k0 zXQ>D8E&Qibix0q&5$xRqy}|gDp*ai+DJp zq8Kud1-4I?3o8x%yV{@)luLxxop@9I@|&;m7mgyG@4g~?MlXxjshX}|mlYX78cr&r z)9BsWSw2!z4K=&cDguESTuA-C{X~@itg`?7&M|8R%@j#UHEylhJc8(`dU(6mJ6b() zmuKPNGQwqRvB}hVTPiT@KE*7DU-<)P1j+Roo;AV|;oa{*@wajDmBdSDok;f2!3c%e zub;RSe5?GeMHYtl=#I}u-KL@&CZCg1gvqV zagwiuSfdRS)+p2mQE=mlgn9FdqPqk84M-$gzDjxTxgf!l23Uai|2TurDbe<}j*O?* zh_W-{8<^99kENpo9RX2@h=FPfDI|R%7`GIEU`3@FtX1?4y!i2F&dvUZE3uNarPP9y zK=cE#4{`On($c`!HF*gV8|hxU(lDHe@SyP1=;F7qXW zx?Ce#9GClVDCF{Y?gad8{44nVc7_Gw>P2=yw@_xKmBJj#CaDn~N{)l0hhT!U%2gXZ z4Le$?)JZHl!ZSJz;^4fQ>J0UB0=o}VQb7Vc3*Q@v^M(I>UX|eI8DvVW(mqmKSMj9r zk*UJ2Xx3@2%;e=BT)L^y&~I%h?lwyg@1An9UC{k>N097VEKJM!Ym%^H!^<;>L%e3E zCfng|NUtu1I5tBPbUOUnw=iap%-C!7oh(*XVeBMcOaP#l_=5ZZ%&-Bic7K^Jn;02NadkRB9_= z*iAA`t}BeEa6Te#g!b3zm<#Ji@V|SoOXf+rU|s*Pf3V+BtBXT|M`}^}?fA~ckflc; zj9sweaZ{<79Y3jTwB}FheMB%&o$T9V$!Y?mV+`VpHl_K(yA-VaVVl57Oc*5KSq%1t zIAJa{!am`;W+hV`s%ZNV>co36u{scvV@P$%_U6lw79BRCug1g>0Z1G zIs#tFh_f%rt5rV{Tj}ukVwSBt0}3mXf^-^RT0@F)pTfw@q)UK#8kt9K#qX@Xb{!uu zq*hW!C1ekWm`&h_gSKk>7xYJV*yO7hBf|-W$2Nwi+uSleLxhd;;&SX?19KGll^QGd;n6irTXNp+t?F*S zjFgG6Zy@?Ppzd(&OkXw}s=I;~7IpprzDI12Jg77$DVgfOt+X$LANKC#2vV*K7(Byz z1-qnezu~;n{(VPx3`tj$h;%O^H|x=%qYh_j1iXsTLk(^;b;|n+PRr1Jk^0qpnIL`L zSlVNL~27L|5I{gd~B_fTL>NQ=#$a_cJ^B)`LvJYWi(9FFt&Bqp?|BPW32O4fc3;5x` zI^vy}xkgXuI> zo9>CF1S_yn&0Ntr6NcE>OQo1X{Z;1bW0B-GXQDs3vAVF@xK|myujWGz417#qS!KfL5 zPpxv@3W&-=XcC!TvjWDEChH{%3i)$Mm4Sav1n0XA8&eLE!0`7RmLbz!|LdhA$!X4( zJOXA-BvKBq>&d3;4R_9Gz}*pTAg&Eg`r3?MHi zXrUI5nN&+xkdfB8lx7!U-eV}wE`J2T@)oyxGDEDXl6PRn;zj8n9*g-RzVQ@xF)5TA z<&a;@Yv)Z#TI;n-4Ow;7A<~S0{Vy2Sz>SZ+DIy99-}r^V8tpl>6Kv~=Ub9DO!K3bpK&6{au9}md1z?T~RI?^)L za7r#`(RZwV-!EBOfMvb%a8C?_uhm`)vo}WK5WV)Kft%D~7VZ)Fw*x$*`jY)JKB5ta z*L~PB(Tdv{4_YPc$VKfC96Sdw93^@ahN&}+T?zTyjTf*a)E}qGjji%d&F05T$EZpt z@{IioV}s~wtaHpx+7x_gL5*O%qvUk4v1mmosgG%wS;;alekSVVo%*|otc#7MtU`MP zvHc5*5w;6QX-F-aNLRnnP=@9`a!&SuoHp9SbU>TcVVmcsOZ8Rwycsh1%$w5>Hfhm& z3s?IcU@4{eMM8qtJQ;+q6)&Bu!e#=swv32Q(&x5X_f%#f!@o=*YolWHCxK z#08Csf2bzRVt$a%!PsOQiQzPrYS*6m~w~rk=hDS9x#05auP=EBFU|51{v^84U(b~9$k%k{kwzZ3-U+JHJcZd zc})&214p-AW2b9eZAM7O{|BecaiVnEILQXMcd}M+$6Z4=4bl1LoA<4tN_Ugzvgz>D z6cA6#4Z*ASiZ&8#86?pHjY4a!L{3}gV*WV$wZAMQA;kF5BJqV$sa^G^m&y6$7kc2j z<&doyu5A$oJ9!GpRsAL=))?%?Y^B>J8ptiU7_NT5;DVJNm)faxnJql)eDhXhfYAf} z?Hk%#I)iMR9zjJD#Jk;>w9TWFrhp(;5iP6jgQ6Q9;eS+f8)rMD@`=?WS^~D z`geXXA0py{t3OdJ;0Xo#blQ~`#9HC_tE(=< zOp%PdUOU)xac$Yfg;{j+zZ0hEp=bdHf~HxGP;QRo69)mxtJ1ShrrEUwaBE<`FXI7eEqh>)f29GMQt--aWV zMRDgX0`h_AUD0T;+onceaW4;``d#Dz_*j;0{3Bz=cY_eP&oL zC0i>sSk1 zXm{OlrxjOgLynpcS6IL<#{;e{NjIZ&qr>hKMo--kIR}=WaFxJP`eNe9E!K0Ui5_E# z`|VbhC34#q+<_;r1p`{?&V#dL$FTBZL3fOq&@2mF+VD2CTBa!R->>TNAvS-Qqah9x zGnZ~2MJ|1?VjBX#jVWfo!VMVfr8^o}wZ3o?oJ$eAL>|m4cs+$LHYJxQ3 zR}GRjX+~6ax8B-<*OPFGA%pU}vRXLJby8F1zQoz|5^Z7%P@2~)uW+*?zbg<-xEa1N-ipwKSYUQXqT^|7 zx_jj@>zki?DSgm(PK5dA2nG}iiur=B@*mDoUe1)K3CB-Ezd)NiVm0Pt91TD5pgjb_ zI;BXdy1YIeyy+=)nChIdA&MzCX9`JWG9|Ltn!U;Btx)@4Ry#~BQ1h7wHZ@R(%jVid z|3rI!LvRBL4STnv<#(Q#BYqHqWuxm{wRe~sqLPb7bTSc^&U?3VbMy0CTtT+$L2pfM z3cGx@H`Z3Tqe%x?y${Pv3Q92zewt-(=RRx1CN+Wqce*;MmV5T3@I*7lxm@w;`#;x+ z1VV@fMg{H^eQf+AIfr_kL>P2kN1#0Fbw{8JO!rRFF(|sDvpjkEVE_iW10{7yQwYAjm7NYU4}!Ce z%IUK&V$(mpjKk!4td#f|df~URHcG0WIG+Y@x90|S_al=Q`9{U zBo8r{_MBOC4LE7O%Iob7088&ribIFxS)eM_rlEFMk%Z)2UQbDykd~ul7M;tc-*GWR zZG{eD1bh4K#J{KyJcT);##pLkUN_M5%|1dms*l#BUDTGZTX-+FOiU^i5u4T6NV7iT z34&_xQ+d)`zrDabycvLmv5T0jS2zoRO*oaTuQ6?{nhYK%FRELruGtPWrw|fQe0XA( z@jedR^U1D=9)h(JsyEN^N5|#r$+Qr+aLTRd33iPt-!H!a`yo^tA}ff6}-b^&s&cZSzm{gJ?^(Wbmc3*YX=`$(p3z zwv6yrR@D0x?&Dh_TQB4tA^^a(G1RADxh#c{a zWf21R1*&M4uXbE)quQy+Qn0cgyb+1e9oWLnCe~O$q$7Rq$cylXJ$}vbyb~c7D59hE zkoU|TH`pToD-{R7PMV_uIRqTaFjl{49))Y6eY^l@1fVf!=;Q-YJL^OGBli+0WNo-8T$Sg{ekh|vk-4Y(z;F6 zpKfFB1L1?;ZUmgcQ52xFe5>#=#QlR6eNyF&S`ea2J9V(Ne*{WF)|UkT7vBg2P~+rl zc3tR_lwzzh`vsw7Wey=g%62X>v6DHL@Bo*BsiI#ks8gO$bw*CbtCS;;wv*uXtg z-eEN=)t)5=lR$ZP8KRDTO0U`YDA#2#vw2xCojm;4%Yw_|8{sLU-oN~WQ}fA|E?#&f z%HX~J`($%S^W_TV2AH!oD|XsauMt{=dwBF58po9OKgCzP7#R$J==peyCHM0LB36&i z_yOVYllun8uuVv3t#n&hAKhYi#;Ja?{8x)f5_y+D{NS9}9R@J%ir}#7O0KBo;ctD< zEt($PA=gGLMelrxFe*Uw>!b#aHntduwb z44HfONOoL6_JT8jHb`^qzBv#aB~Bo#WswdyWp)&18O1K!W>BGiHwYiny{U4=G5C1L z^>QJOu*54rF5Jio4CJ!NeahOaZ<=ExwX`75w>z%=-U94C%6bB)TEE?OJ}0E1NqsG zL>Vb)in&baxP?EMvWcstelgWZlXk*c{HcS+QSF2V?q`E%RI<(U>zT>cxWdQM3bAtv zp7`drrDKtu4f_7fc1g8}iN{=GQT;@GBSD9n^tcs6^d@QhC5vv^7K4&!3FU9E*8dvA zr2I5L(L?Nbk66K9p0$vKGQsyw7|B1x;jj8{EkL)TLK-qvGG*H16cf=MuIF0)ZxysT zVTD>3vc!h8;UKpTf()s`Y@^IC6UbVs`)^aDOk`%A2Qrr;{peH2|K$$8A=#i46a=Ia z5(I?v|6R8~xv>E?d&Na1^nmM?d1W5_I@q2-_$}BF79r#)Xoh(@?LM>cp?Gt)#$sFP z4HO_;FqARi2WjM9WAA8rUd%}gf&vFMgZ}KK|BUN3|H)&(=hGWppm++o853ziUhg{- zt%*V~i24Ai3<;(3f(Jr|*#|*-`Z`ZjwmTZo_FZ_1YVf zIJGivLkX`ozzD}?i$#5a!~I`inRiWR?w*3-(H!=WkCAerW|%GXfD}Dpf!eP{m`Bt> zHNQS`zeHf>FPrz0(UX$kin?qop3StUd}l$JE%-RrUrf&zq}Yx+cb}9fXnK&*mEz*N zT(WIOCb=E(={a3iyq4=$uldUFzw(ou^iPTGCF8t;e-i_8RVT+x zghn89Bl9zKx{X%{MOtQOtzIBz^3d+|Mlf5fZ)<_)U}IVibM2Rys4JWn%lG5@`3zqY zNMciXMr?|M$`R)S_>ynJ&t61Kk2vEt-3zOzgVA7}Ri+On82@N6h!T5voA5e)-_(RK z<6{0^^Z8tn4zg*1-`z@AE!+OPY$dKNb$AGV&l|pBE>}f8oXpN63LFo5bT@(S^H6VyPtUEWS~P+@YW;uwH_5s&@sf`B);L((~8& z2<(#Bh&$yweX*|`erx=~%E(xUd&D>cVBd5OGf6E5%(TA_Ns`!;BFhD;ef=dw`;HV; z(?>{k6!)D2XN!=fAX=prl&4v!RF=5T9w$r3RfqW2t&=9PzY+cy^9;J)gR&nWAVpvx zAYA_sb0mH#Fl2w6Mjig(9}wJhl$RCBdjdkhx59rm#n-dX)$aoRUdPx)@ z*s7YDnIt_Q`@_+i@#xlPb(28i=P>21p%gf(ydTKV39e3h=qBj`X-i8B%bqt2iw!{l z_=04Lu=K|ctVm8@Nfc2|FCnvV+YBr*)`$o%L^dZrPHLkyIbq*iy$vKD3E>g-@Xi8& zCQC>|RX61oawM%5F+^w=zh-nj&7dW7K|TRM{gO0DNV>e^e>-3hApIdM0u zB2gW^k^c%`n+dQdRBp_}QQCEUT)+a3N;#8nBCQfoD{9N&Pe|0^L)W!em4 zB2|Ic6B!Z03=!euNRS9mPm_Vf{4>Vng8A|mcd&BV*M~-j(-z4LDbc^mRJsRHi=K&e z;jnz)X>zt+*|<%(qqEQZhCi-6n0)wP-x0wIa?N87Dy2U;Me=!gJR(AfKyeTXL%>HM! zp?_I;Y?Mr5(uk-x1#1FD0DXQ)M-@T_$bO-x&rab24^&1&N^* zX?|0f`Zek*)9D-(JOoT}-uT~KOa;6>e~|`?SD#85OGGeWAwVEB@~BOX9~Fdqx67|A z{mC!*&pvC_=iM|?f*mG+Y(BpNwBZNcH=1)>kUZ(X+t=KwSXEv!2i8$~=nouJ5MHhV zi97w#|K@H$`)}B*cMp>8MbACp#AIIR1T3Qn8=*MVT))vb9!2wyvSh{CqdqIO`8KSx z?m?yI^>(O)3EN7bu;)-OAq~|t5$v^0VQZgFquaWTL|6VM|3}z2{7e!FAYb|hNO3*i zOA4*Kk)ls)Dh?@o{*{ew^+c++(E7jSxR|6)JI0e3)Z9RKU&1#Qn`otRs~$>A3E~A{ zvWRFu`a!+zb90HOCgbR3-)qg^a%8oh>+x`(@B_>mOjhf^Rxoa49Ib?|&cxGlFp7At zU-l)XcqcL&l?F2%V*$(pPNx67=V6_y)N9d&&sQy(q@RB)&XGIQwPIXL&W1buHS1;7 z%J(b_F-|b3fMp0PvHC@lOh=lP&JP7hB98vIS7aPYn~iarfYchN&?VoyApzkc-bPh! zkmCMe^8Rq@>*@d4b(CEx=SG)Q$-F2%X|~YFmS&*J8P~W`$pH~cUNx~u+?|qH$XAeX zFIetc(@dnozD24BV!AsyF)MC|zvN`ycx^a|n*;RsT#32^Tn?(!`1ft1xiW;OZVPK> zhQ@!qmRWV#X11=mszNo#N-bsc@~7u-;K6cwt&-xX&CK}L=^G?cJt53B;WA@?V11yq zMNt3MbP^mmxuYd&SZq`9$iAmWXBOEG4Yh={$|RA&{zm*?UaR3p@F9|?#bf}#Hu;lL zWap52<*l54E0X!4P&-+s&b2K#wrW{#+ieet?_|zxtNk#+zMtlNj*}F4WKzk`evjO< z-ZS1CJ3zn}s8e8SEL$Z9OS#3}kOYDv{iRkp8Ve);nRp#^h0j5#kw6MM+u#y0GXiUU7+yi8A&Mx@E9-<%C z;OnfBUoK%i@Ht)-aR>;KE`34C|MBe)!)?3a^FO~}O;63GK!Vc_RtE?;o^|Enrum+g zn*J!R=~{3QUhR0qy`NkYk>JzydWg8+Ijv@rOZKzIh_i7m8akSzglO*>(t`PGGd;oz zwGAf@rmmHG0)4L|alntPJe-_j7MIHtG>{GTJ~MKv5i#->80oAkc=;{5lAgg2pAZYu zQf);d82QWJ&QL?4wrzN5JA)J_FfVmW><8&LSraX#Das<+b16uaVT^0I$@Ladld3)o znm!9&p*3yQs0Tj}I5y;qU#B@VieIA!m%2FAO9B##Q#4nu<`plD49qy6s88x z5RTJf^AxMGMzR7Fw(z~@+7J~4!EDv_C7+$FfcBif>ZLxu14^%$4 zy-=~OY7waE(J0tdhRgSuC#liMA(5B)(wmpcl9m4X8_0&cFtJyn81XEv-+ zCqAryPQge)6osY{X5Qqwqg2k;`zy>Ed#qu59R`_N_COWw3gRrGR<;Ml}FCW?>Cu82m?U7 zd>hMJrN)%rd(s5oQZaQ7PNuP$MIpJwK)Y0pS8~+crS|;4VqEk52lsZN)C(0_cLQx< z<5N`aipemSM9uT%LmGJoOlP#{)WEda zpEbKkvFU(=%xXoPd>>mP8;i?M;e;$^Cu&Z))>NaVsNYpK8cX)oRkivp&Vcz-rTQd8 zCE9DMBdi`_`DqN4D28(5@}@>T3v!v-UVAVKitgI5zBD1}Lb)v%LGgG6QcF14-3%4G zUMe^5YybkpKn(^*Nc$w|{7Te{RX(?w23uG#2Fz9})L<$7=xM_g-f2YYd?#NWRjb^&>=yObBwT+JPe#C^!| z)U84Q#R2NS-a^5O!-EIW2)9^nbIM5mI@iKV7lf9Iks%;V_cNnhp=DB(-+Rt!*`o-%fYNM@ri)r3V>)Be=!mKz>1gA~)0 zWTDEYyGGup35-b8R^?Ug)2SRc4?Yq#5Fn#eIG05c5hDpSS>Edj&CuZrOjLb6$1K8_ z>P;;e`Gb~~DF4a&1~e{GCSFyP=l8vVX$`UbDBF&4?a#;{eFz7o#=V{=%O?rJ9cGM! z&^c2y?2xSF<-wlwKt*AQk%DxKixbP5wqmioR3_JxT(YazOTZtOMRV|GDm|Qb;OzW` zng%73v$K_}r`3s>_=PHYyd|m`6;PR(Q(AWC)i|u+i?C3VK_rCp+8Y*+ zHQ6;9x!ftg!6u@}qPe5OJPFg*%i0Zop2cv~bEy2{vj8b`86NGcSu@|I*tFZ7tb9@5 zln6cF*zXdmj@_^_!CfG!fxI5^2mLns!y5>-IFi5t1Gqq~7ZY9uPYB23jh-viAX+!9 zC;SnEKTDtw7ZWFz0ZwpG(-d$!{tH)4npfr9%@HiZDK?`t8q(70dY*kCkcYcTml11@ z{SMb7*Ti#)wWD-HXNbWdr#eodky0 zfY6q-46HX;v7xdb`j9`a1zDrOvscBSoIi=T_b1>TQHVNdguf=)aUNp6H4t~2l@Yh@ zbBOkk7_uL73|IEu2?M1H>v%r}SFI?*K zmn-K)nSrk9#|P*;Nu7__CXX&U>}N`a9hdL+RHlF`x2QMMoLFX8SxO{YcGNYy1r26^ z=r}%9RR7D1Xl2G>>AYAA+a>RE{xATnZX7J!uP86S!n8l3o92)HqRHX_&Yit!4e?G2 zkWRdl1XVH5MvF~o(lzoC(A<~c@O#QMTUkBXk@h`8+qW1)S8RGk=-05#i3LpxO|iDv zy2P_$9%j}xl1i`A5l`6$)%?hmJNy5t(#Q^W>Y8HXI6!-&0F}2IZ3d!!I?1V;J>%Z!4b&G&Lf|Ue4Vs z4Aw^whQ-7Ah!q#gLnP><|A~j7BKRohu~J1RZ>>ipY0q%_^iRzKNVu?@d55-rKy^XE zb6`A}sCe909yEAK-U$g?iYfWSgUI;!8G#C8FA{e3WWv#lF%Aaxq(j*`XUG)j;$8;1 z4XWzEZ34p&QQWKQKgnD`<+!QXHBVJ`gSJC92vgNERseD}TIPsLb$fB&y!g&wvX45g+lD9=bgnJcT%z9#qhv3-j zV{ULwxx4?hX;Wy4LAQDuX9f;OL)z-!=wlwITKRjt#1Z+=8j&$84%7bf_3Vza3haOwzZe; z$%97^y%2|QHiG~FqUp@Ii2$|h4XgdH`nTt8MI(eof7p6kGXG%dsQxSNhOKw~jy&wJ zt$?n0ma3i$vJO&Ld|A3zwfH0*q^VsYIN0(=h%eW-`?J2?&C!j+reyyZ+doS+<}^FK z?lJ4rux+IevIazAO(&3%AMjOI!?)r4D%^o6?&J{(qj;gfgw88~;_Z-41Gyqvg>Qkhgz|}^rDtzMV;{^beu=w#GLNR>K|Gjk^-S>!a;iG| z3vpr`j3caeM55Uf1G(L-8H;2@O&mZIN#da(Hq8gLttnLzeQYzn_FQ(hQaVW)w1p z;y>kylQ8UvXr{18rC4>YpI8s=xIe0mUG#z(*o=5rSTI(YuU8I)?fR12(7(fDy%5s& zG>iR^Vqc*$oj|8q;7en~qveFEUgs&q*T^i3^v_X}+}G%`kP{Kz#+KJeI7w-ch$-T4 zKdJ42-TF5XUpgu4$4as!-y z(z>CT2XGguGK^PD}pjD>m#xS%=v^J z^1xaHIHWp_8O>Gy`WEFj<8}1W_#>(n7Nb2&VjE|OJ-NRpv8gG7e|Kt+=6$aCI3R0;_{BiV5TO^vp(JTXyS4fJ7lb?w#%Su&Zv|)^?j4JS<$zGb2qbnldJ-b<&I+-XjR}({B7wI)70|kEtxhL$lR-kh9#G4@R>PGLDmcXr&&QYX{{aPZ|J;1g{mFA(}_- zT?~%9C-<@+15r=<*a}~=k;`KI*Y8XLeO4=NH&?I30Yg>+KUMGeEM41nz`Km*Yl_jg zQbq>-;o+FsuU)7OhT_!)CO5|UjBm_8LJM+8>-I1{QndGyPi|SS6Js+LVl^XI8Du`_ z?z|WuuIt6V)|0w&lMaECAuittL#L_ZJGrP)yr%Mr7Chz;@JiJ6=NnuLU6>b&Mfjl; z^EoI5tMaCIM{O}l=Dc(t@G?~4c;l|Hx}pZfIjQRa*&j2}zx$>RjWGpWuO>*-OXf5+ zf7YQL{gt%ix0}5g)(M~P&{+*m!rB`b1ibHvs}<{tnCO)y)!PBeOJN0SQJcX`6?YE9 zN}qMO4#lov?7wRf)<>{(RIyl&&aO0hBt!(Dz*9)+C^)4BE38*ab2 zg}L$!_5PxsKcOmm)|!ATnzzVdahO4DyqC&hiBK(@+8d&7jP6l;OXX8-I=Iz=8dp|h z5~3vNPl?|X2nVIj#7R=U?|OACt@T&Y{G%SHN-+~qyrXZd@fYW6zJcC@8J5r-9PeI5{R~WP))G6h_7d zA!21M@0A`(Q5+q~$|Y(({(GeOtTgK@@)gN#u+Yue<*#bTP5k*8!8$nBlyG!Ldwlzj z=g%VG>+^s-@Zq&KkS`cC?f?xfPlwBKU*rcCvwC3AEbw@i6gKIT*TPivX+f_ye}AHr z-gp}pR;ANpvDXpi4aZ4Ghwg-Ch`39;xlme1?`K*#GzW-Fs7y0sAD~Ubx4(IbGF>u` zOVM%IT#$J8t%@#im9z~En&(Q%v0t7NN%*bH!rps=ODgW*soit)i~n0Mn( zyweQ^0V#r*WDH_7>jsDH9RU_ykD-D`!ed1?N*a+dm5peQRnU|ZA2|js{SEuSZyXIMY8BSY8oJ}$EI(nG*_<~u{mp$s9zhpt)D~yu8 zOO-nI{>y%~CBT0_H2V1KVa||HZWg_U6d;3WVy$^H2;?sl{V7n`EU1b&ShDQEtMp6x zFO(B%8Bdy~kwpuNBbGle_7~bnRPy9!*hkdfZ_oK}(BqwL$3tT?<(GNH4*PvJW$cS6 z0g+7Brg-z7OYr`=F;Ala3YEXs6Sn;}CJU~RI#g`T=iI}WPARun6!^0^cE&r1kbq}B z0A+Elc^G5qdpb%*J9modgc;!!XO`yzbK1+kK5SMQEiEYD==_^PC?1HIV)Ql31_NIa z+x9x@m1`6+56-->BYYB~kN-w6h)R#|9*0sXVXA+XUG${4V)8B62<9pWjX*Ss{+s2$ zK>yl*QETC3<#fViA72(AOI}J;q+kwI#|AnjUjuz%rA3I1Ek%avmqreGyL^kjhjU}l z7lQw71*88wWf^0S+kXm)+`m%RPuq{DLRJsH7t{bZST2I(@pjIaP1l~A&Xdb6%UQq= zbeI0W%xdI|&RjUN@krSCnb}N)v+$^R*H2;Cw4n)e0!=2AezH=4?U3CspEL?dG%b}# zkOwv$^SCk`2Vs?MiY3&pRp*FMRCE5Ra=p@0!!B3S1B)yAYt9|0;T(X7qBQpo+ZB#Iyr{)v{6ba&lDC)eT%8C}7kU zH?*#f!cP)Ujxr;6?Y$ zi_a&~Ffq>g9<2)^Y&tvONv9=}td>Ri zv_M4oF`>akdA%c!i}i8AJ{|lnEI9NOyWh0G05R@?bt<@xDV|MvuZ0lv~L4 zd>WwGZiSx5!oIO@|7MRf?}@mFdz5qZbwZeb)!OcmhgE<7__>5`+9ijzWx?p<*EciC4>}7K znw)*nrno9W;*O;X2a@NK8d7fjzmdCiOIj-QAsE0YFfeP&d0H< zz5WsD4TnHp*#cki3?2x?fl?Yp`uZXG8o76A|5tiJAu7l1C41{6oBxE{@gwU3Rwt?JS>Tlt@#k8@vbdcRs@!!paHfl=ZN zn%js!DLBiNe*R02kvSC3L7L?eonBI5wMQ>`J6NmHnq1jU-k1?)R>jAZxmqN@TYI*< zl^algSS>lwExpx`4>EMeKf|z7u8|oyCp8bWN2kF)NjSkptV;y6u7NQ_?^y}ec`(+6D~F>&<>SP7w*to*_faM3aaVTc>X7(#dt9T;kF*tI%waeL zjre)Sai)ZDJeb_6PWqz=aps$5r?#^nD$@LGz6(z@;L{t=3dbU9M?=k8wfav zmK$CWN3KHbT;MBeO%$WjWH=4qbw9D=u5;&FnCB9u!bK}*sY!eJxw3Ul~u&_8V57}4_D{FoLSUu>)5vK5)r3YOC&a?<{;4YvB-f`%Dgi1iZ@`2C8ELU+5^a%q(n*Z5%l6^;42)0!r}@AZxg) z8K3Bj5+LsiP?dV&BY1gfp!lll=%;9^VX*V>lp0}zrf>v zaue7vGs{4cj%r$1!Q1^aTeYK#B9_bImDw~1T)102ngwa27><)muGcg{r)2^_szICQgM;uk}yXw)5$%- zkQsp~qoKi=4a$Q-sr68BO%9k*&21Yy*TOrfSFf(s)~znBm0FpDNsclWwbt%0Dd@gG z^{qc??|!`**uM##>})2nEIq%yw|>lYp7@>coouBizx=w+_f3pQyPLnO3;_n56vm%E z6U~gVFh>Sq&fOn`AI8e3)>LirM>B z4VBaO42VU07lvcqk|FmFM*~MaGI6HV>uwfw^=QNBSk$5mB@tSQe6p3EZ_o_r!q_kj z%I-3Wbmpe@DZVh#F>l}u&I-9+8B#C!_2#Qb3Rl6JboQV^=bwI%^Qj3+`K?D3Dj!kZ z>Q}oozhFh+>tYyCZ|F0HX|UL#3`?@KL>B5J5W;!V^~fB#3aktRM1g^fso+F-#}28! zYCAP|SfBz*RxRsdpFQeF_C#-#`So{@aE3I(Tk3t%=K6){7(07=f`2tPQ9Kc7_$zJ_ zrbJRbt9s;)5~hZO#~TWWl)c4|qSfQ72vj%KcuzQ9`F6Fpx3{&nLS<$D+qFYwbgYWBbO19d3mVHyOFM0S3*2ql zgw03PS}Lnu^)+2d8hWh-UYua)**e7%2So;NWb6}9jjoK;u90zDeT&{EB2a7Xle3Lv z2D`+FIZ+TZ>^X}XjVNZ+_*rFc&h?)Ca`K#9o$ZK^hc`fra4~-6TF_EDK#8?py}=~h zfe#KgIE)n={Q=Hg{#H-s;Kp4F!e2ey-G;HN#=}RR1X*S(*j)8bQ7Z~f8y~d zJ2OWiF+l8w2mzn)c8^f9MRymKH6)VU-^Z$%2r;S^(Jf0%MB3+0Z3=8&;oERd2hz6r zjco7t4+o>9GVFA78n#|#L%~Tf#tvtUpg%TkeQeDvSkge|8-8-!_4MOD!m4m|59i!XUy&%Ybi51Eh2q(f_=psLqfp{{qFp-k#8tf5SnHbN{xN*k4R8B4-I zd5RpEQCJPsHvfnDi2+y}nFjBpd{re@7^3%S&6Gn|#$b06?g%xm#^8yV3mSB3oBmk> z*~F{G2?t=SfPU@M=%BQ{9J879Z+ahKKMDvfGd`wy(QZWMV1vJ>@{=}%>-~%tBEdlm=%8*a255or6BKnjoUO-b)2)x&uiY<41gO05i zNieX@BAkdVjmZ}2d2+wCfB9y@j4or|vZ7a0jY{G<$ z-l&db^E)vgP;3^=!@{yfJ3cHJ%+>-*qb!VKKMFy-{ee#2!aOHIUpIR@aI(&vPGs^d zI^1pfRK|LLWqWN3OV@^xVT;5aBE2X#kR7;Fb798KJWDg}{Zndy6MrvY5eZ8RzB`>x z#K0<__Uk=UR8y;kF;}2D$R$UUhX4U@%=?Xu@Sy1 z3$$*@KQ?aE{)&5_c!uNawhzn#MT-J%KM>|OwsqEP*G-LS6`9RHF(%*z z3uT~(KfGfFEBbd=C9P(t3b`ups)+%ML~d&I-V zJ+00^SJ@L{nJjg;?I9=rx(H10m;~s}nj<%KP&qG1Js3nhk&^@|d6o=d?@V?6ug8Z1`MuUG;3gwaEREWI5 zyChoOpmh&)0I1k~@&oE_pI_eb`sW-;Uf~OE#c9^rr|t@GodeJV(inkoFd49~ng{JK z_FF)$Z${6!HjWu?D1U$l3jom%SC*wPk_Nld1?LD1T zJsP1rUHjn-*9-?*qExSI40eG{$>t)kl(c7S*-x<+;($~&{Tm2lPSxTB7YowoJf!i0O`>Ww@mqendg?A|sUgI^l1D z6lhCM8@F}j1KYGfPqh$EXm!U-#KRzl;$11}hw0t$TzZ&!ujPmV>NZ2p*@r9DcIIQu zooF88!9KUa&$gd`<-T1`lY!6b!3R(NmAiF3(}%8Y(mTMK=kh-i3sM>%vr|8$pN8dn zSe*a_1M+?7dn>gad~}AXbxroMCfYfeO)k|akIJX~opVn>cseo$99soXW|(_DWD;rR zSE&v<2N{ihkaIcyHTICLk*j6u9u`hJ6wmG_an$t)J?UjS_v81Cj36*k)RBs6CXC3) z=e7-mgLB|Hx=-h3t=cEV2Z0FtKd)mA@fN?np{iAv@xvu%On1WKv&pr1d5g-){q zP5hHQ_8L~@>2?QcloMzfK-u3(tFKN{ae~A3gZJUvL*D61((ANv1A&m+Lw5|pn!X!Wa{ra_J(yAwN7_zaBGyh zy9K;r+R3?##^$^cV!FK^!khmw6AjWG{&&=iSYvBKLD8>VUCl-P(RhkaK2F(15P<9t zS`2Mi#O7p&`#WAcG*l6J;pbhw_c8@OgJp0cKM#5hH$`E%o#@Y!gqL?i8K}a{Ib|0G ziq_yL>r#r=8Qugk^`!s$Op?*qNb}Kw?fmlbM#$ouL4<>U%UE2V0JiuV`SxpDsYSJO^E0!O2s@-WR z(bX1(wq$XtfV(ejCIN*im`WrbBz)vuIwJeTp>Nc!1^l&t9n;^1@#9}q4>Uai{|@aO zY}k^WNFA!5!iMG%l)JdlJ*2d%NEh?-5E6|SULuCK27L!a3rvIdQPnyxs37P=+I9e% zHPzp91T`o3O}4P&5OmoGFKtU15V3p|o8f`eay)_LM<8j%FidVTG938diW4VIn?5>C zk1?}rwt@8fjz^fqhqV>_;>+~FD&)l&xcqyR*_xY9Bvj29Wot+CRhn5|@n(99F62by z3D>0@rXs%>KtUf;^J79ms>K4-$h@SEyuF&jRSN_sno4bZMQMpnR+5diY*i_3Wm;K@ zj*T3p#n8nz?j2w@>H6ZuI}K@5#OP1U0ByZj+J^5EYF0Kh6MbTJ^3gdEM*+XsyBCvR z_8vJ|2%wQ@wx^dR2TE5=G}$N7ux;_}e3s(v3NP(-QBk`@vouv) z3dwf=d_fN<3xCw!@b8Ar<;Ve^e3lqbH-FFhTE~Up(!+^3cu)e3N+G2xb`(|xS6SGE zM5>WucEfAWc2;3+ZaU)<&s`}`FV9U|YI#LY2nzo4N}v!FOCDxWUH^jMfQQxXxnOQK z)4H}F+<{p*53H3hxUOtNV+9xHx7U4^}ys$J&|>1z`so3sic7n z*DYOF=Degi8j%|pzr@IDbOa7$%7GgOj|Sus{26{kh9A%gt<2Hn7*weHRJTA2q%Q2# zdZQBEC2gHNNV_zdqNIF+5KKshX&`&0wX^ zV{9QPU-83kXuk9146k%xu#M&X?9ri)pcEiwUhuwH<7Ro3*A3E{tr(iU?U-JxO8Qv+ zU>a$NsL5kuNy-)ZtyG4O^KYK>Ao4+zM5$~p1Ou|qT~vg5=RG}X1eZhD_olPsqHLj{ zsPEh-C%Oei_anh+wyBdOt#3-8}Ia z6ac>PZB`pIr30(bGHuS#d0D|Ld7mhy)Fc4IQQz6YC}PoiBm%wXc>9xLd^qLb+@hCFo`NLhP2&(#G=-4r#ogtsL z(Km~aqPjb|rfu>l&ram23?gybf6_cxwT?-qR^P?n+UDxXK%+)hYH%z@xPBlX_cXK{ z(&x9JW`X8yCwQ-oc|rSzeyB(#5&^Jm8o4YBgg(n4+|AJ_fZ)jsUHJh^c6`eX6ivQM zyK8uDf?fKHX=&&_Vf$O%rUVc2bhkuOW7*=(bCaR981o%@Mz6z?=absvuSx1x^w$=r z9iWeltW?}OY#XhExp>xj(UEeG|BaaEi-`_{6q09e=p|fE?iQ*8j!_7Cw;D01aL|^> z{p9<<@)^m74|vUL8L9Ay0H_)R{eN7?q<_mYvVV&*tmK9#=wyT^7+|iZw;zTk;dkF9 z%d{DoHBBMD6+Ug79ErAQCmIqw?5GtCJE&-Z1XcI2Mbc)byGNR^Kt-F4uH!}O+WQb4 z-KYh66z2}K&V_&UTCq*<1@V*W=-d13B~^DeCFSw`r0@OC`|tki>*t-k_iHg^aIH|_ zoCrJvkqUoL26T2fI}kZ8M#GGPAQ5$_A*7hq%*@L*NnoPgK7F;DDneS>|t&GnWDW&_%|>BWX{Nd9U(V_Kn4kw;bi)LEX$7 z`yM}EN)s8)K6LxU2q1P z*w~ty!cT2XXPYTGoH+T$8J3#TPqg4I!iIsPCd1}(U6t!RjEcG4^@l)_q&xl81tM6g zJo@^wVz&eQ%zV9Fuh7A1TIVKN;kK$t*nTkf*<>u5yu)4AM zI&K>ps_Nr7%m4JS=l5i1Wh@8jpN~YYE{Fh7%MMoRA+qlZ>&1(9B0|U~y z#eVI%GjL^N0g2Sf z0ut(n`v_}WZKh&NZ1BYS)CT#p7A{|zx5(5z-P`_@c`aVe}UAG_s1l-x^8Ff>b* z5x#?318O#g-SM9HKM)d@o%%wU2jo^FrFLi)1~A4rePBo>!eRDQQm+{^<{&0G+$rtu zml-1M3qpPSK{FiDSV-{v?Tz=&J6K=EAGw#N;QBw+XnkdWF1XA8;J=iGNMZQF$J4!V zQc?Ix4SL=R1PQCkwh}__jw4T0@PkNu3ebNPh7i-fu(*Cg2&LYzK?;pCVdRW6VSd2H z)Bbxf2NeHlule?rMzQ$CA?BKqdn1L~erZZ^>il6aM2zu)szmdG{#Emb>4hFO9h8c+ zYIX|e)@Rw}ob9;Qrz#JwVyDpxO#!UXK|w*+f?nnmpYOx-Lu@cP1EnH6%D{8X?V*H| zHpNte@$!&_DX&sX#+TLtqAmxO9c*3SBocU>oM)@Q(iS}(lr^^^8D6Y>&~)jSq8ANU zq~_^d8uBZnwlYq)8w_C1XTM3rQ!DgJwoOrumenk0Uf;``VD-C{s&$DjrwdW5O~$^2 zMWyUYacgQY2S+UK$R1V?op$|6?%lIA&tV>XmLvU5ZVR<;SY(~%@RGAqq;R?qd8O3mXX{$d0%I;bJxi*ubVXuX7)@V$A_nX zBskj!&lI75m?`#UZPPSxexZF|rftg@HuAyB3nN2ofE#iGd6Xaui!|0*_=6QYRawa0 zP{vR5s?ohGmV6XB#Jtq8xJS1-p95HMfEJ&@aNWC7;+QZz(^9+sNHYLA%R z=KNIVehA*QN9ON9XH@udc(O`~N)LrZO)B21^w_smlx{AgjV0=K)ts$A#Q%AVvP6w< zXkT)}zl#zniT7h!|CjQ)eZX?=9aN1eIG&~Hz}MYXx1Q(2o6MeX#UB|iLIdE%W?DAm zV4CQNq3rZDy_GQ}{@1l-3w;#9FOjAd2u!Ubwd5>&jMuoEx*SIPjP@T&{cbuUPo!G< zvr43a$FrT8MB;zt9mzb)EED;byCVb0-%f#ic}m-a53R(Q308e=#;-Ku!%@m=?Cfzv z>nKn0L%S$QF=PuUNO5Ev%uv8H(4v|Fcq;@nA?am!>zY!5q(DVC(7)KWMbMB!u%|H( zFJUM~0+<|@sOPp`D45zaJn)^42&p@=lSNe)jELGZ_{E+~S8q)nb`Tfomdb3w7Qaw> z&Io6S$B+0lVoV2NMA=vKcw=w=(sOHMogo5Ft;h&ZbBjF9Z$sP)hJNwQI_U=mg^b2?} z&~txuf>7=D>n|V#n8a!a(I`<>(2$a{^Eh}U_Wp3EJ?42?kWup_NQhxgYZHGi??r8k zgqFA6LLjw5$%;$Klvn~u;p?@}0RElku8BinZR&QYv^@byBm@&%d&OQ1lY4rywR=xAMT?#YYM^d;HC-f5h=vM(@B@GR_BTMF=($y^m@Tplmrs zb4Q4g!N#&z4oUWR5VJTVIp4wv)Xtj<^CRi=M~d7sAw*glsX-WZz6c^@vNMtax?yLj zVIO@fmOdzeJWorS2_=Lix$iIsAvb!2;v?v%#i~KZ&cv&mp!))he+OsPas~M*&z<0r zl2Y!qu4Iw^NQ?kWQF=W+B8m!^6xj~pH>gP|3g4|~YP&@A0?8>J3G3sES0(8N~&GCu??8^6>xWi|MNbD)z=tO%UW+!4C&Q4pRP zV3Y4aRu&B4d-@%IT?KvoFM3W8uFwOl?>~$Q?my=p;Qvk~dQa%U)D->yMB&4Bt=sjx zev8)bzNnW<>%!^6Wuc7X$V5;{Fxh1N`Q3nEZfrg2Q2j;j*s&m9v^XNi^r1Y)*1Ux* zi^#4pKeL(p%yYe&`THNx;REc)peeXBhIxk451Ppal4S`(a~?)q>4GBD%t0$Jzi~_^ z-SA-Jrmp#2*J*2@Hhvs^-a@GU-wr}0JGk8wM4d!fjgFqp1{?c%Yfh_FqB;|1Lyk{Q z&)<&%#>5pZv_08bp*GXDT0yWEKgZ+aLM%g5wn<{otuAT_=~&g>v-aIj zoOHb$U)!qnTJ8R>b)HP{_f!yjC|m@Lx6vAF&F24g$~nIUmMbn>3z=r%2FF-cDOzm# zBB>LU2k*VO@9}iUZ5T%!!(Zd5v~sp1bG|BXqztN4cb2+j7N+zw>ot)PPx}i?fN6|_ zAP~ngT4@KbjX~uKicC7_R@EDn$>X(Zj5mieYzY}fqnYgE)n#XlP@+?*P$5t#Y>yEV z(j&NHyP53+p&X`eB1nHfKUw%1ZrF#NeVeXOttOUo(TOk_K;WJQTHsoTk3k$ABDsmu z>IO-&4ZK9YV9^Ks{L-#uRE?SDv%}J~a)7FKQfEQfJfsm#j3vQPLe#n|XVmsehfAB2hbBeaxx7xqsD8M)L*PdxP|pw_ML50hjt z_A5g8|G!JbQqFvL<6qVp2mk>g`Jew35m>AJACY-gh`PCF@@4}JG;CHG){OFU8lsRC z0yZo#q%^3jhk|Kxg2DM1kz(mr)LL(AZ7X2ycbi*dZ3TrMbZKv-!u zWdrKh$`EQ>{!xjKXy}i_lS)?4Bz6&@{F!oT*Q)$-=fwQFle49ng^mp+(@ycVbQ`_n z0~ev+vzU1E56j|p56c4la*`I)%LLw8)wldYkls!CC--1Nt2d(F`V_M!)}q6wB$}^Y zkz?hP4=O_bN$Hb+#{KjFpDse{z#BN?^{E-z#4k7Pjwz*s&bjgGQX#PeA0faY2Oigp zHOq#vQ!V>N36JV&O?qvt;0_5nKF3bUtpzb~dt8CFVN_|_yP7@!W*OcuZOqcvFOEO& zqMU8xX4%GJtz%TlHuTNL;jxjH$$lw>-Qjsz^6vuo<;lHQHan`2eOh7#Fu(22jCi~x zUJm`vl{)|WAS6H8?#MN&JzAE}Z=2G;9mXwajPG-WRO9N85>j#dtLlfhpY>4TVy8N*1z9^H0Ju4aQ^0+3OH~H<82iqWfrC^>_y`2(HEo!ri)X?cAJ9_G) z4H}<+?JZ%W^tP3G)_F^VgM^PkhZ~-T6o+^Wr&P!tts?%~QQcq}Fw#O(jv^JokxMg- z+`?ThI#a%m#Uw1Lb}3TyN|`G#$5VzIt1XQ+SO0_5$G?MW9IM+5J-M4|$A&ew26=oY zOs!>8-j11>mMEefCs9F?jN$rBq=OXH+%SW=S2EhNq5N~!13A1c zbW0U>7;fBDow98iID9MH7}-%o>6uq~*dZfQtkIwplC65z$AW5%XPg|Lsc|&+=&q%b z(OuFwoWTYZF{PVg=OwGEpU7N!amA@4=AU7|&d|u?G{fe$9rBjoPQ_6Wqs0 zYQyQSBGTD`iseVgR1wUA*a-A9W^!cP*6$m?@f3x(lsWxpr06b&rw{_NAF8}C!tlA6 zjk@^QM9>LZoF|1F(>1I=N&`5S_o_!^qg+q0k<~9VqR5+CE3VkN2dx@aB*jH2g>aQ9 zb>uNohG*&&n@3r7S7Vq=Owp>Ka&J?ryQCI^OUc`TNP1O^rbbIR4)M4ebfCx0aU!-6 z93Uwr)~g<%zG*m4xtS4R$uf~3BY%u+ey}SwaFg;m{G77Wcf_mpU{%nmy-i6Stv2ap z&5OWGE5+&{mkuac-i#5?Go5jd>?k=ps&pDD3qemEL(nH-I}UWx%8vb2Rr9?X*M*}+ zrIO1G^!b~#$C+TWzgU4P_Hm|#p;S_=cwlS1)G>G!&s67i+ zb;*8cP*AIaQuW*`D8=i()lE1z1lA~i^E`!GFR)v(eqgk61Jc;aFUd6L$Y;QGtVY~( z4R&f^Lno3!gP!diLh`slH4DkoY&mp9A#CRtFvnRYNtAPadmr8l{<#tC;jw%1Ve|?#bi?14ekQ}Gs1^#U) z-3ljLulPSmHN_|*$JAFbX>#1YsDSX9WS*SV5h9>ncSK)pbGv)j=N|%JQFER*&xs8= z(>Srff_vmw#oXsRecs*KXX$386QVwm69b>bv+d>7p22Mua_(Xp9`X%5uH-?W);3(x zert>qgVjh^BSX*u4&He8taV&i(yUd1(+2ny z;0*Ga8~*RQ`{57tT;#!$?M4~kRGCxs)c&AX_VSuhHt0!Po*o8$6bI;boNbY$XT$J@ z15~yG8&*q1Kc{ugnMGR6 z?ZQY!eejUcNfM3nqKLBYbgEBIYw3V9Ubd1RFxEjEbq1u&g;&%*&_`vVzO`}_4Q?BY z3mn)kDP{Es%iVMFq0=;sntRiSqPh5cbY3A^C8fb2H!YK)U4ppM11%W-Sh{^H%ncAX z%RV}O0O2CHEY%BYhi`E2DEpPGF@}p)>2zwyjwGJT@3@N-_p!}ZcC0+DXbLqn; zP-SyU`D8ajV%tP1vT4^M4Y3BqJwP!{;q!*<$H9sF7h!+Fz42u3LHKb-3#_c|ex-DE z6hX>l#GrgG!Q~}W%1`@SaT=P}6Ny-0{XOvriw-{zTUeCxLAo38i@d+)Hs38E^t zo5#O_YYUC>6WwLm`ESb0p3r_;ySq>NSM@#Lhkn8BX*kGo%t1}~j{wUu$_i!2IiB12 zx0vhH=_Uj7tOrsc@lvPPB!J$P#{N`##B(D*ksL~cqvA1qWD+F&NUdGoG*?#Tk&^Vt z*I7UJK@rNeOJ9U`+d&7sl~`Sm^~J}0s6c`T8_P7Bu%0G(yoqm_huS6gA@Q#T98_d& zUv<;@qv6U+Bcrc^>!cLp29(ZKN2+TbMX%(WT>Y=xY=u1_SUJN$1hQ~-6VwoF2b3Pp zra3qU0Tg5^R3nxZ_tqX>(IL*dxI;mW`c135cjPvIDX%V~oDDO=M#6oI_`Xbxm+ms^ z9wTF-ZRH|(b7_|(p~a}?<1Q5@);f>LMD%r)N41!-u2`%)VuLXuZB&As68s-UgDkrU4D!y&GEZiNe zkJ{$NcZs{`HU0z~iH`I^H#V!fyRs6=XqSz=7XW~rwgy!=sh~Tlot~)$emir7@btE@R_RJdupnY z#$G^PRP!BZBKRk()NOxrII2euU%jBL&L((*$1c%2qx~yz+bIXNRb{^WS~=`H`Q`X% zbM>$!f6?hdGS4V{{AS?HRAzLvc< zwyWNvCQ=M8DlH;Dxr;d$opnoQrs(3%QLIC=<1g^f1_GC#8kx2gpxEwG!~K@fb5zNS zWw~mi;zV!@5E5I{lRtOLQuB#Mb(P|NRIiSkX*nw z>(bs7!(UQgWx>Y9XNv|)&x1K;ntp)Xe{%eS!@(=2hF3A(8(oiB(&+|d+)Wi8i(~m|?v=Dlg5$kWM374!BVXG>9 zAi@g@UnKP$_$>xW8t-N*Y7m2r?DY<`vQxDlz`sdJSAS43MvnCj9NXoQo|9N`W}(p( zS)*i+R4i7t%1m-iodwXJsJyZ2Lr0o@YMxdX?1yU@{!G=|(3R~zgR?^!yw8ewLDewcvBA_6%TW_=C$)9bRUS)grqLzdV}1o96`Yl1^M2PwQ(b3VAG{cOjqs7LTX@o^%A4RP2rJjZ*@M^*=b!IDm9FHc;2r%9 zw)hrul8aTVa>)aZF5O~Ztz!QW$GS>-j`Lf8;o{pm<%HehGrZLvxnbyzChUY3@FN&2 zAMr00uZ86w&Vd%pH_UAX8~((p?448i&#GqublvD|M-!S{rd1|4DHkBKGvvZ*3qARC z#DhiJKd~l9F8NXs_M^{$De+G_r=R9leuR*q(<;JEQGH0Yjs>lO`<)!Tnd|ANr?x*c(6?eK)_pNnPXCNNTjAA6kv;!B zF=}A8h*~Uc6aIG)j960Tng}mn|)zCIg#s`N7;$`z=#wrX{Rp8z| zEDn_gmZxJ8Zf8s6)}CD@oMy8lRN%nJ!%>wD=esU46?I$lJkltn2Y-^0oQ=~3Ar^-| zpyW}Ut(dje7lx~wq)@{y@jpJGW6pS1u1tP|59)am7fCJQ5s5G*c6Y^Nk*|p+#Z-AL zqq)i96+CXkIq!V};V)4b9=0W^g~_($cnnSww8ALtf|hm0HTxH_Mo7GKJm zg5w`m9`PJbi;om`-Yd!`)f>PJm?}c&_uf)td)>Nndo@XY$?sRL%2NGXx+>%6tdgGJ z40M*|5J}DMTN@sEHx{9riCqzBeF#A34(F-J%6@tzjUvM;Il_x(1M zh_4H&a5u<+L~#2d3vX8RGyz3_YKVAsjUwv8=gtaUpGC7pOKPUAi_hyN&Krz7LdOdI zG1dYQo_xVhj*_)**-2hh;TG8%PUjo`d2y$itnfe4%CGAiznN)1vCjVTcpWiU2*m&R zBouvs{Bte=^7b5fE;m)28+c)n1#2^3kw6dDYdKg8{8_dz52{GaT?>6>2nHbK{TTrH zM)c!p$#Gy1v5Pk^Pt^!W6CD(;##{^~`Q~d7)QeJi>#5zao;2?X;pdM_d{8b~e1z9q zuxNv59kNqgiGxnk;fkHe@GF8cI~-c%iFu`wZ6DVwIRj7C=(7B{yP`B)=VBUehRCLy z+!yQ}xSAv+a;%y1bZ`my2MIp?^u;XkzFSXc--9lwrf8~S#guVfXsxFe5~r*yRh@EP z%hjuL(iAjD3S5_S;NhyLj=zYL(~D@qZuHwB{Mj^BZS=s^;2SHscmdPK^@G0`mbyox z`KB*$XAVjiR^uztAj}*7N6`e&;ZUDS#Z43%u$RvEj_$3QwKKz$yK|=;EcRzgUNTG)s+QCbi3vARzK$KW-f~Em) zq7ntw9P}IUbuok}^(My6Q_`wjWr9Z4dH5A*ZMuiFo!eF69%;T0+zZlQo;!7?%QRLp zpdk_1t8|ycpPpEg1bQfO+5C9$0PHvYiWLuY*HxcGf}(HZC;vmboHA)Fi5w~TO^N9Z zh1SbL^~++wWjW_s;i6Mip;F=XK59#{)MB|e`;{n==dHR!IMYYK$v`~TY09=?UNnWc zzM9tt{(OS#4<6z+nbZ6(=3M<8-lxqQQ0h&(JL{{`DKCEi!0^GbgEsl`GWUB>(OH4R z8inw-baCr?nJl(w;1QL19uYFL#gg48{0I3%kJ#&XDZe^}S$ssS(KF*Gm%sRS1WS-4RQBIE|qqq!7+c5Q!ecJ z6IeD0r|-r^!=|raHpjs14uPyCkfgq9GRJcZc07A^)b;|5_cgEvobZ{DTG|rlj{~_0 zAp)b*<6y@Nf%BDni5ZaKwJF7~z-*mXP;0$T)enYP<~J_&4xAvlms!@lF!eD{^Q#jz zTsA?-4b4c|PnM0$C*>Fs?+AyQ6P6cYl#=e7!3K0hA71h}OjQkc;tm5e{@;JaBf6!@2wLhn|OC1oL1H&;kb5lF1xy?kkz! zZrPFNBfK<5TuJ$f$3OybhT=C~A&CqQg@r6GsL2fA_RKjAVfR*14B+?NpMYW`*_;+0C>nTd<7Eg4RQQH+M~%gfB$%E+V8&dAN9$;``P&YL-H<5bv`tK*_$ZB@$QK#Bu~Dr55shgh8&2D!UIo5p+sjQJgVgr=o( zW1Cznfoxl6iX{)wl59uF=pf7Z!kU0l~9FByVGyCS9JO$Z`-#2#?&H;p7x% zJq<5nX^o*e)f$5Y8{y_>R&ko}ISlU7LN$cuFenqcLZb>iusKto!pIvtMx}R$tC!X* zbV_(c7ijPEcR_gNH`0?7!7%`y`Q5eB!5pImepki(nCdN%cimb2Q6Suuz!F_CNm|(@Ye2M z|JDtDTR^lY5R%~gE_I$oG4drhWcNS-6_}7P+5%$e@eva7uQv<*i(!xHr8=bFSYNn( zxK5r$)w(rfk)d>AWydmH`6Ji*Q*0oQ%ABO2y^+_}HcdyPt>+Sd`AUVf>P*8ewTiRK z26HQ_%bjhgQK+D0vLmu81kXX{g}PkdwBz)oR3X;^Xz7@GL&{m9)l(+JF?Hm`Docs2 zK3h?%zxZGq$NOFM8}XQp$01`Y?YL+EX|#hLDPZtAU34VO1M4)8FqY|RMbERwy71cV zIE5BDYzYo5tbf7sS{<8){^in*7YK`%7zF7LM$gLl?+^34+B9MK0@X~H#0?142# zTPyNv-7Ew*#&kDvrCIy%-&)M}HnR5HoUV7k^XjxMQU*?7r?h5bB5j879qrou>YUZ+ zVoI})n~vS3hdgrDWz6K;@5JQibu-4!ksv4n`Yy6`#l9~7>~;nN`&+0DkH+5bIqipo z>fmN3)v>;)TH?8)WYv>zA$NFCY-!m8MVi+UndWsz<#)}Ot;DzW!A?|gOQM4+0WAWI z)hPPQ$sfoTXvz}vM+;#^)C13yXr>$nh1rQbuVTnhj09h44J9WInc45U6TXJ4}x z$PvP|(5CiNy!nZamn@h4;l;Y5s5)#*5sK5Fe9Q0I?%ut|%v9A0{I{GyP@WN@@A^gO zBboF8$q^>`n%IU?QCwn(tu!x>Vpq-u&&~ih6-}{5SDv6WS^EMbzUAcI;tuO;K1uG_ z1fLij1WjCss~O~E@)u1W7S*iQ@*p=V@L_kTkM3#R>D`SSJN>Icu3v;pUg-}bn85Ku zbhq*O0~8@$uqlgjnI~Tvfe+wg{syK;>fP%^y5t1Qry0U)+%0M0jdP*@kXi-WhI_-k zBSIQPw{&0U4e1zB`)&rU;o0$gT8Z zPqDbpBIk>oED-KZot?=0j>^D&i9LxVIuRMNJOnh2e>DF!Nx7aIv8_G2`2M~lLeiLb z^Qg`;f%n>$a>2vf5e{Pxch%CbT=(0(#lde_1bxyJ78_=A_!IfpS=)#vDDpGxuSphP znQ|@8Nh#L{H=!Wv_2kblIdudM;KH-=SOEceO1?O*hq5B-RH3s@uRBz)7e+j)B#3Y0 zB}TG1F}CY1kDd2ou@{Im8zY;i9RVQ98lUyIv0Op6bLpas;DRe+0$ksb{=owG8xT_oXWcMC_n+ZLELTnIHdbdH*eb_q{+T$E;%l^;MUJ zF~a6Wt$(4NdcIzI);hGvIOC1XCedl)*m;XDQp3>2EW zwL>fT?O@r%W7&Mtb1k^J{4l?3*biz1`6P-GMh(V~IM7TIGZY4r4Z2Y@eZp>Ly@B-y za+Z(%aw!3wgh@CkP-~fCYo!VR)Max6D=u|CY9_m=0uZN0XG4(XKI)IEz>aL^g%zzI z!L2>;ZaphD&cjgfwbNNnP5tsIU8NxLTV&Lu?sD;!x*d@l{&1_{P%kz|Cy@aA0w}Cs zG6W5}9cKhGS+4xRV6^V)+O^S8zyDFmNkDR-W=%j}CYj%>kndln4Z%tY9IlymSFPkw zdtFjvWK>fPxIWG)1g@L|R0{)NkoLN4PP*&Jlja(*(b_i3th&0xo5pbIpZ(D_J$`#) zw|mV_x;Zk<|LPT98~#mb>BCpX?C=N({qeYGBS~6)KUmvwY%uB{VPc-2Ng9V(j??Nx z-{+RtCtG3CGNbCQR1BUC{G(u=X%GaH%q(G)#wO$Q5@%kikkc7?@1wmlnGQ!Sl`8sr zxH`BM48szEo^dE0-DOT63l)@DP59>9DlRRo7lMIks>V0EcpNL&YfQs|I%X^y0wXRV zy>vYK{n1K#KI?>Bb#h*b=y}tPa3BR30C68#1u6A(8Jd=1D(~S39-EI05I~96!yT{- zsypW!_0fMqkc~oZ{Yf_Y;)I#w{ZsQ(#f@btZ0|a58W5BGXFLOhI1g3y8-};s$rI1t zvVp8C&k5gx1-&HielD41`B%aN_=w|rSb(K#nHawtAWw>1GiUTK=q~`ERitMSmZ#gb zBGZ#V#UcGfSo5I@cslrO6a>C+DuUHP5}j}y^rD3V%OU44d|Golh|3r;5X|5zLLvC? ztSPW)MV1}{*WM3~X&|}KOL+H7K*cfx=g9UKP9mBBXOs?voOBUMdnEzIGQ;NR6eOWV z7C#P#&`uCwoDdU~PJr}|&EoPG9^+4t;vO(a*sDjF5X9y%!z6kRly~kV8b8NNt-=^08#~g3h%JJTU1p%qS1OcJ>ufenL1rwO6>1~8@g!!$|l)Z_NY{W@{ z0@G!ZV(v*ArHq1d1Y^#j*$m5Wl_Y-ZNnJU8cJRXeI-i+m;ncxtO%!P2!OEi98o zj;igwe($?}FKfN_XS z-NhNo_VQ!9?g_PYMBKCI7aYiM55GYo+MPUv_V(Zo@w|OO0qzhE`FimW<%f%TF~wh- z?iBO;ijTdEy?|7^#c;*bYlYHk_+(j9dp!-J5CP49T4d~ru@W6PhfPA8^Vb<6Dzd%~ z!+GqHBfKd?5)act5|3MRzQ97}4^WGFsfbP=o7ofybviqdY;LjfZ|weSHQC)--xOk| zAl-IvZqv1$x7xgYO0mb?ylq80|36ioc{o)2AICM3rOi6FBkN!+Swe-8CEE-orYxDO z>}x0$8BH|O&4li;$JkBDIwK82i;JWwDH2om#%{7*15+T2xIC#{#x-M$>lmz zbZXIVZ8v4dmG35+BB*pUoy>@zZ~6D&p1mr~Cb9hdrYeYloWo4&Zj?^ZU>#JbnX}e9 zX6Am%YwV-9Z&y7eETuaX;|LfA9We1HLGBHH9^>=lnMS$2L+frHDU65VmpdF2C})Bi z&iYR~jb{hl$-BEssBampWrcWrSBX0M@@c`Ix(hYr{crSOJ45wt?P-lTn^TKOhZI)- zHKS)uH=29uGY8AvchoQ)8-_A4TZ$;pC#^zOv(62fpWatZ4qq^wB~_lS$*Qfl#1ICw zhg2EXNm7pnPTYeb8baFZiqccJo=KCL*~9ZH@o0jb+n=x0Y)XzCG3dq2PS zbW4R_B^+KEg~TFmIb#)c#$9}i%R)+EZ-ILKCJ z1(~z`ANIc@P%mQIk%jK#zF{S)yPTgzC?M+1^34U8ZSYI4PrzF%oUQ>4RZ}X1rb)wJ zc3cl0r?NsPGdHFmG)Xkq*!rZuH~Yen48qFy3FXins|NXzjav3W$J#;|n4UdehZQkx zW#+gu>4lf<1Qz^b^v!JTZQa8?Epu5~#*68-*OHQkuAV|VZ_I#ChQo|dDm|a-(iGv&TMP^pE6fpOl?{A8>y~(%c1S)#@6VOJ9^Hl z)RniJZ@ccLn^BLVaPSlKzP@R{J0t^I_Xxy zSOE5kSyiU#;}=@KHi?prZPsi592(YFOMLE1s8u6Wd*{WmcfvO@o9Mr5V%B6yPFb?r zvrnYqguAzzBZmfk&kt!cyFU$oHE@KpPfN5tUp%=Pe*lpzB2B=u)i&Kbys(=R1Q#|` z$J=q_znFizT*vMd6VCT z{^%H+?>i>(&%s*NHnKf+YD%-F;zr;G?uF-V2}v0WG6Vn473=dUwNW%d?21tht+_Da zk=vo8-34IjoBMJ$3=zsi%g&^+Yt7;Ty#(`gG8HZQ2PHkM>vcJAvHhCO+_WrS4@H~} zwzt$k6)p2&I|rmtIBG+mPqI$tTQTbWF7kO%V@H0ws5eH|2t#b^&JD(thw8x5xX*|l z5r+VWOYP4teEv9*ZNMHH!y(SkwcrVcqz8?5FsCI zZ5(j=i181L%S$A(9%fUjeF{p1{-S4Z?R!;pBBkt@dAx8!NyFP(-LFM>Ul}lY{y8oQ;V`t6XQR^m_Wq_Q( z8^-+)1~Y=u`?q;T0K4njBZ)rj@jw!2l(cllG!nM#-FZ|0b~(}@IVjp}uM5FV_jV>y zD{2jXIJU|=ypDFch;~^dMqNKKIsX-cF@;E|do|enZm`*5PW$3oG2;_8C@o+tsjk+R z?%z0`d#Kre!{AgNo)~&-L=jK~sDw zC{8lWZugk$GzQuq5+hMXm4wdc^pvgZ;o=OENcZ!=4jLO6opF)sxUfynhacnJk>i5! zWI{O%fzsRrjS_Tu+nRxDV3xf8%4FJUqPw+^?BRzk$)<4|VtL2YF`aJ?C29r+ASU05 zSDVV{BpPce_1oV(t=@hbSrRTRV`So1{fC7o(ZI%Dr(czKdRJzbFM)RK0ndDj$a?e% z@NWCQqk+#xQ;?pkyy{|keE&_bk|O-BKs1N`F8_7 z?R+%jY5PQqhP)3h#}GQ=&z8pMM$ir(bp(`BQb{2;fwhwW&1Lc`FE8t#pf>RRv>z}1;+X=_YzD{6ui2&o7R>nb zE`=?Lf`YRVd>o&4@an8Tz%ibMN{?5d(qmJe-%DxypguUNt_;c?kOj@=gn^$HpA`_; z4uPoO98YQdfFZbT0SSV0ssNWCBNsG$hy!iSDF9q8e|v-rQn%qiiwpaK-yS|tf|m>Owuc}k@bscCjL#DsT~q>VpitBo3f*8v0iel} zKTIeHG!8Zab-xOOPbPPP-2PK^N4$1!c_x+>nA?0Nl0XH2?Bl= z)c;pc&jlbUp!wPnfUA(13s}4ljR1g;)}Sld#@T_bH6vKvQ%<<=W6%;~dhvbr~458(dnq1h~>1Tz%$WgAoHdVB9~#0N0ls7j&!-R2b5LJ7M^s=MOSF Pg;r%T9-eUK&({9{Yi$yT diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c30b486a8..3fa8f862f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d421..0adc8e1a5 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -197,6 +198,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 775a27097..1a44d100e 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,10 +20,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 639651972fddce4dff63a0f0a7e566a15b9e2dd6..0b87f34c2bb5a2f72124912a62ea393b19b1f3a3 100644 +index e827ee211e3c65dc68ac5867fd8476639df63645..b9c75a190dbd7a90ac5ef0fbc6e6fe34806acc4e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -46,6 +46,7 @@ dependencies { +@@ -47,6 +47,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") @@ -31,7 +31,7 @@ index 639651972fddce4dff63a0f0a7e566a15b9e2dd6..0b87f34c2bb5a2f72124912a62ea393b implementation("org.ow2.asm:asm:9.4") implementation("org.ow2.asm:asm-commons:9.4") -@@ -89,6 +90,13 @@ val generateApiVersioningFile by tasks.registering { +@@ -106,6 +107,13 @@ val generateApiVersioningFile by tasks.registering { } } @@ -389,7 +389,7 @@ index 0000000000000000000000000000000000000000..ae2464920c9412ac90b819a540ee58be + +} diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java -index 3a9aaca2e76411a9c27f9f5e0f22d060d5a66d06..9584e245144b561b4f6745b2f26a4f69a6f92891 100644 +index c80faa079eca1564847070f0338fc98024639829..e632d51d3487eb4807243b6705999ad124466bf5 100644 --- a/src/main/java/org/bukkit/map/MapPalette.java +++ b/src/main/java/org/bukkit/map/MapPalette.java @@ -1,6 +1,7 @@ diff --git a/patches/api/0004-Build-System-Changes.patch b/patches/api/0004-Build-System-Changes.patch index 2b261b1d6..3dcba3489 100644 --- a/patches/api/0004-Build-System-Changes.patch +++ b/patches/api/0004-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 0330a20576c372c29ca4d98a2bc5b01e28303ac3..67f31886a0e5025c1a66b6fb04b44430a9a103fc 100644 +index b9c75a190dbd7a90ac5ef0fbc6e6fe34806acc4e..41d7b75e904b94073dfcd12b776a7759a963b66f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -109,6 +109,8 @@ tasks.jar { +@@ -126,6 +126,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 46310ba6e..4691ebdfa 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 9240ea09206461d61cc08d4252e8507555bf41cf..9f87e81e47c786c4cd4d274b9ec5064f3a42c401 100644 +index 9130a57cf6ef5d543703a03aeed07aa17b1ab7e8..5e985567d963b666f3fefa0a618ea497079dae8e 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3307,4 +3307,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3370,4 +3370,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 03b2e1239..e1d1c649b 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 9f87e81e47c786c4cd4d274b9ec5064f3a42c401..0660f7d98f1d0cbd6442df8e01d6c72b5a395c15 100644 +index 5e985567d963b666f3fefa0a618ea497079dae8e..b66402df0d602ef33bf8742504f35c095041dfe3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3315,5 +3315,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3378,5 +3378,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0041-Add-local-difficulty-api.patch b/patches/api/0041-Add-local-difficulty-api.patch index dbfad0156..d80fa46f7 100644 --- a/patches/api/0041-Add-local-difficulty-api.patch +++ b/patches/api/0041-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 17d404d6d1a5b46b58d612fca38f17e71adee92e..791ab7aa9cb36715a323e8b920bb67f30accf738 100644 +index f72f0f0f8eee95f95adc969d55ba7de82ee30e2a..1e794f6d2765d3e2c40b15a9699d181ffe12c2f5 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4160,6 +4160,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4211,6 +4211,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index 748795ebb..52dd02982 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 4127ae56afb05196ff46a5313e9d141adc27802b..c5956d747a09c192355c17a52f7bfa9e333c4e72 100644 +index 4d375b95459698284f1c27eefe8adc29fc0e7871..8ea42a1f07df756bf504609d2bbff578f20bb808 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -2870,5 +2870,89 @@ public final class Bukkit { @@ -99,7 +99,7 @@ index 4127ae56afb05196ff46a5313e9d141adc27802b..c5956d747a09c192355c17a52f7bfa9e // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 6795f2c0c1e974c4fe3181cd6838a68f7437c846..7eae8683c0d540ba049dddaed8737e051d6f60db 100644 +index 9217a021cd6e54fda334f637a0bfbbdbc7ad14b0..dd99f53e3d559685a4b3a454a9e607c310fc6aff 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2515,5 +2515,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -179,10 +179,10 @@ index 6795f2c0c1e974c4fe3181cd6838a68f7437c846..7eae8683c0d540ba049dddaed8737e05 // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 6fa89b11548da3d6be8cd92466f3853c1b409afc..cf63054e1b597b2bb13164722dd9a829ba7069ba 100644 +index 1e794f6d2765d3e2c40b15a9699d181ffe12c2f5..2f1adae519e45743828be06df15b5f33045ae18b 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4168,6 +4168,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4219,6 +4219,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); @@ -260,10 +260,10 @@ index 6fa89b11548da3d6be8cd92466f3853c1b409afc..cf63054e1b597b2bb13164722dd9a829 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 0660f7d98f1d0cbd6442df8e01d6c72b5a395c15..8d5ff090957e924fa513928d39c5917f3c64eca5 100644 +index b66402df0d602ef33bf8742504f35c095041dfe3..2543299cbd94f409606dddb5969123909d11d1ac 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3335,5 +3335,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3398,5 +3398,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index 528513ab5..81e579e86 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 8d5ff090957e924fa513928d39c5917f3c64eca5..8d963acdeb99cfc0b424b9b3bdbda40b1c73e7a2 100644 +index 2543299cbd94f409606dddb5969123909d11d1ac..fd465ab769b2ed9ff5c36d8479241aa8aa25953d 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3405,5 +3405,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3468,5 +3468,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index c0d65db53..2cbb2af75 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1507,7 +1507,7 @@ index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..58d076e2a8fa1cf56c4c8d15a502e85f } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index cf605aa56adf7f80d3b409f60a92a5ca7ae8fd07..f623b5152c398ea460516596ad70fdb1f8a987ca 100644 +index 1c9742ad81f04052d2c3bc18c7636f45b2fc5160..e5c955e7e99bc07199feabfe9f0301016ad38b84 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -221,6 +221,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -1726,7 +1726,7 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 584a768f2ce1c98a1de7749060c47f21721f9055..c4a22fab14c74f268e8452c398add4323e1f09e7 100644 +index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b68f6d494f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -878,6 +878,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a76eb3d051db0229ed088b71c92ff3f131449007..d6d86597fbca937a32e74ecb913f569f9740e7d8 100644 +index 87134e57a57df0fceda903e35d22f3f2de31adf3..705ff7b8317fca979d4a1459119730f13864bfc1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2093,7 +2093,7 @@ index a76eb3d051db0229ed088b71c92ff3f131449007..d6d86597fbca937a32e74ecb913f569f this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1401,6 +1400,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1409,6 +1408,19 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } @@ -2113,7 +2113,7 @@ index a76eb3d051db0229ed088b71c92ff3f131449007..d6d86597fbca937a32e74ecb913f569f @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1996,6 +2008,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2004,6 +2016,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -3269,7 +3269,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9c08303de2891de92e06de8a939a618b7a6f7321..697e74b4d966f7472f0cb3dcaca928cdde4714d7 100644 +index 356107688a5d40d1c462b164f61af82f4dfd3926..2ecb8bfd98c141e9f5e7f4e441c8df91e1b9fbc2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 9abf45864..1cfef9db4 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -72,7 +72,7 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66 boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index f623b5152c398ea460516596ad70fdb1f8a987ca..6ea42811c1e7ae1b6bf17b7edad921861c7fa2e0 100644 +index e5c955e7e99bc07199feabfe9f0301016ad38b84..40527db18b7177d887b65825ac51613097803be8 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -112,7 +112,7 @@ index 28fd04794e2a624c5d0a1322b1d6d851f443e3b1..b60ab6c545296c67304019759ab04aa6 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 41375e6fcf209f653bded0da27e1b3a993d2ef8e..8378cb22269e4020f06be4cfc0e1dba32c683431 100644 +index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c480343a842 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1041,6 +1041,7 @@ public final class CraftServer implements Server { @@ -159,10 +159,10 @@ index 41375e6fcf209f653bded0da27e1b3a993d2ef8e..8378cb22269e4020f06be4cfc0e1dba3 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 2af0068ef338634d1f44532af5db66c2d0b3dd10..8e844e3c88a1100d407fac1edf0379072370a6e8 100644 +index c737c5d62407337d3db2899cfc01713a058a6467..ed8e01918c7aab189ac9a8e37dbe9ff2b06aaa4d 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -173,6 +173,14 @@ public class Main { +@@ -174,6 +174,14 @@ public class Main { .describedAs("Jar file"); // Paper end diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index d874dd4a2..9fc93169b 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f71a4a8307fb092d33545e12d253e0b80c884168..e7452b7380511e27c3fdb9172ea7273b24fbdab7 100644 +index 08980763020a13ab49dc7d637625a4fba56da8c9..c4cef829be6333143ed4af4025ade34a307926f6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -274,6 +274,7 @@ public class ServerPlayer extends Player { @@ -43,10 +43,10 @@ index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b6 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 00bae5df87bcc1c75d4e2f430241579d3be82c11..cbde98589bc5e8ac10c0dc90b142644bf6279122 100644 +index 3a792ddc31e76038b84e8f87088c4cd94c349138..df5b588309f181c84336060d3668880b74ea7490 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3287,4 +3287,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3303,4 +3303,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 2d762d46f..b323208a3 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -46,7 +46,7 @@ index 8aab01170fb512d98103935a19e468a145a6bb16..5d20509fd92969ed05f1044290650880 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 85331b9b9edf4af02029333a628971fcf959090d..03ef82e835a82d6f42376881a3e5c83d0ec158b2 100644 +index a21b193f4fe3b857c5831b8ff0a4f366904df44f..1b715858cd62511dfe47f8e9157bde331aa6f6f7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -756,6 +756,15 @@ public class ServerPlayer extends Player { @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d6d86597fbca937a32e74ecb913f569f9740e7d8..797ef036c3fb7a21fb3a2fbc6a7e307594ea1e11 100644 +index 705ff7b8317fca979d4a1459119730f13864bfc1..ae29cffc84900c4b44925c2c29636dd5ce1b2a38 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -224,7 +224,7 @@ index d6d86597fbca937a32e74ecb913f569f9740e7d8..797ef036c3fb7a21fb3a2fbc6a7e3075 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2722,7 +2723,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2730,7 +2731,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper @@ -233,7 +233,7 @@ index d6d86597fbca937a32e74ecb913f569f9740e7d8..797ef036c3fb7a21fb3a2fbc6a7e3075 Vec3 vec3d = this.getDeltaMovement(); // Paper start long time = System.nanoTime(); -@@ -3495,8 +3496,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3503,8 +3504,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start @@ -246,7 +246,7 @@ index d6d86597fbca937a32e74ecb913f569f9740e7d8..797ef036c3fb7a21fb3a2fbc6a7e3075 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3506,6 +3509,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3514,6 +3517,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -4393,7 +4393,7 @@ index b14979ab7bed34a37fceff5589ecb789bab31318..cf81e9ade3200251ca3a25eb0e5ce7dc } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 71b5a9c97a13f703073c0122742ff9e8a0e49df2..3c3eb009f2d80d658447034c3df41070f254349b 100644 +index 6f12e342adf1a008709fd9a4fbbbe1da8ec31b83..5a578ab80853f8961afeec2aae76ed521f486430 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -53,14 +53,33 @@ public class Spider extends Monster { diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index b9d4e155b..0bb498d67 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 03ef82e835a82d6f42376881a3e5c83d0ec158b2..15cfc439ea0e122729e383e86d7162cb203e1c24 100644 +index 1b715858cd62511dfe47f8e9157bde331aa6f6f7..f8248a955c45a5f0f9bd5ac46aa2e1ae8703f79b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2134,8 +2134,68 @@ public class ServerPlayer extends Player { @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 95a7df9eb24a2b5b45a1684643ae9dd7afe91733..5ed583d39561811a1ba8ae55aeff408e3f7aeac0 100644 +index df5b588309f181c84336060d3668880b74ea7490..e1efdda967847af492f069861ef19dd307bc76a1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -519,10 +519,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index 95a7df9eb24a2b5b45a1684643ae9dd7afe91733..5ed583d39561811a1ba8ae55aeff408e for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3293,5 +3298,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3309,5 +3314,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -288,7 +288,7 @@ index 7937023274acf3a1efdd21bbdd2f933f4399baeb..3fba9f640ef03219c89a2a405e4d5a58 public static int barrelRows = 3; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27ce55687c7c59fdfdcc4553240ea8b023919b77..3ed1a91c93f659306acaf8bad6820f49208554c8 100644 +index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b69d0993f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,24 @@ public class PurpurWorldConfig { diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 61c1c2e78..6d57763d6 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c23bea8c82c3f4670ce736cb1375e1adb8aa7a05..2de4892cf6161d9c601a9af5745244e28319ec5f 100644 +index d83384d2231eb4ecd331742ea05cfd64cadd75ec..094d60d125063cb6c83b09fb206aec91e40ef80e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -34,7 +34,7 @@ index c23bea8c82c3f4670ce736cb1375e1adb8aa7a05..2de4892cf6161d9c601a9af5745244e2 double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2089,7 +2090,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2097,7 +2098,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -69,7 +69,7 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 831e71479ed0636ae8fd96adc732c23edf7d0e88..841426fd4ea86c2f44309682a5fcbe3a39102b59 100644 +index 8add75d7652ac489183f8f8cb513081272f8bc7f..bebece47fc2064118ca39d0e511f71ba70a68e45 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1115,4 +1115,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0023-Disable-outdated-build-check.patch b/patches/server/0023-Disable-outdated-build-check.patch index 703cb32e7..ac53f1d73 100644 --- a/patches/server/0023-Disable-outdated-build-check.patch +++ b/patches/server/0023-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f..45f63f2fedee7bcab9cd3ebc3117cecd225b89d2 100644 +index ed8e01918c7aab189ac9a8e37dbe9ff2b06aaa4d..b214e8030b47ec2b14a8dc17894b8f89c95ab9bb 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -300,7 +300,7 @@ public class Main { +@@ -301,7 +301,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch index e0676f20a..9e1ff6dd4 100644 --- a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1d8d5cdb1604d852bf72d16e29e7a74caded5692..eaff62f5dee0423723c259328d6c0c2c8a7156ef 100644 +index 094d60d125063cb6c83b09fb206aec91e40ef80e..561b9774a9932227ec56c528e49cc6227792da13 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1835,6 +1835,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1843,6 +1843,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 1d8d5cdb1604d852bf72d16e29e7a74caded5692..eaff62f5dee0423723c259328d6c0c2c this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1843,6 +1844,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1851,6 +1852,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper @@ -25,7 +25,7 @@ index 1d8d5cdb1604d852bf72d16e29e7a74caded5692..eaff62f5dee0423723c259328d6c0c2c // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7290de61830b84ddc54f50353dd5c24a65192816..807b1b1de4019f279618c6e02ab90bf230ed5e66 100644 +index 269fa073b53b5434d19d6705eb2fb2d0550ba0ac..9832d71949025eed99a3e9e8b09f9bee9991e36a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index 4059e1153..c496278b8 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ 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 f05373bd8d1b2c92c83cacaa2fd6fa845fe23daf..1d5037594599392e133ca593f58f9d823725c9d6 100644 +index 51e612378e837d3c30d50c870b565b30a772d5a0..eaced29905f8178fafb8aa7b830b562bdc1e8578 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -893,7 +893,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18,10 +18,10 @@ index f05373bd8d1b2c92c83cacaa2fd6fa845fe23daf..1d5037594599392e133ca593f58f9d82 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5e13bc95bab63dee2a4c622a53c9144a77a8ab11..ec2bb4ae5bbbf90624ebdd5a75298e3eb42a172c 100644 +index 561b9774a9932227ec56c528e49cc6227792da13..cd9b6c75cfe86d06ca4c0f4cc9b0b9dae37a1811 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2535,7 +2535,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2543,7 +2543,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { @@ -31,7 +31,7 @@ index 5e13bc95bab63dee2a4c622a53c9144a77a8ab11..ec2bb4ae5bbbf90624ebdd5a75298e3e protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 189b59cd6218e8e6b7f7c0326211e1b6545e9ca3..9311e620a821bbd46d962dd01ef9b0c1ec99555f 100644 +index b6254ebac4140c1d3887a4307304d4a8f7d1b6a2..e39048f5dd6b54bd2488ac450fa2260a6c2754dd 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/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index da6507cc7..7fb4a1000 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5b80d41b267488d632492239298c94ded9ac40bb..d919966b056116dc2c0777250ecb492a68257d70 100644 +index cd9b6c75cfe86d06ca4c0f4cc9b0b9dae37a1811..90a4caa7c58f3d7734e6cdb32c703484aaf6afcb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3556,7 +3556,16 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3564,7 +3564,16 @@ public abstract class LivingEntity extends Entity implements Attackable { int j = i / 10; if (j % 2 == 0) { @@ -99,7 +99,7 @@ index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..06c2f30b77a2c8aecc65e0c305f643d5 entityhuman.startAutoSpinAttack(20); if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c48fae071a538a11739193f782232edfafb14de4..b34f95b6104b1aebd8c07cf279e168cdb074efb9 100644 +index f4bc9248e2e7c156688fad9e0807cb46444dfa13..685553ad958249f2ec00ea1139e8bab58abf7bcb 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/server/0078-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch index 5150f53f6..55b1e58ba 100644 --- a/patches/server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0078-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 fa59b382c25b9c47bf921258dec89cf2b5ca92e8..bb36602c78292e762e26fe23e9928609c4bb4271 100644 +index 642ffbd2632c9cb0438447ca83f598b1df37bd9b..5e701bd6ce6db9ef3cebbc24ce80e00aa1e558d7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1623,6 +1623,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1631,6 +1631,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index fa59b382c25b9c47bf921258dec89cf2b5ca92e8..bb36602c78292e762e26fe23e9928609 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 669454dd9ad60116b664f4432f4fef9662ba170c..2cf49e7cb1d128c9dfec76c33d2c9a88c09ae2ca 100644 +index 8f085e8ba40d3bd9fca27b18b9ee156bbffe6bc3..538c6f1cec00ef0ce8e793a5d205875d2d9aac92 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/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index ec43fcb65..7aca00d70 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c46490fd0443ba0ea04679a31a637410600b2810..7e6fe9ee09b80d022bfc2cc87363142a10b980f3 100644 +index 5e701bd6ce6db9ef3cebbc24ce80e00aa1e558d7..1ba7451e1e246a0840205268767ab222482145c3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1802,7 +1802,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1810,7 +1810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch index 24b34df55..2c26ee871 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55f blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 822faeca49c02562640f135948fab75a0bc49f0a..2406c33799ce8e00484c63b87c0c2c6ded9bf25b 100644 +index 4c5d6e37f7d56436119278bbfad503867d9ccddb..b636553c33b8a09c9d92ff8f355affe05e1579cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -600,6 +600,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,10 +89,10 @@ index 822faeca49c02562640f135948fab75a0bc49f0a..2406c33799ce8e00484c63b87c0c2c6d } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2b335e9835e62109a9d3720cb1ab705666a2362d..d3719998ddd7f29abb7b9a59273ddfcc27ebe63f 100644 +index e1efdda967847af492f069861ef19dd307bc76a1..a4aed376b8c66dc251cdbaa98a067c26694c4b8d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1347,6 +1347,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1363,6 +1363,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API @@ -104,7 +104,7 @@ index 2b335e9835e62109a9d3720cb1ab705666a2362d..d3719998ddd7f29abb7b9a59273ddfcc } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c624ac93c3a24bb472217ae89dc8c9c82192407..d430af5942337e7f19a5085dc9124c9266c137c7 100644 +index 647b58652a87d1d1b4b022853052ea19afa80152..68a3f2be0b4d99041dcdb9e37c0e1dbcb9c1ae87 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0133-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch index 0746b7e3a..090181e0c 100644 --- a/patches/server/0133-One-Punch-Man.patch +++ b/patches/server/0133-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 704eccf1d65d650ce1f6709136c75133f9ef59be..9b33b879324278796447dbb5a880dd9e1ba0450b 100644 +index 1ba7451e1e246a0840205268767ab222482145c3..9d5b0b32a24e36efd651ec7bb9b47e7399d6435c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2328,6 +2328,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2336,6 +2336,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -30,7 +30,7 @@ index 704eccf1d65d650ce1f6709136c75133f9ef59be..9b33b879324278796447dbb5a880dd9e if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 651448bc3b84686b675349f0e72c699ce506ab82..50d10795981069b031170ef0de3a50603541f1c8 100644 +index 9bd8d873933c4441d5055ea49239623d0fb480b1..a58369d384604e37906cc0d15aad40a9e44019da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -344,6 +344,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch index 0c1e9946c..3316ea193 100644 --- a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch @@ -32,7 +32,7 @@ index d16d15c92456ce2d8bb287a0c668b7bc459c5066..0aa3c178d0bca9332702589b5f078101 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 011914bdbf602fa5696d24d11e3207a9bc6a9ef2..d36b2343cb94d59a8e4fea0d8608a6973116d641 100644 +index 0ea17c4f6ad4753b6ed02b2387c1d3762c8d67d0..a75f8b72632cab7b9f2c5c6e0cacebe8fe572691 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -63,7 +63,7 @@ index 011914bdbf602fa5696d24d11e3207a9bc6a9ef2..d36b2343cb94d59a8e4fea0d8608a697 } // CraftBukkit start -@@ -3574,6 +3581,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3582,6 +3589,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -353,7 +353,7 @@ index e118cfc34b05f6d4921a0903eca70be6b68bff4f..fab8e4ffa083e3d436fd4d6d19cf8ea8 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index ac31a117428875143871cb807088250dce4f780a..8d5669917e66c16a5653dc0bca1db2618801c8f1 100644 +index b636553c33b8a09c9d92ff8f355affe05e1579cf..7ca35289068dbece3f9f19384fe202fc844eceea 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -369,7 +369,7 @@ index ac31a117428875143871cb807088250dce4f780a..8d5669917e66c16a5653dc0bca1db261 /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 06c4647593334842217549e3266d4d6c9da81365..d085ba1f8019ee901c2e47ff46cd295ae6766f84 100644 +index 4ab5cbdbdb78215f738380873dc710467ac2e52b..a7c81e76b0e6cd50c3900f7aa07807a74b13f606 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1132,5 +1132,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0198-Toggle-for-kinetic-damage.patch b/patches/server/0198-Toggle-for-kinetic-damage.patch index 426de90fc..05453045e 100644 --- a/patches/server/0198-Toggle-for-kinetic-damage.patch +++ b/patches/server/0198-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 30a872c7e0710506899eb2432d7271396f34c677..7de9e8611ff12bf6955db41baeb4c2080bc725bb 100644 +index a75f8b72632cab7b9f2c5c6e0cacebe8fe572691..47b9bc6ae22243c523dc3a72c13dc335a17999b9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2926,6 +2926,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2934,6 +2934,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 30a872c7e0710506899eb2432d7271396f34c677..7de9e8611ff12bf6955db41baeb4c208 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d5d4d444aa4e7e7226c6296677d3cc630af54e2..45b89ffe9b7a61d9c4d0508d533131d54e363549 100644 +index 5f48af20f046bf516ecaf0dfd9fd2b0fc209c1ad..19563349b4dab54b840a1d089521d1b5b21353ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0209-Extended-OfflinePlayer-API.patch b/patches/server/0209-Extended-OfflinePlayer-API.patch index e2e766d64..4276e685b 100644 --- a/patches/server/0209-Extended-OfflinePlayer-API.patch +++ b/patches/server/0209-Extended-OfflinePlayer-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index bb794638a990488afc8d9d245dd203269c2b38b2..2c42b1a76d002c1c1758b33a1ee8474be4524293 100644 +index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..d0e3b531392738679894a989293ae49eb319676c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -567,4 +567,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -223,10 +223,10 @@ index bb794638a990488afc8d9d245dd203269c2b38b2..2c42b1a76d002c1c1758b33a1ee8474b + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d3719998ddd7f29abb7b9a59273ddfcc27ebe63f..51c6f9f27362a5da6b454f0eb515bb27df7ed2df 100644 +index a4aed376b8c66dc251cdbaa98a067c26694c4b8d..63f7023a7f20f0133c03904ea48c15346a8963b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2511,6 +2511,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2527,6 +2527,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch index 4752bad87..f4e3e022a 100644 --- a/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7a5b7e2d50c98774d8bc50a9c83d15a67996fc90..ffc25a5f8e8ec479a7454920ccf66ef1e4ce4f71 100644 +index 03e446851e90f38a3e61db3fbecc9ff256cc0ae2..c8dc1d1f67474a06f82385d6ab7d893e3cb115ef 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1538,13 +1538,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1546,13 +1546,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,7 +25,7 @@ index 7a5b7e2d50c98774d8bc50a9c83d15a67996fc90..ffc25a5f8e8ec479a7454920ccf66ef1 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0..2dbc48d7d5912c46f4d1edaa55047215b123d1ed 100644 +index 796c1b9725bdc2499c80da6f2f0024727ea028d0..9c94fd78cbd0d3ef0c4dd3678262126b6ed2847b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,7 +38,7 @@ index f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0..2dbc48d7d5912c46f4d1edaa55047215 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db1e6276243ee849757bed15f8308474afe56790..a5e9e56c86de0ae3b8053367dac777c94a990a30 100644 +index 1dffbf68af69545c6de09eec0c34d160daa895a9..115d9870e89d3efc56d4c6da4cf282e695c47fba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index 8e1bff5b9..e109f7678 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 746f88db6b78b3c8ec372bfaacb26ec98f3b1163..6d50cf1887e998793c3101ba4c22186bcd70f60c 100644 +index f19f2199cac5a7eb275f40cc23472416a40ec0da..14e9e5ad1338c8cbb7fd6302794fa98c707cb2d3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2321,6 +2321,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2348,6 +2348,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index 956a750d0..fece02ba3 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -566,7 +566,7 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d5837c675e033c7277656e026cb98d55b6668038..c3239a2823d152b8de1f760216323936c8b3a1ff 100644 +index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442b7a6df83 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -823,12 +823,12 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -778,7 +778,7 @@ index d5837c675e033c7277656e026cb98d55b6668038..c3239a2823d152b8de1f760216323936 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a5ad9a5bf708f6ed9844c5ac42f07a34f0833e30..38eed0f72cb6247418944fdd0770e4f9bda38f9e 100644 +index 1a864d733d8a9a098edacc048fc20a65c18f7684..199edc0bdb370e83541167bfb1dd219ed42ad829 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1237,7 +1237,7 @@ public class ServerPlayer extends Player { @@ -1037,7 +1037,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index af06a919673f2e4f41d1cd712caa5b002d12ae71..5d46d35db653d58ccb850794282e8613b33e2393 100644 +index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e612ca8dad 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -842,7 +842,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1163,7 +1163,7 @@ index af06a919673f2e4f41d1cd712caa5b002d12ae71..5d46d35db653d58ccb850794282e8613 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7c5331b1a 100644 +index c8dc1d1f67474a06f82385d6ab7d893e3cb115ef..c7815bc795ff11d521f4fa1417fe475787e65c3c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1184,7 +1184,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 } public boolean canSpawnSoulSpeedParticle() { -@@ -3159,10 +3159,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3167,10 +3167,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1198,7 +1198,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3174,7 +3174,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3182,7 +3182,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1207,7 +1207,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3464,19 +3464,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3472,19 +3472,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1232,7 +1232,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3503,8 +3503,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3511,8 +3511,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1243,7 +1243,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3531,8 +3531,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3539,8 +3539,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1254,7 +1254,7 @@ index b7d5c1342bf400bf0ee2a339b546bfed21189b56..a43859eeacf6743519f0076d005885c7 if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3549,15 +3549,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3557,15 +3557,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1509,7 +1509,7 @@ index 89e473aadb1ab0bd802e7f74a77cce09578320d7..7369290820f726c28c87bc63dba2a74f Optional optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index f44261137f12354640170206ca7bfb6d991dc7a0..1d84135c709a90843b1ee34fb47508e78a7ce95d 100644 +index bfdd33beb8206c8b0c96aad5b5002c8db02ae912..cd9129bb5049c13f08c58b8581d511b59a5bb1b5 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 @@ -158,13 +158,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index 0a3d9e870..0ca075095 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index dd6d5ed8beb6d090c2aaafc540fa857a4815558f..4563040a258f4379bd717c398a51c2d2cce9e77f 100644 +index 85546e81f90676df985de1ba6d6aa066aef4762a..ce33562ad91d4fee2c2f41e27c414f3480743485 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1551,6 +1551,42 @@ public final class CraftServer implements Server { @@ -52,10 +52,10 @@ index dd6d5ed8beb6d090c2aaafc540fa857a4815558f..4563040a258f4379bd717c398a51c2d2 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index de2ea4f5fb93b01b6c3ab350cc5dd17626fad7f6..f93e63ae9952e409abf34ead9d46a909940af554 100644 +index 14e9e5ad1338c8cbb7fd6302794fa98c707cb2d3..8b32ed17c1511cfd313875d4c8d2d0e48a4c6e69 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2325,6 +2325,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2352,6 +2352,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index de2ea4f5fb93b01b6c3ab350cc5dd17626fad7f6..f93e63ae9952e409abf34ead9d46a909 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e9ed820105b882a603b44c05bd11cec0f91072d1..5b6fb5274a4918fa235378aed520cd74239f53da 100644 +index 63f7023a7f20f0133c03904ea48c15346a8963b8..a432579ea6fb3f2c1fefe98f16a357450ad5b5ae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3339,5 +3339,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3355,5 +3355,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0274-Add-death-screen-API.patch b/patches/server/0274-Add-death-screen-API.patch index d03c216f7..3dcadc145 100644 --- a/patches/server/0274-Add-death-screen-API.patch +++ b/patches/server/0274-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 57e6d4bc3ad37d3eb66b5b4ccbc728a6dc64b00d..692387ba5f313191ba324df666ea7086241153ee 100644 +index a432579ea6fb3f2c1fefe98f16a357450ad5b5ae..3b3bbeda831f82b6d9b284d85a31a1fff578a64f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3377,5 +3377,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3393,5 +3393,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0275-Make-pufferfish-config-relocatable.patch b/patches/server/0275-Make-pufferfish-config-relocatable.patch index 6ae92addc..12a1c4c9f 100644 --- a/patches/server/0275-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0275-Make-pufferfish-config-relocatable.patch @@ -26,7 +26,7 @@ index 26f08b7fb16484c39135ed172c246f76c9e089c7..9ca1494497ae53e56b1f81fda51b0b8b if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 207a76f91758a8643976414a8732573d488bf1df..813a3c0172f1152665b95104d155e5de40589b39 100644 +index 8af211fdcc32d5701769f81fa4edd17afeafef0f..4fbb575922cb382f458a8d883e35a5733befff32 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -230,6 +230,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -38,10 +38,10 @@ index 207a76f91758a8643976414a8732573d488bf1df..813a3c0172f1152665b95104d155e5de gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 45f63f2fedee7bcab9cd3ebc3117cecd225b89d2..67c621fdc994b392dc961f79e1e3b97c2977adc4 100644 +index b214e8030b47ec2b14a8dc17894b8f89c95ab9bb..d41f9c4a3c992b5dadacb4fcb1107235fff79fa8 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -179,6 +179,12 @@ public class Main { +@@ -180,6 +180,12 @@ public class Main { .ofType(File.class) .defaultsTo(new File("purpur.yml")) .describedAs("Yml file"); From 4f12f5d3d0431cf17c2f6f80f3bdd3c834c9b8fa Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 6 Dec 2023 16:18:27 -0800 Subject: [PATCH 013/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4d111a3 Un-experimentalize Entity TP APIs (#9964) PaperMC/Paper@2182d47 Update mapping-io (#9975) PaperMC/Paper@9993eb9 Updates documentation in EntityEquipment.java (#9992) PaperMC/Paper@2184fbc Log correct recipes and advancement count on server start (#9978) PaperMC/Paper@8bda1f7 Remove unnecessary durability check in ItemStack#isSimilar (#9979) PaperMC/Paper@977a729 [ci skip] Correct Windows requiring path to gradlew (#9976) PaperMC/Paper@3766afa [ci skip] Add mention of FQ imports (#9994) PaperMC/Paper@40872ec Fix CraftMetaItem#addAttributeModifier duplication check (#9995) PaperMC/Paper@ffa4115 Configurable Dry and Wet Farmland Tick Rates (#9968) PaperMC/Paper@37bee09 Restore vanilla entity drops behavior (#7650) PaperMC/Paper@5cbd535 Fix Mushroom cow stew api (#9934) PaperMC/Paper@8e061ce Add Structure check API (#9062) PaperMC/Paper@9271ee7 Dont resend blocks on interactions (#9413) PaperMC/Paper@931781c [ci skip] rebuild patches --- gradle.properties | 2 +- patches/api/0005-Purpur-client-support.patch | 4 ++-- patches/api/0007-Ridables.patch | 4 ++-- patches/api/0010-AFK-API.patch | 4 ++-- ...030-API-for-any-mob-to-burn-daylight.patch | 4 ++-- .../api/0041-Add-local-difficulty-api.patch | 4 ++-- patches/api/0044-Debug-Marker-API.patch | 8 +++---- patches/api/0045-Add-death-screen-API.patch | 4 ++-- patches/api/0049-Fire-Immunity-API.patch | 4 ++-- .../0001-Pufferfish-Server-Changes.patch | 14 +++++------ .../0007-Component-related-conveniences.patch | 8 +++---- patches/server/0008-Ridables.patch | 24 +++++++++---------- patches/server/0012-AFK-API.patch | 4 ++-- .../0015-LivingEntity-safeFallDistance.patch | 4 ++-- ...moisten-from-water-directly-under-it.patch | 6 ++--- ...-Minecart-settings-and-WASD-controls.patch | 6 ++--- ...g-mends-most-damages-equipment-first.patch | 8 +++---- .../0060-Implement-elytra-settings.patch | 8 +++---- ...leport-to-spawn-if-outside-world-bor.patch | 8 +++---- ...Stop-squids-floating-on-top-of-water.patch | 4 ++-- ...tities-can-use-portals-configuration.patch | 8 +++---- ...re-add-farmland-mechanics-from-Alpha.patch | 6 ++--- .../0108-Add-boat-fall-damage-config.patch | 6 ++--- patches/server/0117-Implement-TPSBar.patch | 6 ++--- ...iefing-bypass-to-everything-affected.patch | 8 +++---- .../0125-Farmland-trampling-changes.patch | 6 ++--- .../server/0127-Fix-stuck-in-portals.patch | 10 ++++---- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 ++--- ...0143-Sneak-to-bulk-process-composter.patch | 6 ++--- patches/server/0147-Drowning-Settings.patch | 8 +++---- ...Break-individual-slabs-when-sneaking.patch | 6 ++--- ...-Config-to-allow-for-unsafe-enchants.patch | 4 ++-- ...0161-Configurable-broadcast-settings.patch | 4 ++-- ...72-ShulkerBox-allow-oversized-stacks.patch | 6 ++--- ...ggle-for-end-portal-safe-teleporting.patch | 6 ++--- ...90-Store-placer-on-Block-when-placed.patch | 4 ++-- ...omizable-sleeping-actionbar-messages.patch | 6 ++--- ...e-shulker-box-items-from-dropping-co.patch | 6 ++--- patches/server/0197-Add-compass-command.patch | 6 ++--- ...t-right-click-to-use-exp-for-mending.patch | 8 +++---- ...ent-BlockEntity-Lore-and-DisplayName.patch | 6 ++--- .../server/0224-Signs-allow-color-codes.patch | 6 ++--- ...Configurable-farmland-trample-height.patch | 6 ++--- ...dd-toggle-for-enchant-level-clamping.patch | 4 ++-- .../0262-Add-local-difficulty-api.patch | 4 ++-- .../server/0267-Remove-Mojang-Profiler.patch | 22 ++++++++--------- patches/server/0270-Debug-Marker-API.patch | 4 ++-- ...76-Implement-ram-and-rambar-commands.patch | 4 ++-- 48 files changed, 157 insertions(+), 157 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5f1c93763..f42a24799 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = b37bbcfd984a325c47d6dee200634b5fa189c64b +paperCommit = 931781c220b98dde0159c9a3c8dce06c3b2b1e13 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 4691ebdfa..bec915f24 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 9130a57cf6ef5d543703a03aeed07aa17b1ab7e8..5e985567d963b666f3fefa0a618ea497079dae8e 100644 +index 47fcfa2a3358766dfda2efc9bbcf5b50e3f2f7c1..ede6f747953350f1d7eae36319d82f01095e17b3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3370,4 +3370,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3366,4 +3366,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0007-Ridables.patch b/patches/api/0007-Ridables.patch index 615a3a165..cc01603de 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0007-Ridables.patch @@ -22,10 +22,10 @@ index 0c4dbb9ef63fa8575b5546239443cb2bd91ba847..4160e968e7d7e8e2a953534a981a7330 * @deprecated removed in 1.20.2 */ diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index d340ddcf6924cc834455de3acbbac91ab9c66e39..656ea43ec614e5bf4d3474b9f02dafb970f33656 100644 +index 9e3cb75536ae260dc898ab9dafbc1d98398782bc..d72ba9d6aa6f7e55d4fdf273c3b6f1c863e86fbd 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1065,4 +1065,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1063,4 +1063,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index e1d1c649b..9bff8f609 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 5e985567d963b666f3fefa0a618ea497079dae8e..b66402df0d602ef33bf8742504f35c095041dfe3 100644 +index ede6f747953350f1d7eae36319d82f01095e17b3..187bd4933d7a2bf0469ffc73e71841648cc8a5bc 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3378,5 +3378,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3374,5 +3374,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch index e4c5bb609..6abf8aacb 100644 --- a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 656ea43ec614e5bf4d3474b9f02dafb970f33656..ee3ca27a5406024ed71cce14b0891266b64e6fdf 100644 +index d72ba9d6aa6f7e55d4fdf273c3b6f1c863e86fbd..752690574e1d3f47a3cf80fe5da2ba4107386ffd 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1095,5 +1095,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1093,5 +1093,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); diff --git a/patches/api/0041-Add-local-difficulty-api.patch b/patches/api/0041-Add-local-difficulty-api.patch index d80fa46f7..9d7fc0257 100644 --- a/patches/api/0041-Add-local-difficulty-api.patch +++ b/patches/api/0041-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index f72f0f0f8eee95f95adc969d55ba7de82ee30e2a..1e794f6d2765d3e2c40b15a9699d181ffe12c2f5 100644 +index 567a36a4887da8994c9170e2885aa8cc357efa0c..26fe07a4429e40da1ce4a0433ae184f594ddb473 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4211,6 +4211,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4235,6 +4235,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index 52dd02982..1ff69f141 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index 9217a021cd6e54fda334f637a0bfbbdbc7ad14b0..dd99f53e3d559685a4b3a454a9e607c3 // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 1e794f6d2765d3e2c40b15a9699d181ffe12c2f5..2f1adae519e45743828be06df15b5f33045ae18b 100644 +index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5da48a0387 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4219,6 +4219,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4243,6 +4243,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); @@ -260,10 +260,10 @@ index 1e794f6d2765d3e2c40b15a9699d181ffe12c2f5..2f1adae519e45743828be06df15b5f33 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index b66402df0d602ef33bf8742504f35c095041dfe3..2543299cbd94f409606dddb5969123909d11d1ac 100644 +index 187bd4933d7a2bf0469ffc73e71841648cc8a5bc..3527cd8eb9e76aed7ba2226f784e9143ba2a8f6f 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3398,5 +3398,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3394,5 +3394,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index 81e579e86..cf240977a 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 2543299cbd94f409606dddb5969123909d11d1ac..fd465ab769b2ed9ff5c36d8479241aa8aa25953d 100644 +index 3527cd8eb9e76aed7ba2226f784e9143ba2a8f6f..eea83040ff15ea7c9bf97a45f5557294b309b4c8 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3468,5 +3468,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3464,5 +3464,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/api/0049-Fire-Immunity-API.patch b/patches/api/0049-Fire-Immunity-API.patch index d40117288..44dfcb936 100644 --- a/patches/api/0049-Fire-Immunity-API.patch +++ b/patches/api/0049-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index ee3ca27a5406024ed71cce14b0891266b64e6fdf..f21a0fa8420b3fd0a3655a0af998da8f8a66c4b1 100644 +index 752690574e1d3f47a3cf80fe5da2ba4107386ffd..ed9627dff9a33524da546c46e1d1be71ae1d1e0c 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1102,5 +1102,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1100,5 +1100,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 2cbb2af75..25b54b296 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 79beac737c17412913983614bd478d33e3c6ed58..f2d26ccc6abbe7804789117b0659f8094899cc33 100644 +index 64479f0a892d6847f987d844efe282a6080d607b..9525f76103136dfc900c70f97416864115f75ed5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -1914,7 +1914,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c655c6fee393c62ba79301f76baa72f9b1154a9a..c5a5e6aa4f512b8343a7cac6bd9ab8b72fa4adb4 100644 +index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0bf55da454 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1952,7 +1952,7 @@ index c655c6fee393c62ba79301f76baa72f9b1154a9a..c5a5e6aa4f512b8343a7cac6bd9ab8b7 this.baseTick(); } -@@ -4336,16 +4348,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4362,16 +4374,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1978,7 +1978,7 @@ index c655c6fee393c62ba79301f76baa72f9b1154a9a..c5a5e6aa4f512b8343a7cac6bd9ab8b7 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4353,14 +4367,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4379,14 +4393,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2046,7 +2046,7 @@ index c655c6fee393c62ba79301f76baa72f9b1154a9a..c5a5e6aa4f512b8343a7cac6bd9ab8b7 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4382,9 +4443,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4408,9 +4469,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end } } @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 87134e57a57df0fceda903e35d22f3f2de31adf3..705ff7b8317fca979d4a1459119730f13864bfc1 100644 +index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d469e877ec1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2390,7 +2390,7 @@ index 111a244087e24f25ba8524a46a228da10cd9498a..ff12ba2b79cb2e7e0bfd0e3b58ff6cb9 this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); 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 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..c65ab566c6241dd6a44bd11a449ef0c4b2f6dc65 100644 +index c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..256598e058db1fd34d36390e45ab9903768343cb 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 @@ -150,6 +150,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 38bd23f47..073d79e02 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e7452b7380511e27c3fdb9172ea7273b24fbdab7..85331b9b9edf4af02029333a628971fcf959090d 100644 +index a21b49af3134848f60d03058590505f7a5caaa11..dd84c17cee6c1ac5071fa2fefe70f91a16124b48 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1784,6 +1784,26 @@ public class ServerPlayer extends Player { +@@ -1782,6 +1782,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e78bc576497723ed727c0f4932e88bc931834ea8..3dde7e4a063863d6b785f41aa4f29590ed8d9a9b 100644 +index 80c9a523e94704f73e833e2255af6b0bf55da454..62cbb7837d38a815e76b78451f1e8cafab990177 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4078,6 +4078,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4104,6 +4104,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index b323208a3..9a8c62897 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -46,7 +46,7 @@ index 8aab01170fb512d98103935a19e468a145a6bb16..5d20509fd92969ed05f1044290650880 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a21b193f4fe3b857c5831b8ff0a4f366904df44f..1b715858cd62511dfe47f8e9157bde331aa6f6f7 100644 +index dd84c17cee6c1ac5071fa2fefe70f91a16124b48..7d29ba00128b2c079406eef13c373c4ebf66e2fa 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -756,6 +756,15 @@ public class ServerPlayer extends Player { @@ -79,7 +79,7 @@ index 6cc9271ba058f4af759eae34e2f6e9f892b4f6da..925ecb3d737f2e0e58bfdf17e2e48334 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d8568d4c6dd74b76f3d8444a2ab6f10b0cec6818..9501683d6a6239e7a053f9a40a377783232bbe8e 100644 +index 62cbb7837d38a815e76b78451f1e8cafab990177..29773f20569cfc9a9ba999617ea2875d3cb96e9a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -91,7 +91,7 @@ index d8568d4c6dd74b76f3d8444a2ab6f10b0cec6818..9501683d6a6239e7a053f9a40a377783 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2958,6 +2958,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2984,6 +2984,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index d8568d4c6dd74b76f3d8444a2ab6f10b0cec6818..9501683d6a6239e7a053f9a40a377783 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2998,6 +3005,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3024,6 +3031,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -120,7 +120,7 @@ index d8568d4c6dd74b76f3d8444a2ab6f10b0cec6818..9501683d6a6239e7a053f9a40a377783 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4926,4 +4941,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4952,4 +4967,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 705ff7b8317fca979d4a1459119730f13864bfc1..ae29cffc84900c4b44925c2c29636dd5ce1b2a38 100644 +index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda525c77b846 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1251,7 +1251,7 @@ index f383928fc5b331ddf128bdcb6a23010d8fe088d3..6815d7350a82c6d32f60aa6116466ebd float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 52cc265f1663d648b6bfd03f2ac3e191b1c16d44..9a84599457bbd14314e0c4f3fa8bf30bec8da347 100644 +index e42b0b19019ef74733fd19b08f882cccff920142..fdd99d6a9db230f9f68b0a78f41a16e7658c4c16 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -63,6 +63,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder drops = new ArrayList(); + public ArrayList drops = new ArrayList<>(); // Paper public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; @@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); diff --git a/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch index 3ce261cff..c520e1185 100644 --- a/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow soil to moisten from water directly under it diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 5946f06f63b5694034bd027984a4925b0831d439..1776906e886edd511bfbe96b8a345438a3cd66f8 100644 +index 502dcba14da9d3dcefc61fdc349a4e1e1d94b478..348f7861eebd02774717fe8668102e2586f3f771 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -162,7 +162,7 @@ public class FarmBlock extends Block { +@@ -164,7 +164,7 @@ public class FarmBlock extends Block { } } @@ -18,7 +18,7 @@ index 5946f06f63b5694034bd027984a4925b0831d439..1776906e886edd511bfbe96b8a345438 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9948d2e6594dfa5b4e98e7aca29f1cd08c03479e..ed64be25581f407edcd15b8eac1c4effd9bb8728 100644 +index 10572cc8cae0902a050e62e568b29b96d9c54a21..ae393a6c34e79ea3ac0f4a17792f296f18c3f06b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Minecart-settings-and-WASD-controls.patch b/patches/server/0040-Minecart-settings-and-WASD-controls.patch index de1ad7255..31a3969fd 100644 --- a/patches/server/0040-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0040-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9918f6ac1066ccadd3eb2635450faaf5a4350523..85383b6a9d16b7cf7e928c4d9aaf7af932540091 100644 +index b7e1930a7811ab9f174adbab8885317b3a1fead4..d8c87e4b8ca7b4872d5210e0f1e6da7a9648a122 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1109,6 +1109,7 @@ public class ServerPlayer extends Player { +@@ -1107,6 +1107,7 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -149,7 +149,7 @@ index e6a4a5898ffdcb2aa2bc01371a6d7dbc06d610ce..443bed339884f78ecda8abdbcdc9b57e protected ResourceLocation drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed64be25581f407edcd15b8eac1c4effd9bb8728..7290de61830b84ddc54f50353dd5c24a65192816 100644 +index ae393a6c34e79ea3ac0f4a17792f296f18c3f06b..269fa073b53b5434d19d6705eb2fb2d0550ba0ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch index b7d7983c2..c2d7fb609 100644 --- a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch @@ -5,7 +5,7 @@ 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 eca634792d2a7cc649675e3394e84dbaf1453905..2bd576849403bc2cfae298c2210616192ddc38db 100644 +index 6dac7cd4c9abfbde299f5d279acc2739195fc312..77ba83d02530b26ef66dcfe8b4c5e8a6109a3b28 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -331,7 +331,7 @@ public class ExperienceOrb extends Entity { @@ -18,10 +18,10 @@ index eca634792d2a7cc649675e3394e84dbaf1453905..2bd576849403bc2cfae298c221061619 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 4697df75fdee2023c41260bed211e3e3d90d2b9b..25be1927304e497a6ebf9d9ec09525a5418095db 100644 +index d0f7baa80cb7d0883304abe2ed990c258a0d92b6..6b2a5e901584714b50eadfa1224b0c97e8a23e5f 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -589,6 +589,16 @@ public final class ItemStack { +@@ -591,6 +591,16 @@ public final class ItemStack { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -73,7 +73,7 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647 public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, (stack) -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e2e95793c02521df51d9dbf76a22e11f96778f49..c48fae071a538a11739193f782232edfafb14de4 100644 +index cc373c386ca72c3c6cfd69dc26be6ccdfaae1738..f4bc9248e2e7c156688fad9e0807cb46444dfa13 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/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index 7fb4a1000..a6019ff85 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cd9b6c75cfe86d06ca4c0f4cc9b0b9dae37a1811..90a4caa7c58f3d7734e6cdb32c703484aaf6afcb 100644 +index ddffaf68e81dc24a6e050af86840bb9e6b1c4402..961d37c7b690369ac5b94755faef1872b705187f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3564,7 +3564,16 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -54,10 +54,10 @@ index 82b0bda3e35ec2157a477e1a17b2b46baadc97d9..0fc45b1048a1c4e0dc2bd1ae0437eecb itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 25be1927304e497a6ebf9d9ec09525a5418095db..6e6f60554b36117a833949ef2f9a4b68f6518a1d 100644 +index 6b2a5e901584714b50eadfa1224b0c97e8a23e5f..191bcb10f9976b815038d73ac60c0ddd6f7ee24a 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -618,7 +618,7 @@ public final class ItemStack { +@@ -620,7 +620,7 @@ public final class ItemStack { int j; if (amount > 0) { @@ -66,7 +66,7 @@ index 25be1927304e497a6ebf9d9ec09525a5418095db..6e6f60554b36117a833949ef2f9a4b68 int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -673,6 +673,12 @@ public final class ItemStack { +@@ -675,6 +675,12 @@ public final class ItemStack { if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent breakCallback.accept(entity); Item item = this.getItem(); diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 5263902a6..8fff655c0 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-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 6f5632eb105f17e0f8b39f09b68d809eb4fb2c76..fa5cf2152eb48b2b099d94963367511b032cbac6 100644 +index d8c87e4b8ca7b4872d5210e0f1e6da7a9648a122..e919fdda8b3f4012a3b48f75210513188a00cbcf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2747,4 +2747,26 @@ public class ServerPlayer extends Player { +@@ -2745,4 +2745,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index 6f5632eb105f17e0f8b39f09b68d809eb4fb2c76..fa5cf2152eb48b2b099d94963367511b + // 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 d919966b056116dc2c0777250ecb492a68257d70..fa59b382c25b9c47bf921258dec89cf2b5ca92e8 100644 +index 961d37c7b690369ac5b94755faef1872b705187f..76ea2ee6f0dc370125dfedb852c90b54ecd3d831 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -48,7 +48,7 @@ index d919966b056116dc2c0777250ecb492a68257d70..fa59b382c25b9c47bf921258dec89cf2 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5afe1d5977f1bbc2b2c2aa5982c4eb23d82e7644..8cc7e83e6272ed9c3f005c76aa3432fb2d3c76a6 100644 +index 9df1e909f4dc21d5c3d11fa67adc15efd5d82eca..3d7726bd54781e922f9d2b5b1fea510d6295919e 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/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index 2960b84ef..b1af9007a 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 01d171296c8094a6eac39af394d52ec188721fab..bc52ea716f22d3e8e99ab0968ee5ddb61ccb8779 100644 +index 8add0fa430b193a9a8267dd53bdf416aedbc495b..6c90cbbb93231b265b24fe45816d54e93c7cfc76 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4380,6 +4380,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4406,6 +4406,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch index 273e64e32..0ed47ca60 100644 --- a/patches/server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 940157724b87e0a501a6f52d78d4a170923fb027..95fecfaaffe6c7b6a46490518917285ea8551c05 100644 +index 6c90cbbb93231b265b24fe45816d54e93c7cfc76..725f7d22c67f571f9794cef6d2bc856d6f88ecb5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3099,7 +3099,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3125,7 +3125,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 940157724b87e0a501a6f52d78d4a170923fb027..95fecfaaffe6c7b6a46490518917285e if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3804,7 +3804,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3830,7 +3830,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { @@ -27,7 +27,7 @@ index 940157724b87e0a501a6f52d78d4a170923fb027..95fecfaaffe6c7b6a46490518917285e public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5bdd0d69eb2efcc6dbe0a3d48870e1906763948b..3a4b67415d2e86d2d3d3709dd669c0d6ee56644a 100644 +index d6b6d112da049e26ee867d81e37baa8f7bd4cda0..6b45e9aa4575892005765af9e202c61f50d4b1b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,6 +98,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 1d51e5a29..8833cf4fd 100644 --- a/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 1776906e886edd511bfbe96b8a345438a3cd66f8..7efae60a9a9269703a1fa7cd280b5b96557ec73e 100644 +index 348f7861eebd02774717fe8668102e2586f3f771..81e22b950e5f09e0e545d44e8979437c2accc29b 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -115,6 +115,14 @@ public class FarmBlock extends Block { +@@ -117,6 +117,14 @@ public class FarmBlock extends Block { return; } @@ -24,7 +24,7 @@ index 1776906e886edd511bfbe96b8a345438a3cd66f8..7efae60a9a9269703a1fa7cd280b5b96 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41d694ec386530f97044ff6aa98f4e436cadddd7..957fb2554554be7912f434b999a9ddd31681b92a 100644 +index c0f3f52068d147ca06dbb87da51d628b56cf51e4..30cc6cf6911fef48454a213370e4759f6f71e357 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -410,8 +410,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Add-boat-fall-damage-config.patch b/patches/server/0108-Add-boat-fall-damage-config.patch index 69b7d65be..3159d85b8 100644 --- a/patches/server/0108-Add-boat-fall-damage-config.patch +++ b/patches/server/0108-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8b05588b480af39d25bfcb84a5241e9e055c81f8..48337c143a825c2107b9f1c4b086050ad02e553a 100644 +index e919fdda8b3f4012a3b48f75210513188a00cbcf..ccde38369c07f4f1760ca2a6d76c54c148521643 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1109,7 +1109,16 @@ public class ServerPlayer extends Player { +@@ -1107,7 +1107,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -27,7 +27,7 @@ index 8b05588b480af39d25bfcb84a5241e9e055c81f8..48337c143a825c2107b9f1c4b086050a if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed11a1ca61ef0401936cd612e463a2ad4111585f..3ecf34286db35cebad22bf09bd1f15d61908a2a1 100644 +index d1792d16fe745c22a2408ca7b6446348563e5b63..68fa6b3492d9ad309f305560afe6f767c9c56fe0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index 366800ba5..fdef05c8b 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -29,7 +29,7 @@ index cef1f7169880560a9c79667320e63d552fa4aa03..13b57942eb63b2a9460f96ec59bb9ba3 this.hasLoggedStop = true; // Paper if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 6ea42811c1e7ae1b6bf17b7edad921861c7fa2e0..8b647e6f3dd576b1984ad099eb21912e0c193eb7 100644 +index 40527db18b7177d887b65825ac51613097803be8..a4063f19e5371b77e20c36746a4750bdfcc67e5f 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -350,6 +350,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -41,7 +41,7 @@ index 6ea42811c1e7ae1b6bf17b7edad921861c7fa2e0..8b647e6f3dd576b1984ad099eb21912e } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8c709fdd4328e83e44bf976ff674db66b10a8ac2..51efe3a87ca54423e8bb8c23d226bf3e23ac8862 100644 +index ccde38369c07f4f1760ca2a6d76c54c148521643..0070c97ef46dff0bc8ccea4ce3815180916d974e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -275,6 +275,7 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 8c709fdd4328e83e44bf976ff674db66b10a8ac2..51efe3a87ca54423e8bb8c23d226bf3e } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2777,5 +2780,13 @@ public class ServerPlayer extends Player { +@@ -2775,5 +2778,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index 7aca00d70..5fead2498 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5e701bd6ce6db9ef3cebbc24ce80e00aa1e558d7..1ba7451e1e246a0840205268767ab222482145c3 100644 +index 8f12325c79d16d2bdce2e6f07909f9f200d708e5..98e395f13a327967fe6ed8b7044a48903cf34eaa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1810,7 +1810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -144,7 +144,7 @@ index a5b2af9d56e4efece7161d25dbc88f343ef233cc..39d7fe20ef5b3ca34a72a50bb8d9c35a // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd83e2b7407 100644 +index 84bd2cf1797f68eadbd0a21f2cfb6ce85710d928..bd4658651ba8bccdc5b8a7d59e70e527942615dd 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -335,10 +335,10 @@ index 6365ddea0c23bc5d4009d98915f2b39aed2a0328..c7ba8503b2722e5d9ce0699b959cd6be } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 7efae60a9a9269703a1fa7cd280b5b96557ec73e..e7b5f54d2fc53878e9466ccca972df21f10a7d67 100644 +index 81e22b950e5f09e0e545d44e8979437c2accc29b..84daad72bfd5f2bf29c5f2b75b6699a27ff43b5a 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -101,7 +101,7 @@ public class FarmBlock extends Block { +@@ -103,7 +103,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. diff --git a/patches/server/0125-Farmland-trampling-changes.patch b/patches/server/0125-Farmland-trampling-changes.patch index 16a6842c8..e8a8d4cca 100644 --- a/patches/server/0125-Farmland-trampling-changes.patch +++ b/patches/server/0125-Farmland-trampling-changes.patch @@ -12,10 +12,10 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index e7b5f54d2fc53878e9466ccca972df21f10a7d67..56e66fcd840d0d3681ba671d1ffc51b232631461 100644 +index 84daad72bfd5f2bf29c5f2b75b6699a27ff43b5a..84107011175b6e58b463d5d1b716a3262be0db77 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -116,12 +116,20 @@ public class FarmBlock extends Block { +@@ -118,12 +118,20 @@ public class FarmBlock extends Block { } // Purpur start @@ -37,7 +37,7 @@ index e7b5f54d2fc53878e9466ccca972df21f10a7d67..56e66fcd840d0d3681ba671d1ffc51b2 if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d430af5942337e7f19a5085dc9124c9266c137c7..a27a2fb4d9643ed0d2cb4bbad8c09052978e123c 100644 +index 68a3f2be0b4d99041dcdb9e37c0e1dbcb9c1ae87..87daca07c8f22475921fb8ee968e3d5bfbb0a41c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -457,10 +457,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index 897a9630d..78760201e 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 51efe3a87ca54423e8bb8c23d226bf3e23ac8862..6ecabc14a4f50086790536b28e68b6ea25b27495 100644 +index 0070c97ef46dff0bc8ccea4ce3815180916d974e..0b8a6290f7a7efbeb4433a066a0f8878adcd4467 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1268,6 +1268,7 @@ public class ServerPlayer extends Player { +@@ -1266,6 +1266,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 51efe3a87ca54423e8bb8c23d226bf3e23ac8862..6ecabc14a4f50086790536b28e68b6ea // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bfd8eb90479bdb1cad6343c04995788b31b3e05c..5790e3f1d5e2c43f401bfd93e85ddee799a6aad2 100644 +index 8084b3b135257441c919a627e70849b9f2199e37..3c3f919a468435ee327e3569849f4194ef214b57 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3096,12 +3096,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3122,12 +3122,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } @@ -37,7 +37,7 @@ index bfd8eb90479bdb1cad6343c04995788b31b3e05c..5790e3f1d5e2c43f401bfd93e85ddee7 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4352f37b8568c7e9ce8cce66c2a1b36d6d9f8520..10c019d14fb20835a01c31dc4546d1c70cde6948 100644 +index 08136dfa12437d4d4bf7b5d3d9404db671e6925c..7d576796981ce7b6a292499ed755d86c86bf51db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -333,6 +333,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch index fad795247..0696083c8 100644 --- a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4c68d45f481d97d9fba7ac2eee44ca9c9261591e..b5de1fc5d352de4ba978cb718e57a913431a7c9a 100644 +index 0b8a6290f7a7efbeb4433a066a0f8878adcd4467..a81b3001842971e12c98311d3cb3347f1b284fe9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1425,7 +1425,7 @@ public class ServerPlayer extends Player { +@@ -1423,7 +1423,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -18,7 +18,7 @@ index 4c68d45f481d97d9fba7ac2eee44ca9c9261591e..b5de1fc5d352de4ba978cb718e57a913 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c09528388118f2386de3de14b8c1cb8896ebf556..33db128ff2046a7a36eb5d70b35d10947f83a931 100644 +index c4c1e27efbc121f120f68a554cd5bf37443923e1..f2dc663616d7c78cf448ab3e3e8758e1e6716d2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -353,6 +353,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0143-Sneak-to-bulk-process-composter.patch b/patches/server/0143-Sneak-to-bulk-process-composter.patch index 8a7577076..f66789b9f 100644 --- a/patches/server/0143-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0143-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index b2c2bd5ec0afd479973f7237a5c610f21231c505..f65eb045e518cdba91ace4483e385805b0e1171f 100644 +index 3706e94108f68a16fea63e734f3e3b6871dcb0b8..3b557c41fc21591fa06ead5d7d1eae871172ffa4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -578,7 +578,7 @@ public class ServerPlayerGameMode { +@@ -579,7 +579,7 @@ public class ServerPlayerGameMode { boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemstack1 = stack.copy(); @@ -90,7 +90,7 @@ index 10d3912ef043eefdf89105332e29b0d2bf4a5539..596b77306f690a2298835f0f0fea1abe int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25972a20c4930d718e4f039d4d19c35d4adb0f03..f23be13aa229537dd6f9247a3008981e4ee098bc 100644 +index a855bb2e4f04a64e47611b20342e1eb484f6bf22..71d472912a2c8dda6102357f6ed619e543e3b534 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -479,6 +479,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 930b996d6..cfd96dfe0 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5790e3f1d5e2c43f401bfd93e85ddee799a6aad2..cbb786b246847a9463f9f34a63aafa686f0db7fe 100644 +index 3c3f919a468435ee327e3569849f4194ef214b57..9304dda9563cb3b5e9a8f386cc2d479ecd048f05 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3345,7 +3345,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3371,7 +3371,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index 5790e3f1d5e2c43f401bfd93e85ddee799a6aad2..cbb786b246847a9463f9f34a63aafa68 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9aac4f3b758665d27a02340f97a6b16378ba11bf..95daa04ba54b8a5e1de707ca31d40c60e4d039d7 100644 +index b4834e26c297b0440f07fa38e97f928cc820fcc7..b7b936deddfbb07768befd49ccc14c5d86c06508 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -40,7 +40,7 @@ index 9aac4f3b758665d27a02340f97a6b16378ba11bf..95daa04ba54b8a5e1de707ca31d40c60 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0eb757ba6523e23271a08ec8af66fd6fb581ce27..50dbb896e7bfcb009d0a1819f8b994cff668a06d 100644 +index fce3d4c4af444860c72b5058fcd7276838299f89..d002bc3c3a99253a990aac0ae117de078475d144 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -164,6 +164,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0148-Break-individual-slabs-when-sneaking.patch b/patches/server/0148-Break-individual-slabs-when-sneaking.patch index d7208c51b..268b5974e 100644 --- a/patches/server/0148-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0148-Break-individual-slabs-when-sneaking.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index f65eb045e518cdba91ace4483e385805b0e1171f..2c9deba9da45feb81ed5801c33aa64e38f8d6a79 100644 +index 3b557c41fc21591fa06ead5d7d1eae871172ffa4..ea28ac7cc590aea0e3ac778e597d807412708756 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -398,6 +398,7 @@ public class ServerPlayerGameMode { +@@ -397,6 +397,7 @@ public class ServerPlayerGameMode { } else {capturedBlockEntity = true;} // Paper end return false; } @@ -47,7 +47,7 @@ index ea8c78af35b0ddc0d08adfccfc78770b867e5df6..88cfa41f90d4ad395b96fd0b69ac0bde + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50dbb896e7bfcb009d0a1819f8b994cff668a06d..1c9cba09dc987651f8533b0324578472ca2d5b02 100644 +index d002bc3c3a99253a990aac0ae117de078475d144..0f13f4727ee854fa66df7ec9f49d33622a05e252 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -600,6 +600,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index 6658e842d..663a31152 100644 --- a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -74,10 +74,10 @@ index cccd34370d76d96eddeba3de1cfc41d47f9d1f60..ceac7d74f6fbe6519535357a03a0e4d1 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 6e6f60554b36117a833949ef2f9a4b68f6518a1d..048151dd863692b41721c063d9a287f11cb2a0df 100644 +index 191bcb10f9976b815038d73ac60c0ddd6f7ee24a..43366430f1219dc364f1bf7b8112a232f85c275f 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1213,6 +1213,12 @@ public final class ItemStack { +@@ -1215,6 +1215,12 @@ public final class ItemStack { return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; } diff --git a/patches/server/0161-Configurable-broadcast-settings.patch b/patches/server/0161-Configurable-broadcast-settings.patch index 3e505c718..789bae4d5 100644 --- a/patches/server/0161-Configurable-broadcast-settings.patch +++ b/patches/server/0161-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index 0b3a06027f2c600960cd88159803be187c4d0317..533a348acb53c8e7590f3d81c19e53a6 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b5de1fc5d352de4ba978cb718e57a913431a7c9a..04394c0b122d646ce35c259de41f97e93461955f 100644 +index a81b3001842971e12c98311d3cb3347f1b284fe9..934838dc695b708d0672d787887726587dc5762c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1006,6 +1006,7 @@ public class ServerPlayer extends Player { +@@ -1004,6 +1004,7 @@ public class ServerPlayer extends Player { })); Team scoreboardteambase = this.getTeam(); diff --git a/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch index 704e05f48..3738a72dd 100644 --- a/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch @@ -9,10 +9,10 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for creative players) instead of routing it through the LootableBuilder. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 2c9deba9da45feb81ed5801c33aa64e38f8d6a79..0838b3c612c832276afa1edc090ef7771e8bf2fc 100644 +index ea28ac7cc590aea0e3ac778e597d807412708756..dce9f57806052337c9256d45e95b4b84a88bf852 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -429,7 +429,7 @@ public class ServerPlayerGameMode { +@@ -428,7 +428,7 @@ public class ServerPlayerGameMode { ItemStack mainHandStack = null; // Paper boolean isCorrectTool = false; // Paper @@ -35,7 +35,7 @@ index d5fe3b8e2f5a8899f6afeb0600764284a617f261..2b513fc2f6c33963e43093cb08594bff blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2abe6192ab9caac24aae3c8488cf0ee3cb3173d7..bb01e0a0e92d9c6fad33129fe61a2a53779f44ff 100644 +index e50d8cb072acd403c285fee9a0df80e4d5946846..49416c3d1c8a8d3cb3882ea9394898ff4eb73118 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -657,6 +657,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch index b5f24f045..f8d11df58 100644 --- a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6f56cbf6104303cb6ddfa59f41e37a64e3c18ae2..bf48e496f4988f45ea8c92eb45544f44753e5738 100644 +index 3cbed62b617cf3147030b185f6ae6d829aee9476..a275702357c21187225710858c10a7b184e73879 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3170,7 +3170,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3196,7 +3196,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -45,7 +45,7 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce9a971ce1b9657823988395cb37b109a7b3410e..db5156b0781cedc56929f73d3183b853b26ff4f7 100644 +index 36010960bd8511c17cb00bf4eda4cb0cfb89cf58..36fe53481de6b72841ac7b7a771bba355726941b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -631,6 +631,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0190-Store-placer-on-Block-when-placed.patch b/patches/server/0190-Store-placer-on-Block-when-placed.patch index 7c35d7b30..4e7310b52 100644 --- a/patches/server/0190-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0190-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 048151dd863692b41721c063d9a287f11cb2a0df..c0588e87f6f0ec3d642eacac41a3060abc08e33d 100644 +index 43366430f1219dc364f1bf7b8112a232f85c275f..5532e166c7e010add65e5921722b50272c805c03 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -432,6 +432,7 @@ public final class ItemStack { @@ -16,7 +16,7 @@ index 048151dd863692b41721c063d9a287f11cb2a0df..c0588e87f6f0ec3d642eacac41a3060a } world.preventPoiUpdated = false; -@@ -461,6 +462,7 @@ public final class ItemStack { +@@ -463,6 +464,7 @@ public final class ItemStack { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, context); // Paper - pass context } diff --git a/patches/server/0192-Customizable-sleeping-actionbar-messages.patch b/patches/server/0192-Customizable-sleeping-actionbar-messages.patch index c5065add9..3b1e397ce 100644 --- a/patches/server/0192-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0192-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4edea5ea0964bc054b76b1c6635c5b719721e202..f7d9398c9a73c8a02a2515b9d43b49433e5f883c 100644 +index 81c7fc2cb4c49745b45ecaaa20d91bab457272d5..331985ee26b9491b7ff71c6a104fafd08f983554 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1219,11 +1219,27 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -38,10 +38,10 @@ index 4edea5ea0964bc054b76b1c6635c5b719721e202..f7d9398c9a73c8a02a2515b9d43b4943 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 04394c0b122d646ce35c259de41f97e93461955f..4cc1604114ce283a70fb8faf89ac2b3979b06b52 100644 +index 934838dc695b708d0672d787887726587dc5762c..f149c4149bf3c19e87c15cbea0078c95283a4d84 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1466,7 +1466,19 @@ public class ServerPlayer extends Player { +@@ -1464,7 +1464,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch index 0a7e015a3..9b6506fad 100644 --- a/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -6,10 +6,10 @@ Subject: [PATCH] option to disable shulker box items from dropping contents diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index e483186a5292b3b53bfb1af4d56f55fcc1a6106c..ec58193ebd73130f14dc5d8f51caa913b2036fc5 100644 +index efdf56044396b4ce486948d2c993971f99174a5e..21916ab9bde38ef8383e746f2ce597b0fcb81d9b 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -288,7 +288,7 @@ public class BlockItem extends Item { +@@ -287,7 +287,7 @@ public class BlockItem extends Item { @Override public void onDestroyed(ItemEntity entity) { @@ -19,7 +19,7 @@ index e483186a5292b3b53bfb1af4d56f55fcc1a6106c..ec58193ebd73130f14dc5d8f51caa913 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2bc762175dfab4f64b00c56bbb28ff26b3cad73..8a6b73793bab42e683e22a54d8b801d65baf5fe5 100644 +index ad40281464ef651b01520f5662d315ed2f84304b..943fcd97ff515fbcc8508344f5094180ba181978 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -221,6 +221,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0197-Add-compass-command.patch b/patches/server/0197-Add-compass-command.patch index bd4a9e773..7528ba3de 100644 --- a/patches/server/0197-Add-compass-command.patch +++ b/patches/server/0197-Add-compass-command.patch @@ -17,7 +17,7 @@ index e254f7c498c5a1608afe130b2dd4d3d037069f25..af712f089e7919fa0bd3946866fd3486 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6dbc75a216b52cf1c2d398e781893a61d95fb7da..39e64f3fcce79897d18aa2cf4c1224a994839cad 100644 +index f149c4149bf3c19e87c15cbea0078c95283a4d84..1cca542c33510a01fb59631e68b1aa212d8230a5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -276,6 +276,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index 6dbc75a216b52cf1c2d398e781893a61d95fb7da..39e64f3fcce79897d18aa2cf4c1224a9 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2802,5 +2805,13 @@ public class ServerPlayer extends Player { +@@ -2800,5 +2803,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -89,7 +89,7 @@ index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c40 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0319fa5cb86e40520228bbdbd41e51c38cb4ffd6..3d5d4d444aa4e7e7226c6296677d3cc630af54e2 100644 +index d26630c3a5d34b51f2104fe135d5a11a87e4e974..5f48af20f046bf516ecaf0dfd9fd2b0fc209c1ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch index a5ff82e2a..93b94235a 100644 --- a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 0520d66d9de942f12f61dd1f735f8c19d5d62f07..818b360c205c7667946f49e324daa961b3b446cb 100644 +index dce9f57806052337c9256d45e95b4b84a88bf852..6f8d990cbc15c3fa11acdf59fc1ec1fa583f60ec 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -518,6 +518,7 @@ public class ServerPlayerGameMode { +@@ -517,6 +517,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ index 0520d66d9de942f12f61dd1f735f8c19d5d62f07..818b360c205c7667946f49e324daa961 BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -620,4 +621,18 @@ public class ServerPlayerGameMode { +@@ -621,4 +622,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -48,7 +48,7 @@ index a541c642ef5132ec41dedac770fd31d96401806c..2152abc4ea04515a688af1dca8174f96 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3a5decf6586569c347d36f4416cf3cb3b0bef78..8e658c5e81b85fa4fa36b9e18a02bd0634e42554 100644 +index e3c83c9cd122fb4917f1292d3623a5a902562579..1147ae92fb688d57cf4e831bd43be203064a0e88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -413,6 +413,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0223-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0223-Persistent-BlockEntity-Lore-and-DisplayName.patch index f9074e9dc..9a68c5fd8 100644 --- a/patches/server/0223-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0223-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -7,10 +7,10 @@ Makes it so that when a BlockEntity is placed in the world and then broken, the dropped ItemStack retains any original custom display name/lore. diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index ec58193ebd73130f14dc5d8f51caa913b2036fc5..41728bcbd5ca3585da64f7c3289b26977f90c229 100644 +index 21916ab9bde38ef8383e746f2ce597b0fcb81d9b..42bfde8e36b6395f50973300313d6959e2735327 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -153,7 +153,24 @@ public class BlockItem extends Item { +@@ -152,7 +152,24 @@ public class BlockItem extends Item { } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) { @@ -195,7 +195,7 @@ index 370a25d2deb54f10a35ee24d9e7e92fbfde60edf..2f19f6ac5de454845f5d13a3ebb93af6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbf30293766899b7aa66dc922ba76395feca1094..0f8384ba3bb9b6f36bb36bf833c260076b49014e 100644 +index 48b21a71c25974668600cee9437cc8214f47b906..df79037cb06d06d716d0615ec89792ec30e5c18c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0224-Signs-allow-color-codes.patch b/patches/server/0224-Signs-allow-color-codes.patch index 72f9f8709..27aba3cdc 100644 --- a/patches/server/0224-Signs-allow-color-codes.patch +++ b/patches/server/0224-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f00c8b834db7ff9c92d878560d83db91b76c82fe..6a97eca066c6957eefb15e8f23eb29b1781cf1a9 100644 +index 1cca542c33510a01fb59631e68b1aa212d8230a5..e91f5203478623a6b50ad28236e265bd599ce999 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1578,6 +1578,7 @@ public class ServerPlayer extends Player { +@@ -1576,6 +1576,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -84,7 +84,7 @@ index 38cde466714e5663cd416b6afd5d2558e139ec09..2d625f18f2ba42ee5a1ebeea78ca395a public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f8384ba3bb9b6f36bb36bf833c260076b49014e..3d07df1fbe7116df6f97a2fb3931e739c38b671e 100644 +index df79037cb06d06d716d0615ec89792ec30e5c18c..504225c5b6085ca25a816d4a6259de36ed68941c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -977,6 +977,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0237-Configurable-farmland-trample-height.patch b/patches/server/0237-Configurable-farmland-trample-height.patch index 41e01486d..777da4159 100644 --- a/patches/server/0237-Configurable-farmland-trample-height.patch +++ b/patches/server/0237-Configurable-farmland-trample-height.patch @@ -22,10 +22,10 @@ Value set -> Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 56e66fcd840d0d3681ba671d1ffc51b232631461..d566f67f8f6f1748023430de4f191881b79e44a1 100644 +index 84107011175b6e58b463d5d1b716a3262be0db77..856099241737c43b8213ccc203ef6bb7b7667b1f 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -101,7 +101,7 @@ public class FarmBlock extends Block { +@@ -103,7 +103,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -35,7 +35,7 @@ index 56e66fcd840d0d3681ba671d1ffc51b232631461..d566f67f8f6f1748023430de4f191881 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60beda5c1f3b7ca562b8ba9ff48e0c6e50e89649..3d1107d954d8dd040895908ddadf2c11c437a9ef 100644 +index 04bccaa4fe7e81a8f82f567bfb2a9bb838961ff4..4c4c5c853eb8a840e76af9aacd73a26e83aaf6f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -889,6 +889,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch index 4556e3b5a..57cc0984b 100644 --- a/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index c0588e87f6f0ec3d642eacac41a3060abc08e33d..fc481f26368f4d823379921573a05ac5b91f39e6 100644 +index 5532e166c7e010add65e5921722b50272c805c03..2776b124dd15e4c84edcfbf98ba44d53ef149e43 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1207,7 +1207,7 @@ public final class ItemStack { +@@ -1209,7 +1209,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index e109f7678..6555f6ab4 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index f19f2199cac5a7eb275f40cc23472416a40ec0da..14e9e5ad1338c8cbb7fd6302794fa98c707cb2d3 100644 +index 90c76ddcb8af13409490b8976263d27a71954668..99df34c7efb003d63142a1cd191d863c5315b4cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2348,6 +2348,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2354,6 +2354,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index fece02ba3..fabd4e667 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -778,10 +778,10 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1a864d733d8a9a098edacc048fc20a65c18f7684..199edc0bdb370e83541167bfb1dd219ed42ad829 100644 +index e91f5203478623a6b50ad28236e265bd599ce999..70d952fedba4b9bab44e0e6de94d60b894538ce7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1237,7 +1237,7 @@ public class ServerPlayer extends Player { +@@ -1235,7 +1235,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -790,7 +790,7 @@ index 1a864d733d8a9a098edacc048fc20a65c18f7684..199edc0bdb370e83541167bfb1dd219e worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1260,8 +1260,8 @@ public class ServerPlayer extends Player { +@@ -1258,8 +1258,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -801,7 +801,7 @@ index 1a864d733d8a9a098edacc048fc20a65c18f7684..199edc0bdb370e83541167bfb1dd219e if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1279,7 +1279,7 @@ public class ServerPlayer extends Player { +@@ -1277,7 +1277,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -1037,7 +1037,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e612ca8dad 100644 +index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b540f8159 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -842,7 +842,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1105,7 +1105,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 } } // Paper start - detailed watchdog information -@@ -3137,7 +3137,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3163,7 +3163,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1114,7 +1114,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3155,7 +3155,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3181,7 +3181,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } // Paper // CraftBukkit end @@ -1123,7 +1123,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 } this.isInsidePortal = false; -@@ -3630,14 +3630,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3656,14 +3656,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1140,7 +1140,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3676,7 +3676,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3702,7 +3702,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.unRide(); // CraftBukkit end @@ -1149,7 +1149,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3699,10 +3699,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3725,10 +3725,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.removeAfterChangingDimensions(); @@ -1163,7 +1163,7 @@ index f9998e1d3adff725842cff41b2950492e6936971..4254946d3f993478e44a8dda18d8a4e6 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c8dc1d1f67474a06f82385d6ab7d893e3cb115ef..c7815bc795ff11d521f4fa1417fe475787e65c3c 100644 +index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0998f230b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch index 0ca075095..a5d6c17cb 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0270-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index 85546e81f90676df985de1ba6d6aa066aef4762a..ce33562ad91d4fee2c2f41e27c414f34 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 14e9e5ad1338c8cbb7fd6302794fa98c707cb2d3..8b32ed17c1511cfd313875d4c8d2d0e48a4c6e69 100644 +index 99df34c7efb003d63142a1cd191d863c5315b4cb..bc9a049df648fa5a169219bb009c92a213df9ffd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2352,6 +2352,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2358,6 +2358,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } diff --git a/patches/server/0276-Implement-ram-and-rambar-commands.patch b/patches/server/0276-Implement-ram-and-rambar-commands.patch index f86418eb3..03ad8a8b8 100644 --- a/patches/server/0276-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0276-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 38eed0f72cb6247418944fdd0770e4f9bda38f9e..a19c2d10385d3bc81061f188e2874fe118ddd425 100644 +index 70d952fedba4b9bab44e0e6de94d60b894538ce7..7b72be8dcaf3fc5c7151c847faa2dfc75ef9eeb7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -277,6 +277,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 38eed0f72cb6247418944fdd0770e4f9bda38f9e..a19c2d10385d3bc81061f188e2874fe1 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2814,5 +2817,13 @@ public class ServerPlayer extends Player { +@@ -2812,5 +2815,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } From 18ee893c604c15554781f0bf4140ef6873d3336c Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 7 Dec 2023 16:04:02 -0800 Subject: [PATCH 014/148] all patches applied \o/ --- README.md | 8 +- build.gradle.kts | 22 +- gradle.properties | 6 +- gradle/wrapper/gradle-wrapper.properties | 2 +- ...s.patch => 0001-Purpur-config-files.patch} | 2 +- ....patch => 0002-Build-System-Changes.patch} | 4 +- ...patch => 0003-Purpur-client-support.patch} | 4 +- ...s.patch => 0004-Default-permissions.patch} | 0 ...007-Ridables.patch => 0005-Ridables.patch} | 4 +- ...ch => 0006-Allow-inventory-resizing.patch} | 4 +- ...9-Llama-API.patch => 0007-Llama-API.patch} | 0 ...{0010-AFK-API.patch => 0008-AFK-API.patch} | 4 +- ...atch => 0009-Bring-back-server-name.patch} | 4 +- ...t.patch => 0010-ExecuteCommandEvent.patch} | 0 ... 0011-LivingEntity-safeFallDistance.patch} | 0 ...old.patch => 0012-Lagging-threshold.patch} | 4 +- ...13-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 ...6-Anvil-API.patch => 0014-Anvil-API.patch} | 0 ... 0015-ItemStack-convenience-methods.patch} | 6 +- ...d-to-crystals-and-crystals-shoot-ph.patch} | 0 ...atch => 0017-ChatColor-conveniences.patch} | 0 ...018-LivingEntity-broadcastItemBreak.patch} | 0 ...atch => 0019-Item-entity-immunities.patch} | 0 ...able-zombie-aggressiveness-towards-.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...lf-API.patch => 0022-Rabid-Wolf-API.patch} | 0 ...tch => 0023-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 0 ...025-Add-EntityTeleportHinderedEvent.patch} | 0 ...tment-target-for-bows-and-crossbows.patch} | 0 ...> 0027-Iron-golem-poppy-calms-anger.patch} | 0 ...28-API-for-any-mob-to-burn-daylight.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 0 ... 0030-Fix-default-permission-system.patch} | 0 ...oner-API.patch => 0031-Summoner-API.patch} | 0 ...032-Clean-up-version-command-output.patch} | 0 ... => 0033-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 4 +- ....patch => 0035-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0036-Grindstone-API.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ... => 0038-Lobotomize-stuck-villagers.patch} | 0 ...ch => 0039-Add-local-difficulty-api.patch} | 0 ...imings.patch => 0040-Remove-Timings.patch} | 0 ...d-Bee-API.patch => 0041-Add-Bee-API.patch} | 0 ...-API.patch => 0042-Debug-Marker-API.patch} | 4 +- ....patch => 0043-Add-death-screen-API.patch} | 4 +- ...044-Add-item-packet-serialize-event.patch} | 0 ...uage-API.patch => 0045-Language-API.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...API.patch => 0047-Fire-Immunity-API.patch} | 4 +- ....patch => 0048-Added-goat-ram-event.patch} | 0 ....patch => 0049-Add-PreExplodeEvents.patch} | 0 ...ee-API.patch => 0050-Stored-Bee-API.patch} | 0 ...-API.patch => 0051-Explorer-Map-API.patch} | 0 ...I.patch => 0052-Add-hover-lines-API.patch} | 2 +- ...{0003-Rebrand.patch => 0001-Rebrand.patch} | 77 ++- ...s.patch => 0002-Purpur-config-files.patch} | 34 +- ...patch => 0003-Purpur-client-support.patch} | 12 +- ....patch => 0004-Fix-decompile-errors.patch} | 6 +- ...0005-Component-related-conveniences.patch} | 12 +- ...008-Ridables.patch => 0006-Ridables.patch} | 518 +++++++++-------- ...Configurable-entity-base-attributes.patch} | 84 +-- ...0008-Barrels-and-enderchests-6-rows.patch} | 20 +- ...1-Llama-API.patch => 0009-Llama-API.patch} | 2 +- ...{0012-AFK-API.patch => 0010-AFK-API.patch} | 36 +- ...atch => 0011-Bring-back-server-name.patch} | 8 +- ...> 0012-Configurable-server-mod-name.patch} | 8 +- ... 0013-LivingEntity-safeFallDistance.patch} | 10 +- ...old.patch => 0014-Lagging-threshold.patch} | 12 +- ...15-PlayerSetSpawnerTypeWithEggEvent.patch} | 37 +- ...8-Anvil-API.patch => 0016-Anvil-API.patch} | 2 +- ...0017-Alternative-Keepalive-Handling.patch} | 2 +- ...s.patch => 0018-Silk-touch-spawners.patch} | 12 +- ...> 0019-Add-turtle-egg-block-options.patch} | 6 +- ...settings-suppressing-pointless-logs.patch} | 6 +- ...> 0021-Disable-outdated-build-check.patch} | 2 +- ...gs.patch => 0022-Giants-AI-settings.patch} | 2 +- ...> 0023-Zombie-horse-naturally-spawn.patch} | 4 +- ...024-Charged-creeper-naturally-spawn.patch} | 2 +- ...it-naturally-spawn-toast-and-killer.patch} | 2 +- ...er-showing-in-ping-before-server-fu.patch} | 2 +- ...atch => 0027-Tulips-change-fox-type.patch} | 4 +- ...patch => 0028-Breedable-Polar-Bears.patch} | 2 +- ...atch => 0029-Chickens-can-retaliate.patch} | 2 +- ...ption-to-set-armorstand-step-height.patch} | 10 +- ....patch => 0031-Cat-spawning-options.patch} | 2 +- ...ms.patch => 0032-Cows-eat-mushrooms.patch} | 2 +- ...ow-rotation-when-shearing-mooshroom.patch} | 2 +- ...patch => 0034-Pigs-give-saddle-back.patch} | 2 +- ...5-Snowman-drop-and-put-back-pumpkin.patch} | 0 ...6-Ender-dragon-always-drop-full-exp.patch} | 6 +- ...oisten-from-water-directly-under-it.patch} | 4 +- ...Minecart-settings-and-WASD-controls.patch} | 24 +- ...ble-loot-drops-on-death-by-cramming.patch} | 6 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...ould-check-if-entity-can-use-portal.patch} | 0 ...Skip-events-if-there-s-no-listeners.patch} | 6 +- ... 0043-Add-permission-for-F3-N-debug.patch} | 4 +- ...ch => 0044-Configurable-TPS-Catchup.patch} | 26 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 6 +- ...erman-and-creeper-griefing-controls.patch} | 8 +- ...047-Villagers-follow-emerald-blocks.patch} | 4 +- ...ch => 0048-Allow-leashing-villagers.patch} | 8 +- ... => 0049-Implement-infinite-liquids.patch} | 8 +- ...0-Make-lava-flow-speed-configurable.patch} | 2 +- ...dd-player-death-exp-control-options.patch} | 6 +- ...rable-void-damage-height-and-damage.patch} | 8 +- ...=> 0053-Add-canSaveToDisk-to-Entity.patch} | 12 +- ...spenser-curse-of-binding-protection.patch} | 8 +- ...-for-boats-to-eject-players-on-land.patch} | 6 +- ...-mends-most-damages-equipment-first.patch} | 6 +- ...057-Add-5-second-tps-average-in-tps.patch} | 18 +- ...h => 0058-Implement-elytra-settings.patch} | 14 +- ...atch => 0059-Item-entity-immunities.patch} | 14 +- ...mand.patch => 0060-Add-ping-command.patch} | 4 +- ...mand.patch => 0061-Add-demo-command.patch} | 4 +- ...d.patch => 0062-Add-credits-command.patch} | 4 +- ...=> 0063-Configurable-jockey-options.patch} | 8 +- ...d-to-crystals-and-crystals-shoot-ph.patch} | 2 +- ...> 0065-Add-phantom-spawning-options.patch} | 2 +- ...066-Implement-bed-explosion-options.patch} | 8 +- ...nt-respawn-anchor-explosion-options.patch} | 6 +- ...Add-allow-water-in-end-world-option.patch} | 12 +- ... => 0069-Allow-color-codes-in-books.patch} | 10 +- ...espan.patch => 0070-Entity-lifespan.patch} | 20 +- ...eport-to-spawn-if-outside-world-bor.patch} | 6 +- ...ty.patch => 0072-Squid-EAR-immunity.patch} | 4 +- ...atch => 0073-Phantoms-burn-in-light.patch} | 2 +- ...0074-Configurable-villager-breeding.patch} | 4 +- ... 0075-Redstone-deactivates-spawners.patch} | 4 +- ...ch => 0076-Totems-work-in-inventory.patch} | 4 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 0 ...0078-Dispensers-place-anvils-option.patch} | 6 +- ...rs.patch => 0079-Allow-anvil-colors.patch} | 4 +- ...-disable-dolphin-treasure-searching.patch} | 6 +- ...patch => 0081-Short-enderman-height.patch} | 8 +- ...top-squids-floating-on-top-of-water.patch} | 8 +- ...ng-obsidian-valid-for-portal-frames.patch} | 2 +- ...ities-can-use-portals-configuration.patch} | 6 +- ...085-LivingEntity-broadcastItemBreak.patch} | 4 +- ...tomizable-wither-health-and-healing.patch} | 4 +- ...gling-special-MobSpawners-per-world.patch} | 6 +- ...patch => 0088-Raid-cooldown-setting.patch} | 2 +- ...-config-options-per-projectile-type.patch} | 2 +- ...able-zombie-aggressiveness-towards-.patch} | 4 +- ...-to-recipe-s-ExactChoice-ingredient.patch} | 6 +- ...y.patch => 0092-Flying-squids-Oh-my.patch} | 0 ...patch => 0093-Infinity-bow-settings.patch} | 2 +- ...=> 0094-Configurable-daylight-cycle.patch} | 16 +- ...e-and-mending-enchantments-together.patch} | 0 ...6-Furnace-uses-lava-from-underneath.patch} | 2 +- ...ws-should-not-reset-despawn-counter.patch} | 6 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 4 +- ...ustable-breeding-cooldown-to-config.patch} | 14 +- ...-entity-breeding-times-configurable.patch} | 34 +- ...es-from-item-forms-of-entities-to-e.patch} | 28 +- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 6 +- ...04-Add-configurable-snowball-damage.patch} | 2 +- ...5-Changeable-Mob-Left-Handed-Chance.patch} | 6 +- ...=> 0106-Add-boat-fall-damage-config.patch} | 4 +- ...0107-Snow-Golem-rate-of-fire-config.patch} | 0 ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 0 ...le-chance-for-wolves-to-spawn-rabid.patch} | 0 ...2-Configurable-default-collar-color.patch} | 0 ...tch => 0113-Phantom-flames-on-swoop.patch} | 2 +- ...-to-open-even-with-a-solid-block-on.patch} | 6 +- ...SBar.patch => 0115-Implement-TPSBar.patch} | 30 +- ...h => 0116-Striders-give-saddle-back.patch} | 0 ...tch => 0117-PlayerBookTooLargeEvent.patch} | 6 +- ...herite-armor-grants-fire-resistance.patch} | 4 +- ...119-Fix-rotating-UP-DOWN-CW-and-CCW.patch} | 0 ...efing-bypass-to-everything-affected.patch} | 57 +- ...llow-Note-Block-sounds-when-blocked.patch} | 6 +- ...122-Add-EntityTeleportHinderedEvent.patch} | 16 +- ... => 0123-Farmland-trampling-changes.patch} | 4 +- ...4-Movement-options-for-armor-stands.patch} | 14 +- ....patch => 0125-Fix-stuck-in-portals.patch} | 8 +- ...ggle-for-water-sensitive-mob-damage.patch} | 72 +-- ...7-Config-to-always-tame-in-Creative.patch} | 6 +- ... 0128-End-crystal-explosion-options.patch} | 2 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 8 +- ...atch => 0130-Dont-run-with-scissors.patch} | 8 +- ...nch-Man.patch => 0131-One-Punch-Man.patch} | 4 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 8 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 4 +- ...n-aggressiveness-towards-Endermites.patch} | 4 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 4 +- ...ig.patch => 0137-Tick-fluids-config.patch} | 10 +- ...38-Config-to-disable-Llama-caravans.patch} | 4 +- ...g-to-make-Creepers-explode-on-death.patch} | 2 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...141-Sneak-to-bulk-process-composter.patch} | 8 +- ...h => 0142-Config-for-skipping-night.patch} | 6 +- ...143-Add-config-for-villager-trading.patch} | 4 +- ...=> 0144-Allow-infinity-on-crossbows.patch} | 18 +- ...ngs.patch => 0145-Drowning-Settings.patch} | 6 +- ...reak-individual-slabs-when-sneaking.patch} | 6 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 4 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 4 +- ...tion-to-make-doors-require-redstone.patch} | 8 +- ...Config-to-allow-for-unsafe-enchants.patch} | 6 +- ...0151-Configurable-sponge-absorption.patch} | 6 +- ...ch => 0152-Projectile-offset-config.patch} | 4 +- ...or-powered-rail-activation-distance.patch} | 6 +- ...> 0154-Piglin-portal-spawn-modifier.patch} | 6 +- ...Config-to-change-max-number-of-bees.patch} | 2 +- ...-Config-for-wither-explosion-radius.patch} | 4 +- ... => 0157-Gamemode-extra-permissions.patch} | 6 +- ...0158-Configurable-piston-push-limit.patch} | 2 +- ...159-Configurable-broadcast-settings.patch} | 14 +- ... => 0160-Configurable-mob-blindness.patch} | 4 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 2 +- ... 0163-Iron-golem-calm-anger-options.patch} | 2 +- ...ots.patch => 0164-Breedable-parrots.patch} | 12 +- ...gurable-powered-rail-boost-modifier.patch} | 6 +- ...ge-multiplier-critical-damage-value.patch} | 6 +- ...n-to-disable-dragon-egg-teleporting.patch} | 6 +- ...fig-for-unverified-username-message.patch} | 4 +- ...-anvil-cumulative-cost-configurable.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 12 +- ...71-API-for-any-mob-to-burn-daylight.patch} | 24 +- ...h => 0172-Config-MobEffect-by-world.patch} | 2 +- ...72-ShulkerBox-allow-oversized-stacks.patch | 52 -- ...eacon-Activation-Range-Configurable.patch} | 2 +- ...0174-Add-toggle-for-sand-duping-fix.patch} | 10 +- ...gle-for-end-portal-safe-teleporting.patch} | 10 +- ...ke-lightning-rod-range-configurable.patch} | 4 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 12 +- ...ayer-join-full-server-by-permission.patch} | 4 +- .../0179-Add-portal-permission-bypass.patch | 39 ++ ...0-Shulker-spawn-from-bullet-options.patch} | 10 +- ...ating-glow-berries-adds-glow-effect.patch} | 6 +- ...tal-waiting-option-permission-bypass.patch | 61 -- ...-Option-to-make-drowned-break-doors.patch} | 8 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0184-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0185-Add-uptime-command.patch} | 8 +- ...tch => 0186-Tool-actionable-options.patch} | 90 +-- ...7-Store-placer-on-Block-when-placed.patch} | 10 +- ...oner-API.patch => 0188-Summoner-API.patch} | 20 +- ...mizable-sleeping-actionbar-messages.patch} | 8 +- ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...tch => 0191-Big-dripleaf-tilt-delay.patch} | 8 +- ...0192-Player-ridable-in-water-option.patch} | 18 +- ...-Enderman-teleport-on-projectile-hi.patch} | 10 +- ...d.patch => 0194-Add-compass-command.patch} | 16 +- ...h => 0195-Toggle-for-kinetic-damage.patch} | 6 +- ...-Option-for-disable-observer-clocks.patch} | 6 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 10 +- ...199-Toggle-for-Wither-s-spawn-sound.patch} | 10 +- ...-breaks-from-solid-neighbors-config.patch} | 8 +- ...move-curse-of-binding-with-weakness.patch} | 28 +- ...0202-Conduit-behavior-configuration.patch} | 4 +- ...patch => 0203-Cauldron-fill-chances.patch} | 14 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 4 +- ... 0205-Shulker-change-color-with-dye.patch} | 8 +- ... => 0206-Extended-OfflinePlayer-API.patch} | 4 +- ...he-ability-to-add-combustible-items.patch} | 4 +- ...in-and-thunder-should-stop-on-sleep.patch} | 12 +- ...-blocks-to-grow-into-trees-naturall.patch} | 16 +- ...-right-click-to-use-exp-for-mending.patch} | 16 +- ...urally-aggressive-to-players-chance.patch} | 12 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...r-beds-to-explode-on-villager-sleep.patch} | 10 +- ...Halloween-options-and-optimizations.patch} | 18 +- ...atch => 0215-Config-for-grindstones.patch} | 2 +- ....patch => 0216-UPnP-Port-Forwarding.patch} | 10 +- ...Campfire-option-for-lit-when-placed.patch} | 8 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 14 +- ...tch => 0221-Signs-allow-color-codes.patch} | 16 +- ...-and-twisting-vines-configurable-ma.patch} | 28 +- ...=> 0223-Mobs-always-drop-experience.patch} | 342 +++++------ ....patch => 0224-Potion-NamespacedKey.patch} | 4 +- ...ne-API.patch => 0225-Grindstone-API.patch} | 2 +- ...e-to-replant-crops-and-nether-warts.patch} | 18 +- ...ring-jeb-produces-random-color-wool.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 8 +- ...=> 0229-Mob-head-visibility-percent.patch} | 20 +- ...able-valid-characters-for-usernames.patch} | 23 +- ...Shears-can-have-looting-enchantment.patch} | 2 +- ...Stop-bees-from-dying-after-stinging.patch} | 10 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 10 +- ...onfigurable-farmland-trample-height.patch} | 10 +- ...onfigurable-player-pickup-exp-delay.patch} | 12 +- ...ng.patch => 0236-Allow-void-trading.patch} | 10 +- ...h => 0237-Configurable-phantom-size.patch} | 6 +- ...> 0238-Configurable-food-attributes.patch} | 4 +- ....patch => 0239-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 10 +- ... => 0241-Lobotomize-stuck-villagers.patch} | 36 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 8 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 10 +- ...=> 0245-Anvil-repair-damage-options.patch} | 8 +- ...-turtle-egg-trampling-with-feather-.patch} | 8 +- ...d-toggle-for-enchant-level-clamping.patch} | 4 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 10 +- ...ge.patch => 0250-Stonecutter-damage.patch} | 14 +- ...le-damage-settings-for-magma-blocks.patch} | 8 +- ...252-Add-config-for-snow-on-blue-ice.patch} | 8 +- ... => 0253-Skeletons-eat-wither-roses.patch} | 6 +- ...54-Enchantment-Table-Persists-Lapis.patch} | 12 +- ...ofiler.patch => 0255-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 10 +- ...for-sculk-shrieker-can_summon-state.patch} | 14 +- ...=> 0258-Config-to-not-let-coral-die.patch} | 12 +- ...ch => 0259-Add-local-difficulty-api.patch} | 4 +- ...260-Add-toggle-for-RNG-manipulation.patch} | 6 +- ... 0261-Send-client-custom-name-of-BE.patch} | 0 ...=> 0262-Allow-custom-ChatDecorators.patch} | 4 +- ...imings.patch => 0263-Remove-Timings.patch} | 308 +++++----- ...atch => 0264-Remove-Mojang-Profiler.patch} | 535 +++++++++--------- ...r-output-for-invalid-movement-kicks.patch} | 6 +- ...d-Bee-API.patch => 0266-Add-Bee-API.patch} | 8 +- ...-API.patch => 0267-Debug-Marker-API.patch} | 12 +- ...g-option-to-ignore-creative-players.patch} | 4 +- ...69-Add-skeleton-bow-accuracy-option.patch} | 6 +- ...atch => 0270-Allay-respect-item-NBT.patch} | 8 +- ....patch => 0271-Add-death-screen-API.patch} | 4 +- ...2-Implement-ram-and-rambar-commands.patch} | 14 +- ...273-Add-item-packet-serialize-event.patch} | 12 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 10 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 14 +- ...uage-API.patch => 0277-Language-API.patch} | 4 +- ... 0278-Milk-Keeps-Beneficial-Effects.patch} | 6 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0282-Fire-Immunity-API.patch} | 22 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 8 +- ...t.patch => 0284-Added-got-ram-event.patch} | 4 +- ... 0285-Log-skipped-entity-s-position.patch} | 4 +- ....patch => 0286-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 10 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 28 +- ....patch => 0291-Add-PreExplodeEvents.patch} | 4 +- ...2-Improve-output-of-plugins-command.patch} | 0 ...atch => 0293-Add-mending-multiplier.patch} | 4 +- ....patch => 0294-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0295-Stored-Bee-API.patch} | 2 +- ...patch => 0296-Shears-can-defuse-TNT.patch} | 8 +- ...-API.patch => 0297-Explorer-Map-API.patch} | 4 +- ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0301-place-end-crystal-on-any-block.patch} | 8 +- ...I.patch => 0302-Add-hover-lines-API.patch} | 4 +- ...able-the-copper-oxidation-proximity.patch} | 10 +- .../api/0001-Fix-pufferfish-issues.patch} | 0 .../api/0001-Pufferfish-API-Changes.patch | 0 .../0001-Pufferfish-Server-Changes.patch | 0 .../server/0002-Fix-pufferfish-issues.patch | 0 ...5-Make-pufferfish-config-relocatable.patch | 0 366 files changed, 2220 insertions(+), 2323 deletions(-) rename patches/api/{0003-Purpur-config-files.patch => 0001-Purpur-config-files.patch} (91%) rename patches/api/{0004-Build-System-Changes.patch => 0002-Build-System-Changes.patch} (85%) rename patches/api/{0005-Purpur-client-support.patch => 0003-Purpur-client-support.patch} (82%) rename patches/api/{0006-Default-permissions.patch => 0004-Default-permissions.patch} (100%) rename patches/api/{0007-Ridables.patch => 0005-Ridables.patch} (97%) rename patches/api/{0008-Allow-inventory-resizing.patch => 0006-Allow-inventory-resizing.patch} (83%) rename patches/api/{0009-Llama-API.patch => 0007-Llama-API.patch} (100%) rename patches/api/{0010-AFK-API.patch => 0008-AFK-API.patch} (95%) rename patches/api/{0011-Bring-back-server-name.patch => 0009-Bring-back-server-name.patch} (87%) rename patches/api/{0012-ExecuteCommandEvent.patch => 0010-ExecuteCommandEvent.patch} (100%) rename patches/api/{0013-LivingEntity-safeFallDistance.patch => 0011-LivingEntity-safeFallDistance.patch} (100%) rename patches/api/{0014-Lagging-threshold.patch => 0012-Lagging-threshold.patch} (86%) rename patches/api/{0015-PlayerSetSpawnerTypeWithEggEvent.patch => 0013-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/api/{0016-Anvil-API.patch => 0014-Anvil-API.patch} (100%) rename patches/api/{0017-ItemStack-convenience-methods.patch => 0015-ItemStack-convenience-methods.patch} (98%) rename patches/api/{0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename patches/api/{0019-ChatColor-conveniences.patch => 0017-ChatColor-conveniences.patch} (100%) rename patches/api/{0020-LivingEntity-broadcastItemBreak.patch => 0018-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/api/{0021-Item-entity-immunities.patch => 0019-Item-entity-immunities.patch} (100%) rename patches/api/{0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/api/{0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0024-Rabid-Wolf-API.patch => 0022-Rabid-Wolf-API.patch} (100%) rename patches/api/{0025-PlayerBookTooLargeEvent.patch => 0023-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0026-Full-netherite-armor-grants-fire-resistance.patch => 0024-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0027-Add-EntityTeleportHinderedEvent.patch => 0025-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0028-Add-enchantment-target-for-bows-and-crossbows.patch => 0026-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0029-Iron-golem-poppy-calms-anger.patch => 0027-Iron-golem-poppy-calms-anger.patch} (100%) rename patches/api/{0030-API-for-any-mob-to-burn-daylight.patch => 0028-API-for-any-mob-to-burn-daylight.patch} (91%) rename patches/api/{0031-Add-back-player-spawned-endermite-API.patch => 0029-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/api/{0032-Fix-default-permission-system.patch => 0030-Fix-default-permission-system.patch} (100%) rename patches/api/{0033-Summoner-API.patch => 0031-Summoner-API.patch} (100%) rename patches/api/{0034-Clean-up-version-command-output.patch => 0032-Clean-up-version-command-output.patch} (100%) rename patches/api/{0035-Extended-OfflinePlayer-API.patch => 0033-Extended-OfflinePlayer-API.patch} (100%) rename patches/api/{0036-Added-the-ability-to-add-combustible-items.patch => 0034-Added-the-ability-to-add-combustible-items.patch} (91%) rename patches/api/{0037-Potion-NamespacedKey.patch => 0035-Potion-NamespacedKey.patch} (100%) rename patches/api/{0038-Grindstone-API.patch => 0036-Grindstone-API.patch} (100%) rename patches/api/{0039-Shears-can-have-looting-enchantment.patch => 0037-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0040-Lobotomize-stuck-villagers.patch => 0038-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0041-Add-local-difficulty-api.patch => 0039-Add-local-difficulty-api.patch} (100%) rename patches/api/{0042-Remove-Timings.patch => 0040-Remove-Timings.patch} (100%) rename patches/api/{0043-Add-Bee-API.patch => 0041-Add-Bee-API.patch} (100%) rename patches/api/{0044-Debug-Marker-API.patch => 0042-Debug-Marker-API.patch} (99%) rename patches/api/{0045-Add-death-screen-API.patch => 0043-Add-death-screen-API.patch} (89%) rename patches/api/{0046-Add-item-packet-serialize-event.patch => 0044-Add-item-packet-serialize-event.patch} (100%) rename patches/api/{0047-Language-API.patch => 0045-Language-API.patch} (100%) rename patches/api/{0048-Add-log-suppression-for-LibraryLoader.patch => 0046-Add-log-suppression-for-LibraryLoader.patch} (96%) rename patches/api/{0049-Fire-Immunity-API.patch => 0047-Fire-Immunity-API.patch} (84%) rename patches/api/{0050-Added-goat-ram-event.patch => 0048-Added-goat-ram-event.patch} (100%) rename patches/api/{0051-Add-PreExplodeEvents.patch => 0049-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0052-Stored-Bee-API.patch => 0050-Stored-Bee-API.patch} (100%) rename patches/api/{0053-Explorer-Map-API.patch => 0051-Explorer-Map-API.patch} (100%) rename patches/api/{0054-Add-hover-lines-API.patch => 0052-Add-hover-lines-API.patch} (95%) rename patches/server/{0003-Rebrand.patch => 0001-Rebrand.patch} (95%) rename patches/server/{0004-Purpur-config-files.patch => 0002-Purpur-config-files.patch} (94%) rename patches/server/{0005-Purpur-client-support.patch => 0003-Purpur-client-support.patch} (86%) rename patches/server/{0006-Fix-decompile-errors.patch => 0004-Fix-decompile-errors.patch} (94%) rename patches/server/{0007-Component-related-conveniences.patch => 0005-Component-related-conveniences.patch} (89%) rename patches/server/{0008-Ridables.patch => 0006-Ridables.patch} (92%) rename patches/server/{0009-Configurable-entity-base-attributes.patch => 0007-Configurable-entity-base-attributes.patch} (97%) rename patches/server/{0010-Barrels-and-enderchests-6-rows.patch => 0008-Barrels-and-enderchests-6-rows.patch} (95%) rename patches/server/{0011-Llama-API.patch => 0009-Llama-API.patch} (97%) rename patches/server/{0012-AFK-API.patch => 0010-AFK-API.patch} (93%) rename patches/server/{0013-Bring-back-server-name.patch => 0011-Bring-back-server-name.patch} (82%) rename patches/server/{0014-Configurable-server-mod-name.patch => 0012-Configurable-server-mod-name.patch} (81%) rename patches/server/{0015-LivingEntity-safeFallDistance.patch => 0013-LivingEntity-safeFallDistance.patch} (91%) rename patches/server/{0016-Lagging-threshold.patch => 0014-Lagging-threshold.patch} (84%) rename patches/server/{0017-PlayerSetSpawnerTypeWithEggEvent.patch => 0015-PlayerSetSpawnerTypeWithEggEvent.patch} (55%) rename patches/server/{0018-Anvil-API.patch => 0016-Anvil-API.patch} (98%) rename patches/server/{0019-Alternative-Keepalive-Handling.patch => 0017-Alternative-Keepalive-Handling.patch} (97%) rename patches/server/{0020-Silk-touch-spawners.patch => 0018-Silk-touch-spawners.patch} (95%) rename patches/server/{0021-Add-turtle-egg-block-options.patch => 0019-Add-turtle-egg-block-options.patch} (91%) rename patches/server/{0022-Logger-settings-suppressing-pointless-logs.patch => 0020-Logger-settings-suppressing-pointless-logs.patch} (95%) rename patches/server/{0023-Disable-outdated-build-check.patch => 0021-Disable-outdated-build-check.patch} (92%) rename patches/server/{0024-Giants-AI-settings.patch => 0022-Giants-AI-settings.patch} (98%) rename patches/server/{0025-Zombie-horse-naturally-spawn.patch => 0023-Zombie-horse-naturally-spawn.patch} (95%) rename patches/server/{0026-Charged-creeper-naturally-spawn.patch => 0024-Charged-creeper-naturally-spawn.patch} (96%) rename patches/server/{0027-Rabbit-naturally-spawn-toast-and-killer.patch => 0025-Rabbit-naturally-spawn-toast-and-killer.patch} (96%) rename patches/server/{0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (92%) rename patches/server/{0029-Tulips-change-fox-type.patch => 0027-Tulips-change-fox-type.patch} (95%) rename patches/server/{0030-Breedable-Polar-Bears.patch => 0028-Breedable-Polar-Bears.patch} (97%) rename patches/server/{0031-Chickens-can-retaliate.patch => 0029-Chickens-can-retaliate.patch} (97%) rename patches/server/{0032-Add-option-to-set-armorstand-step-height.patch => 0030-Add-option-to-set-armorstand-step-height.patch} (81%) rename patches/server/{0033-Cat-spawning-options.patch => 0031-Cat-spawning-options.patch} (97%) rename patches/server/{0034-Cows-eat-mushrooms.patch => 0032-Cows-eat-mushrooms.patch} (98%) rename patches/server/{0035-Fix-cow-rotation-when-shearing-mooshroom.patch => 0033-Fix-cow-rotation-when-shearing-mooshroom.patch} (93%) rename patches/server/{0036-Pigs-give-saddle-back.patch => 0034-Pigs-give-saddle-back.patch} (96%) rename patches/server/{0037-Snowman-drop-and-put-back-pumpkin.patch => 0035-Snowman-drop-and-put-back-pumpkin.patch} (100%) rename patches/server/{0038-Ender-dragon-always-drop-full-exp.patch => 0036-Ender-dragon-always-drop-full-exp.patch} (89%) rename patches/server/{0039-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0037-Allow-soil-to-moisten-from-water-directly-under-it.patch} (90%) rename patches/server/{0040-Minecart-settings-and-WASD-controls.patch => 0038-Minecart-settings-and-WASD-controls.patch} (92%) rename patches/server/{0041-Disable-loot-drops-on-death-by-cramming.patch => 0039-Disable-loot-drops-on-death-by-cramming.patch} (91%) rename patches/server/{0042-Option-to-toggle-milk-curing-bad-omen.patch => 0040-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0043-End-gateway-should-check-if-entity-can-use-portal.patch => 0041-End-gateway-should-check-if-entity-can-use-portal.patch} (100%) rename patches/server/{0044-Skip-events-if-there-s-no-listeners.patch => 0042-Skip-events-if-there-s-no-listeners.patch} (88%) rename patches/server/{0045-Add-permission-for-F3-N-debug.patch => 0043-Add-permission-for-F3-N-debug.patch} (83%) rename patches/server/{0046-Configurable-TPS-Catchup.patch => 0044-Configurable-TPS-Catchup.patch} (64%) rename patches/server/{0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (89%) rename patches/server/{0048-Add-enderman-and-creeper-griefing-controls.patch => 0046-Add-enderman-and-creeper-griefing-controls.patch} (93%) rename patches/server/{0049-Villagers-follow-emerald-blocks.patch => 0047-Villagers-follow-emerald-blocks.patch} (97%) rename patches/server/{0050-Allow-leashing-villagers.patch => 0048-Allow-leashing-villagers.patch} (94%) rename patches/server/{0051-Implement-infinite-liquids.patch => 0049-Implement-infinite-liquids.patch} (93%) rename patches/server/{0052-Make-lava-flow-speed-configurable.patch => 0050-Make-lava-flow-speed-configurable.patch} (95%) rename patches/server/{0053-Add-player-death-exp-control-options.patch => 0051-Add-player-death-exp-control-options.patch} (92%) rename patches/server/{0054-Configurable-void-damage-height-and-damage.patch => 0052-Configurable-void-damage-height-and-damage.patch} (89%) rename patches/server/{0055-Add-canSaveToDisk-to-Entity.patch => 0053-Add-canSaveToDisk-to-Entity.patch} (86%) rename patches/server/{0056-Dispenser-curse-of-binding-protection.patch => 0054-Dispenser-curse-of-binding-protection.patch} (90%) rename patches/server/{0057-Add-option-for-boats-to-eject-players-on-land.patch => 0055-Add-option-for-boats-to-eject-players-on-land.patch} (87%) rename patches/server/{0058-Mending-mends-most-damages-equipment-first.patch => 0056-Mending-mends-most-damages-equipment-first.patch} (95%) rename patches/server/{0059-Add-5-second-tps-average-in-tps.patch => 0057-Add-5-second-tps-average-in-tps.patch} (89%) rename patches/server/{0060-Implement-elytra-settings.patch => 0058-Implement-elytra-settings.patch} (93%) rename patches/server/{0061-Item-entity-immunities.patch => 0059-Item-entity-immunities.patch} (93%) rename patches/server/{0062-Add-ping-command.patch => 0060-Add-ping-command.patch} (96%) rename patches/server/{0063-Add-demo-command.patch => 0061-Add-demo-command.patch} (96%) rename patches/server/{0064-Add-credits-command.patch => 0062-Add-credits-command.patch} (97%) rename patches/server/{0065-Configurable-jockey-options.patch => 0063-Configurable-jockey-options.patch} (97%) rename patches/server/{0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (99%) rename patches/server/{0067-Add-phantom-spawning-options.patch => 0065-Add-phantom-spawning-options.patch} (98%) rename patches/server/{0068-Implement-bed-explosion-options.patch => 0066-Implement-bed-explosion-options.patch} (91%) rename patches/server/{0069-Implement-respawn-anchor-explosion-options.patch => 0067-Implement-respawn-anchor-explosion-options.patch} (92%) rename patches/server/{0070-Add-allow-water-in-end-world-option.patch => 0068-Add-allow-water-in-end-world-option.patch} (90%) rename patches/server/{0071-Allow-color-codes-in-books.patch => 0069-Allow-color-codes-in-books.patch} (92%) rename patches/server/{0072-Entity-lifespan.patch => 0070-Entity-lifespan.patch} (86%) rename patches/server/{0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (93%) rename patches/server/{0074-Squid-EAR-immunity.patch => 0072-Squid-EAR-immunity.patch} (94%) rename patches/server/{0075-Phantoms-burn-in-light.patch => 0073-Phantoms-burn-in-light.patch} (98%) rename patches/server/{0076-Configurable-villager-breeding.patch => 0074-Configurable-villager-breeding.patch} (93%) rename patches/server/{0077-Redstone-deactivates-spawners.patch => 0075-Redstone-deactivates-spawners.patch} (91%) rename patches/server/{0078-Totems-work-in-inventory.patch => 0076-Totems-work-in-inventory.patch} (94%) rename patches/server/{0079-Add-vindicator-johnny-spawn-chance.patch => 0077-Add-vindicator-johnny-spawn-chance.patch} (100%) rename patches/server/{0080-Dispensers-place-anvils-option.patch => 0078-Dispensers-place-anvils-option.patch} (90%) rename patches/server/{0081-Allow-anvil-colors.patch => 0079-Allow-anvil-colors.patch} (96%) rename patches/server/{0082-Add-option-to-disable-dolphin-treasure-searching.patch => 0080-Add-option-to-disable-dolphin-treasure-searching.patch} (88%) rename patches/server/{0083-Short-enderman-height.patch => 0081-Short-enderman-height.patch} (90%) rename patches/server/{0084-Stop-squids-floating-on-top-of-water.patch => 0082-Stop-squids-floating-on-top-of-water.patch} (89%) rename patches/server/{0085-Crying-obsidian-valid-for-portal-frames.patch => 0083-Crying-obsidian-valid-for-portal-frames.patch} (96%) rename patches/server/{0086-Entities-can-use-portals-configuration.patch => 0084-Entities-can-use-portals-configuration.patch} (90%) rename patches/server/{0087-LivingEntity-broadcastItemBreak.patch => 0085-LivingEntity-broadcastItemBreak.patch} (85%) rename patches/server/{0088-Customizable-wither-health-and-healing.patch => 0086-Customizable-wither-health-and-healing.patch} (94%) rename patches/server/{0089-Allow-toggling-special-MobSpawners-per-world.patch => 0087-Allow-toggling-special-MobSpawners-per-world.patch} (95%) rename patches/server/{0090-Raid-cooldown-setting.patch => 0088-Raid-cooldown-setting.patch} (97%) rename patches/server/{0091-Despawn-rate-config-options-per-projectile-type.patch => 0089-Despawn-rate-config-options-per-projectile-type.patch} (96%) rename patches/server/{0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (97%) rename patches/server/{0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (90%) rename patches/server/{0094-Flying-squids-Oh-my.patch => 0092-Flying-squids-Oh-my.patch} (100%) rename patches/server/{0095-Infinity-bow-settings.patch => 0093-Infinity-bow-settings.patch} (97%) rename patches/server/{0096-Configurable-daylight-cycle.patch => 0094-Configurable-daylight-cycle.patch} (89%) rename patches/server/{0097-Allow-infinite-and-mending-enchantments-together.patch => 0095-Allow-infinite-and-mending-enchantments-together.patch} (100%) rename patches/server/{0098-Furnace-uses-lava-from-underneath.patch => 0096-Furnace-uses-lava-from-underneath.patch} (97%) rename patches/server/{0099-Arrows-should-not-reset-despawn-counter.patch => 0097-Arrows-should-not-reset-despawn-counter.patch} (88%) rename patches/server/{0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (92%) rename patches/server/{0101-Add-adjustable-breeding-cooldown-to-config.patch => 0099-Add-adjustable-breeding-cooldown-to-config.patch} (93%) rename patches/server/{0102-Make-entity-breeding-times-configurable.patch => 0100-Make-entity-breeding-times-configurable.patch} (97%) rename patches/server/{0103-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0101-Apply-display-names-from-item-forms-of-entities-to-e.patch} (90%) rename patches/server/{0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (89%) rename patches/server/{0106-Add-configurable-snowball-damage.patch => 0104-Add-configurable-snowball-damage.patch} (95%) rename patches/server/{0107-Changeable-Mob-Left-Handed-Chance.patch => 0105-Changeable-Mob-Left-Handed-Chance.patch} (86%) rename patches/server/{0108-Add-boat-fall-damage-config.patch => 0106-Add-boat-fall-damage-config.patch} (95%) rename patches/server/{0109-Snow-Golem-rate-of-fire-config.patch => 0107-Snow-Golem-rate-of-fire-config.patch} (100%) rename patches/server/{0110-EMC-Configurable-disable-give-dropping.patch => 0108-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (100%) rename patches/server/{0113-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0111-Configurable-chance-for-wolves-to-spawn-rabid.patch} (100%) rename patches/server/{0114-Configurable-default-collar-color.patch => 0112-Configurable-default-collar-color.patch} (100%) rename patches/server/{0115-Phantom-flames-on-swoop.patch => 0113-Phantom-flames-on-swoop.patch} (95%) rename patches/server/{0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (86%) rename patches/server/{0117-Implement-TPSBar.patch => 0115-Implement-TPSBar.patch} (94%) rename patches/server/{0118-Striders-give-saddle-back.patch => 0116-Striders-give-saddle-back.patch} (100%) rename patches/server/{0119-PlayerBookTooLargeEvent.patch => 0117-PlayerBookTooLargeEvent.patch} (92%) rename patches/server/{0120-Full-netherite-armor-grants-fire-resistance.patch => 0118-Full-netherite-armor-grants-fire-resistance.patch} (94%) rename patches/server/{0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch => 0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch} (100%) rename patches/server/{0122-Add-mobGriefing-bypass-to-everything-affected.patch => 0120-Add-mobGriefing-bypass-to-everything-affected.patch} (95%) rename patches/server/{0123-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0121-Config-to-allow-Note-Block-sounds-when-blocked.patch} (92%) rename patches/server/{0124-Add-EntityTeleportHinderedEvent.patch => 0122-Add-EntityTeleportHinderedEvent.patch} (93%) rename patches/server/{0125-Farmland-trampling-changes.patch => 0123-Farmland-trampling-changes.patch} (95%) rename patches/server/{0126-Movement-options-for-armor-stands.patch => 0124-Movement-options-for-armor-stands.patch} (86%) rename patches/server/{0127-Fix-stuck-in-portals.patch => 0125-Fix-stuck-in-portals.patch} (90%) rename patches/server/{0128-Toggle-for-water-sensitive-mob-damage.patch => 0126-Toggle-for-water-sensitive-mob-damage.patch} (97%) rename patches/server/{0129-Config-to-always-tame-in-Creative.patch => 0127-Config-to-always-tame-in-Creative.patch} (95%) rename patches/server/{0130-End-crystal-explosion-options.patch => 0128-End-crystal-explosion-options.patch} (98%) rename patches/server/{0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/server/{0132-Dont-run-with-scissors.patch => 0130-Dont-run-with-scissors.patch} (96%) rename patches/server/{0133-One-Punch-Man.patch => 0131-One-Punch-Man.patch} (94%) rename patches/server/{0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (93%) rename patches/server/{0135-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0133-Config-to-ignore-nearby-mobs-when-sleeping.patch} (93%) rename patches/server/{0136-Add-back-player-spawned-endermite-API.patch => 0134-Add-back-player-spawned-endermite-API.patch} (95%) rename patches/server/{0137-Config-Enderman-aggressiveness-towards-Endermites.patch => 0135-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0139-Tick-fluids-config.patch => 0137-Tick-fluids-config.patch} (90%) rename patches/server/{0140-Config-to-disable-Llama-caravans.patch => 0138-Config-to-disable-Llama-caravans.patch} (94%) rename patches/server/{0141-Config-to-make-Creepers-explode-on-death.patch => 0139-Config-to-make-Creepers-explode-on-death.patch} (97%) rename patches/server/{0142-Configurable-ravager-griefable-blocks-list.patch => 0140-Configurable-ravager-griefable-blocks-list.patch} (94%) rename patches/server/{0143-Sneak-to-bulk-process-composter.patch => 0141-Sneak-to-bulk-process-composter.patch} (94%) rename patches/server/{0144-Config-for-skipping-night.patch => 0142-Config-for-skipping-night.patch} (90%) rename patches/server/{0145-Add-config-for-villager-trading.patch => 0143-Add-config-for-villager-trading.patch} (96%) rename patches/server/{0146-Allow-infinity-on-crossbows.patch => 0144-Allow-infinity-on-crossbows.patch} (92%) rename patches/server/{0147-Drowning-Settings.patch => 0145-Drowning-Settings.patch} (91%) rename patches/server/{0148-Break-individual-slabs-when-sneaking.patch => 0146-Break-individual-slabs-when-sneaking.patch} (92%) rename patches/server/{0149-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0147-Config-to-disable-hostile-mob-spawn-on-ice.patch} (92%) rename patches/server/{0150-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0148-Config-to-show-Armor-Stand-arms-on-spawn.patch} (92%) rename patches/server/{0151-Option-to-make-doors-require-redstone.patch => 0149-Option-to-make-doors-require-redstone.patch} (93%) rename patches/server/{0152-Config-to-allow-for-unsafe-enchants.patch => 0150-Config-to-allow-for-unsafe-enchants.patch} (97%) rename patches/server/{0153-Configurable-sponge-absorption.patch => 0151-Configurable-sponge-absorption.patch} (89%) rename patches/server/{0154-Projectile-offset-config.patch => 0152-Projectile-offset-config.patch} (98%) rename patches/server/{0155-Config-for-powered-rail-activation-distance.patch => 0153-Config-for-powered-rail-activation-distance.patch} (86%) rename patches/server/{0156-Piglin-portal-spawn-modifier.patch => 0154-Piglin-portal-spawn-modifier.patch} (91%) rename patches/server/{0157-Config-to-change-max-number-of-bees.patch => 0155-Config-to-change-max-number-of-bees.patch} (96%) rename patches/server/{0158-Config-for-wither-explosion-radius.patch => 0156-Config-for-wither-explosion-radius.patch} (93%) rename patches/server/{0159-Gamemode-extra-permissions.patch => 0157-Gamemode-extra-permissions.patch} (95%) rename patches/server/{0160-Configurable-piston-push-limit.patch => 0158-Configurable-piston-push-limit.patch} (96%) rename patches/server/{0161-Configurable-broadcast-settings.patch => 0159-Configurable-broadcast-settings.patch} (84%) rename patches/server/{0162-Configurable-mob-blindness.patch => 0160-Configurable-mob-blindness.patch} (94%) rename patches/server/{0163-Hide-hidden-players-from-entity-selector.patch => 0161-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0164-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0162-Config-for-health-to-impact-Creeper-explosion-radius.patch} (96%) rename patches/server/{0165-Iron-golem-calm-anger-options.patch => 0163-Iron-golem-calm-anger-options.patch} (98%) rename patches/server/{0166-Breedable-parrots.patch => 0164-Breedable-parrots.patch} (88%) rename patches/server/{0167-Configurable-powered-rail-boost-modifier.patch => 0165-Configurable-powered-rail-boost-modifier.patch} (88%) rename patches/server/{0168-Add-config-change-multiplier-critical-damage-value.patch => 0166-Add-config-change-multiplier-critical-damage-value.patch} (89%) rename patches/server/{0169-Option-to-disable-dragon-egg-teleporting.patch => 0167-Option-to-disable-dragon-egg-teleporting.patch} (86%) rename patches/server/{0170-Config-for-unverified-username-message.patch => 0168-Config-for-unverified-username-message.patch} (95%) rename patches/server/{0171-Make-anvil-cumulative-cost-configurable.patch => 0169-Make-anvil-cumulative-cost-configurable.patch} (95%) rename patches/server/{0173-Bee-can-work-when-raining-or-at-night.patch => 0170-Bee-can-work-when-raining-or-at-night.patch} (88%) rename patches/server/{0174-API-for-any-mob-to-burn-daylight.patch => 0171-API-for-any-mob-to-burn-daylight.patch} (94%) rename patches/server/{0175-Config-MobEffect-by-world.patch => 0172-Config-MobEffect-by-world.patch} (98%) delete mode 100644 patches/server/0172-ShulkerBox-allow-oversized-stacks.patch rename patches/server/{0176-Beacon-Activation-Range-Configurable.patch => 0173-Beacon-Activation-Range-Configurable.patch} (96%) rename patches/server/{0177-Add-toggle-for-sand-duping-fix.patch => 0174-Add-toggle-for-sand-duping-fix.patch} (80%) rename patches/server/{0178-Add-toggle-for-end-portal-safe-teleporting.patch => 0175-Add-toggle-for-end-portal-safe-teleporting.patch} (86%) rename patches/server/{0179-Make-lightning-rod-range-configurable.patch => 0176-Make-lightning-rod-range-configurable.patch} (93%) rename patches/server/{0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (89%) rename patches/server/{0181-Allow-player-join-full-server-by-permission.patch => 0178-Allow-player-join-full-server-by-permission.patch} (90%) create mode 100644 patches/server/0179-Add-portal-permission-bypass.patch rename patches/server/{0183-Shulker-spawn-from-bullet-options.patch => 0180-Shulker-spawn-from-bullet-options.patch} (93%) rename patches/server/{0184-Eating-glow-berries-adds-glow-effect.patch => 0181-Eating-glow-berries-adds-glow-effect.patch} (94%) delete mode 100644 patches/server/0182-Add-portal-waiting-option-permission-bypass.patch rename patches/server/{0185-Option-to-make-drowned-break-doors.patch => 0182-Option-to-make-drowned-break-doors.patch} (91%) rename patches/server/{0186-Configurable-hunger-starvation-damage.patch => 0183-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0187-Enhance-SysoutCatcher.patch => 0184-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0188-Add-uptime-command.patch => 0185-Add-uptime-command.patch} (96%) rename patches/server/{0189-Tool-actionable-options.patch => 0186-Tool-actionable-options.patch} (90%) rename patches/server/{0190-Store-placer-on-Block-when-placed.patch => 0187-Store-placer-on-Block-when-placed.patch} (86%) rename patches/server/{0191-Summoner-API.patch => 0188-Summoner-API.patch} (93%) rename patches/server/{0192-Customizable-sleeping-actionbar-messages.patch => 0189-Customizable-sleeping-actionbar-messages.patch} (94%) rename patches/server/{0193-option-to-disable-shulker-box-items-from-dropping-co.patch => 0190-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0194-Big-dripleaf-tilt-delay.patch => 0191-Big-dripleaf-tilt-delay.patch} (89%) rename patches/server/{0195-Player-ridable-in-water-option.patch => 0192-Player-ridable-in-water-option.patch} (71%) rename patches/server/{0196-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (86%) rename patches/server/{0197-Add-compass-command.patch => 0194-Add-compass-command.patch} (95%) rename patches/server/{0198-Toggle-for-kinetic-damage.patch => 0195-Toggle-for-kinetic-damage.patch} (89%) rename patches/server/{0199-Add-Option-for-disable-observer-clocks.patch => 0196-Add-Option-for-disable-observer-clocks.patch} (88%) rename patches/server/{0200-Customizeable-Zombie-Villager-curing-times.patch => 0197-Customizeable-Zombie-Villager-curing-times.patch} (92%) rename patches/server/{0201-Option-for-sponges-to-work-on-lava-and-mud.patch => 0198-Option-for-sponges-to-work-on-lava-and-mud.patch} (87%) rename patches/server/{0202-Toggle-for-Wither-s-spawn-sound.patch => 0199-Toggle-for-Wither-s-spawn-sound.patch} (85%) rename patches/server/{0203-Cactus-breaks-from-solid-neighbors-config.patch => 0200-Cactus-breaks-from-solid-neighbors-config.patch} (84%) rename patches/server/{0204-Config-to-remove-curse-of-binding-with-weakness.patch => 0201-Config-to-remove-curse-of-binding-with-weakness.patch} (62%) rename patches/server/{0205-Conduit-behavior-configuration.patch => 0202-Conduit-behavior-configuration.patch} (97%) rename patches/server/{0206-Cauldron-fill-chances.patch => 0203-Cauldron-fill-chances.patch} (87%) rename patches/server/{0207-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0204-Config-to-allow-mobs-to-pathfind-over-rails.patch} (94%) rename patches/server/{0208-Shulker-change-color-with-dye.patch => 0205-Shulker-change-color-with-dye.patch} (92%) rename patches/server/{0209-Extended-OfflinePlayer-API.patch => 0206-Extended-OfflinePlayer-API.patch} (98%) rename patches/server/{0210-Added-the-ability-to-add-combustible-items.patch => 0207-Added-the-ability-to-add-combustible-items.patch} (96%) rename patches/server/{0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (88%) rename patches/server/{0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (89%) rename patches/server/{0213-Shift-right-click-to-use-exp-for-mending.patch => 0210-Shift-right-click-to-use-exp-for-mending.patch} (87%) rename patches/server/{0214-Dolphins-naturally-aggressive-to-players-chance.patch => 0211-Dolphins-naturally-aggressive-to-players-chance.patch} (91%) rename patches/server/{0215-Cows-naturally-aggressive-to-players-chance.patch => 0212-Cows-naturally-aggressive-to-players-chance.patch} (96%) rename patches/server/{0216-Option-for-beds-to-explode-on-villager-sleep.patch => 0213-Option-for-beds-to-explode-on-villager-sleep.patch} (86%) rename patches/server/{0217-Halloween-options-and-optimizations.patch => 0214-Halloween-options-and-optimizations.patch} (87%) rename patches/server/{0218-Config-for-grindstones.patch => 0215-Config-for-grindstones.patch} (98%) rename patches/server/{0219-UPnP-Port-Forwarding.patch => 0216-UPnP-Port-Forwarding.patch} (91%) rename patches/server/{0220-Campfire-option-for-lit-when-placed.patch => 0217-Campfire-option-for-lit-when-placed.patch} (87%) rename patches/server/{0221-options-to-extinguish-fire-blocks-with-snowballs.patch => 0218-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0222-Add-option-to-disable-zombie-villagers-cure.patch => 0219-Add-option-to-disable-zombie-villagers-cure.patch} (92%) rename patches/server/{0223-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0220-Persistent-BlockEntity-Lore-and-DisplayName.patch} (95%) rename patches/server/{0224-Signs-allow-color-codes.patch => 0221-Signs-allow-color-codes.patch} (90%) rename patches/server/{0225-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (89%) rename patches/server/{0226-Mobs-always-drop-experience.patch => 0223-Mobs-always-drop-experience.patch} (91%) rename patches/server/{0227-Potion-NamespacedKey.patch => 0224-Potion-NamespacedKey.patch} (98%) rename patches/server/{0228-Grindstone-API.patch => 0225-Grindstone-API.patch} (95%) rename patches/server/{0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (88%) rename patches/server/{0230-Shearing-jeb-produces-random-color-wool.patch => 0227-Shearing-jeb-produces-random-color-wool.patch} (92%) rename patches/server/{0231-Turtle-eggs-random-tick-crack-chance.patch => 0228-Turtle-eggs-random-tick-crack-chance.patch} (86%) rename patches/server/{0232-Mob-head-visibility-percent.patch => 0229-Mob-head-visibility-percent.patch} (90%) rename patches/server/{0233-Configurable-valid-characters-for-usernames.patch => 0230-Configurable-valid-characters-for-usernames.patch} (64%) rename patches/server/{0234-Shears-can-have-looting-enchantment.patch => 0231-Shears-can-have-looting-enchantment.patch} (99%) rename patches/server/{0235-Stop-bees-from-dying-after-stinging.patch => 0232-Stop-bees-from-dying-after-stinging.patch} (83%) rename patches/server/{0236-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (92%) rename patches/server/{0237-Configurable-farmland-trample-height.patch => 0234-Configurable-farmland-trample-height.patch} (90%) rename patches/server/{0238-Configurable-player-pickup-exp-delay.patch => 0235-Configurable-player-pickup-exp-delay.patch} (89%) rename patches/server/{0239-Allow-void-trading.patch => 0236-Allow-void-trading.patch} (87%) rename patches/server/{0240-Configurable-phantom-size.patch => 0237-Configurable-phantom-size.patch} (93%) rename patches/server/{0241-Configurable-food-attributes.patch => 0238-Configurable-food-attributes.patch} (98%) rename patches/server/{0242-Max-joins-per-second.patch => 0239-Max-joins-per-second.patch} (100%) rename patches/server/{0243-Configurable-minimum-demand-for-trades.patch => 0240-Configurable-minimum-demand-for-trades.patch} (89%) rename patches/server/{0244-Lobotomize-stuck-villagers.patch => 0241-Lobotomize-stuck-villagers.patch} (83%) rename patches/server/{0245-Option-for-villager-display-trade-item.patch => 0242-Option-for-villager-display-trade-item.patch} (91%) rename patches/server/{0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (85%) rename patches/server/{0247-Config-for-mob-last-hurt-by-player-time.patch => 0244-Config-for-mob-last-hurt-by-player-time.patch} (89%) rename patches/server/{0248-Anvil-repair-damage-options.patch => 0245-Anvil-repair-damage-options.patch} (94%) rename patches/server/{0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (89%) rename patches/server/{0250-Add-toggle-for-enchant-level-clamping.patch => 0247-Add-toggle-for-enchant-level-clamping.patch} (95%) rename patches/server/{0251-Skip-junit-tests-for-purpur-commands.patch => 0248-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0252-Implement-configurable-search-radius-for-villagers-t.patch => 0249-Implement-configurable-search-radius-for-villagers-t.patch} (87%) rename patches/server/{0253-Stonecutter-damage.patch => 0250-Stonecutter-damage.patch} (92%) rename patches/server/{0254-Configurable-damage-settings-for-magma-blocks.patch => 0251-Configurable-damage-settings-for-magma-blocks.patch} (88%) rename patches/server/{0255-Add-config-for-snow-on-blue-ice.patch => 0252-Add-config-for-snow-on-blue-ice.patch} (86%) rename patches/server/{0256-Skeletons-eat-wither-roses.patch => 0253-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0257-Enchantment-Table-Persists-Lapis.patch => 0254-Enchantment-Table-Persists-Lapis.patch} (93%) rename patches/server/{0258-Spark-Profiler.patch => 0255-Spark-Profiler.patch} (100%) rename patches/server/{0259-Option-to-disable-kick-for-out-of-order-chat.patch => 0256-Option-to-disable-kick-for-out-of-order-chat.patch} (82%) rename patches/server/{0260-Config-for-sculk-shrieker-can_summon-state.patch => 0257-Config-for-sculk-shrieker-can_summon-state.patch} (75%) rename patches/server/{0261-Config-to-not-let-coral-die.patch => 0258-Config-to-not-let-coral-die.patch} (81%) rename patches/server/{0262-Add-local-difficulty-api.patch => 0259-Add-local-difficulty-api.patch} (85%) rename patches/server/{0263-Add-toggle-for-RNG-manipulation.patch => 0260-Add-toggle-for-RNG-manipulation.patch} (90%) rename patches/server/{0264-Send-client-custom-name-of-BE.patch => 0261-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0265-Allow-custom-ChatDecorators.patch => 0262-Allow-custom-ChatDecorators.patch} (90%) rename patches/server/{0266-Remove-Timings.patch => 0263-Remove-Timings.patch} (82%) rename patches/server/{0267-Remove-Mojang-Profiler.patch => 0264-Remove-Mojang-Profiler.patch} (80%) rename patches/server/{0268-Add-more-logger-output-for-invalid-movement-kicks.patch => 0265-Add-more-logger-output-for-invalid-movement-kicks.patch} (91%) rename patches/server/{0269-Add-Bee-API.patch => 0266-Add-Bee-API.patch} (89%) rename patches/server/{0270-Debug-Marker-API.patch => 0267-Debug-Marker-API.patch} (93%) rename patches/server/{0271-mob-spawning-option-to-ignore-creative-players.patch => 0268-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0272-Add-skeleton-bow-accuracy-option.patch => 0269-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0273-Allay-respect-item-NBT.patch => 0270-Allay-respect-item-NBT.patch} (89%) rename patches/server/{0274-Add-death-screen-API.patch => 0271-Add-death-screen-API.patch} (87%) rename patches/server/{0276-Implement-ram-and-rambar-commands.patch => 0272-Implement-ram-and-rambar-commands.patch} (97%) rename patches/server/{0277-Add-item-packet-serialize-event.patch => 0273-Add-item-packet-serialize-event.patch} (89%) rename patches/server/{0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (94%) rename patches/server/{0279-Configurable-block-blast-resistance.patch => 0275-Configurable-block-blast-resistance.patch} (93%) rename patches/server/{0280-Configurable-block-fall-damage-modifiers.patch => 0276-Configurable-block-fall-damage-modifiers.patch} (91%) rename patches/server/{0281-Language-API.patch => 0277-Language-API.patch} (88%) rename patches/server/{0282-Milk-Keeps-Beneficial-Effects.patch => 0278-Milk-Keeps-Beneficial-Effects.patch} (93%) rename patches/server/{0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0284-Add-log-suppression-for-LibraryLoader.patch => 0280-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0285-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0286-Fire-Immunity-API.patch => 0282-Fire-Immunity-API.patch} (78%) rename patches/server/{0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (88%) rename patches/server/{0288-Added-got-ram-event.patch => 0284-Added-got-ram-event.patch} (86%) rename patches/server/{0289-Log-skipped-entity-s-position.patch => 0285-Log-skipped-entity-s-position.patch} (86%) rename patches/server/{0290-End-Crystal-Cramming.patch => 0286-End-Crystal-Cramming.patch} (91%) rename patches/server/{0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0292-Add-attribute-clamping-and-armor-limit-config.patch => 0288-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0293-Config-to-remove-explosion-radius-clamp.patch => 0289-Config-to-remove-explosion-radius-clamp.patch} (88%) rename patches/server/{0294-bonemealable-sugarcane-cactus-and-netherwart.patch => 0290-bonemealable-sugarcane-cactus-and-netherwart.patch} (86%) rename patches/server/{0295-Add-PreExplodeEvents.patch => 0291-Add-PreExplodeEvents.patch} (92%) rename patches/server/{0296-Improve-output-of-plugins-command.patch => 0292-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0297-Add-mending-multiplier.patch => 0293-Add-mending-multiplier.patch} (92%) rename patches/server/{0298-Make-GUI-Great-Again.patch => 0294-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0299-Stored-Bee-API.patch => 0295-Stored-Bee-API.patch} (98%) rename patches/server/{0300-Shears-can-defuse-TNT.patch => 0296-Shears-can-defuse-TNT.patch} (91%) rename patches/server/{0301-Explorer-Map-API.patch => 0297-Explorer-Map-API.patch} (91%) rename patches/server/{0302-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0298-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (94%) rename patches/server/{0304-Add-option-for-always-showing-item-in-player-death-m.patch => 0300-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0305-place-end-crystal-on-any-block.patch => 0301-place-end-crystal-on-any-block.patch} (88%) rename patches/server/{0306-Add-hover-lines-API.patch => 0302-Add-hover-lines-API.patch} (88%) rename patches/server/{0307-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0303-Add-option-to-disable-the-copper-oxidation-proximity.patch} (85%) rename patches/{api/0002-Fix-pufferfish-issues.patch => unapplied/api/0001-Fix-pufferfish-issues.patch} (100%) rename patches/{ => unapplied}/api/0001-Pufferfish-API-Changes.patch (100%) rename patches/{ => unapplied}/server/0001-Pufferfish-Server-Changes.patch (100%) rename patches/{ => unapplied}/server/0002-Fix-pufferfish-issues.patch (100%) rename patches/{ => unapplied}/server/0275-Make-pufferfish-config-relocatable.patch (100%) diff --git a/README.md b/README.md index af9ed877c..1a0961c19 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## Purpur [![MIT License](https://img.shields.io/github/license/PurpurMC/Purpur?&logo=github)](LICENSE) -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.2&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.4&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/PurpurMC/Purpur?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx%2BLVQcXZ10dXAVB8APE0clJ0UVK%2FF9SaBHjwXE%2F3t173L0D%2FPUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5%2Fi6h4%2BvdzGe5X3uz9Gj5EwG%2BATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6%2FcS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q%2BUqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId%2FwPGL5JLJVQIjxwIqUCE5fvA%2F%2BN2tmZ8Yd5NCcaDzxbY%2FhoGuXaBRs%2B3vY9tunACBZ%2BBKa%2FkrdWD6k%2FRaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0%2Ffk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO%2Ft3zPN%2Fn4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMVKAA5pS6%2BAAABlElEQVQ4y82PP2gVQRDGf7N3t%2Bvdixpi0N5OELFKJ1iohBciKlgYJLX6YkBbC0sVooVFBAvBPw%2BFZzrJs7DR2iYHRhBsxNI8VLwUx92MRXJGxKCp9AfL7DfDfPutFO3z5wy5DuRlWU2OvLj7hduLYXh0ZSEkOh4SjUKiBK%2BEZP34Gu%2FtbebLE86Qa8BO4FDwyWmAbPjzMWACiNgEMdun6macwfJ6z2qxZYBI6ndAxR%2BRN%2FL1ZGeXlDqFkm%2Fv33nZjHZ0u2OZrw%2F7pBYf16Re8UEJ8VpNE33fP3BxgX%2BOFOOdtjmuGpoPtT51pNcrMZORx4%2FmslQnslAlWahItymZrz%2Bmqc4%2B2z%2B71BjE5uwesEeQsaLY%2FQp42LrfPUqwy2DNO03ZK9hN4Ehj4IDBjzjKCoC5aMDG9q%2BhBz%2BrWCN3KqptBtG89Xx%2BEWB1%2Bszr8OTBFMgkSLKWQAA%2BVCU3%2BK%2BQb%2B0LB4FLGHmrP39LNv3773Ei9IBphLnVduf4VhM4M9JGqGzc%2F5bYnDsrqlcQloaK0adbNfgOUn6NRlZZ46YAAAAASUVORK5CYII%3D)](https://www.codefactor.io/repository/github/PurpurMC/Purpur) [![Join us on Discord](https://discord.com/api/guilds/685683385313919172/widget.png?style=shield)](https://purpurmc.org/discord) @@ -27,7 +27,7 @@ Join us on Discord: ## Downloads Downloads can be obtained from the [downloads page](https://purpurmc.org/downloads/) or the [downloads API](https://api.purpurmc.org). -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.2&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.4&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) Downloads API endpoints: * List versions of Minecraft with builds available: @@ -67,7 +67,7 @@ Maven org.purpurmc.purpur purpur-api - 1.20.2-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT provided ``` @@ -80,7 +80,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("org.purpurmc.purpur:purpur-api:1.20.2-R0.1-SNAPSHOT") + compileOnly("org.purpurmc.purpur:purpur-api:1.20.4-R0.1-SNAPSHOT") } ``` diff --git a/build.gradle.kts b/build.gradle.kts index 62e42d678..beb63f29a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,7 @@ allprojects { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion = JavaLanguageVersion.of(17) } } } @@ -24,7 +24,7 @@ val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" subprojects { tasks.withType().configureEach { options.encoding = Charsets.UTF_8.name() - options.release.set(17) + options.release = 17 } tasks.withType { options.encoding = Charsets.UTF_8.name() @@ -63,25 +63,25 @@ dependencies { } paperweight { - serverProject.set(project(":purpur-server")) + serverProject = project(":purpur-server") - remapRepo.set(paperMavenPublicUrl) - decompileRepo.set(paperMavenPublicUrl) + remapRepo = paperMavenPublicUrl + decompileRepo = paperMavenPublicUrl usePaperUpstream(providers.gradleProperty("paperCommit")) { withPaperPatcher { - apiPatchDir.set(layout.projectDirectory.dir("patches/api")) - apiOutputDir.set(layout.projectDirectory.dir("Purpur-API")) + apiPatchDir = layout.projectDirectory.dir("patches/api") + apiOutputDir = layout.projectDirectory.dir("Purpur-API") - serverPatchDir.set(layout.projectDirectory.dir("patches/server")) - serverOutputDir.set(layout.projectDirectory.dir("Purpur-Server")) + serverPatchDir = layout.projectDirectory.dir("patches/server") + serverOutputDir = layout.projectDirectory.dir("Purpur-Server") } } } tasks.generateDevelopmentBundle { - apiCoordinates.set("org.purpurmc.purpur:purpur-api") - mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi") + apiCoordinates = "org.purpurmc.purpur:purpur-api" + mojangApiCoordinates = "io.papermc.paper:paper-mojangapi" libraryRepositories.set( listOf( "https://repo.maven.apache.org/maven2/", diff --git a/gradle.properties b/gradle.properties index f42a24799..10f4f2b8b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.20.2-R0.1-SNAPSHOT +version = 1.20.4-R0.1-SNAPSHOT -mcVersion = 1.20.2 -paperCommit = 931781c220b98dde0159c9a3c8dce06c3b2b1e13 +mcVersion = 1.20.4 +paperCommit = 930a24f965d02250fa58436c019a4d5eb7e5f607 org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3fa8f862f..1af9e0930 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0001-Purpur-config-files.patch similarity index 91% rename from patches/api/0003-Purpur-config-files.patch rename to patches/api/0001-Purpur-config-files.patch index e50903e1e..50cfd6bc9 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0001-Purpur-config-files.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index d0c634629aa0b6bac0da93655dd86ad3aea0ce30..b599ed409f483379fae75938d27187b63b34225b 100644 +index f1fa97d12f97baf97beb92ca0719cf3cf906b225..f57711635146fd8e36f4bd2284522723a10be531 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2190,6 +2190,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0004-Build-System-Changes.patch b/patches/api/0002-Build-System-Changes.patch similarity index 85% rename from patches/api/0004-Build-System-Changes.patch rename to patches/api/0002-Build-System-Changes.patch index 3dcba3489..0b1f27bb1 100644 --- a/patches/api/0004-Build-System-Changes.patch +++ b/patches/api/0002-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index b9c75a190dbd7a90ac5ef0fbc6e6fe34806acc4e..41d7b75e904b94073dfcd12b776a7759a963b66f 100644 +index e827ee211e3c65dc68ac5867fd8476639df63645..70907ac4e8d74080c525631aac57d0633d1c6089 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -126,6 +126,8 @@ tasks.jar { +@@ -118,6 +118,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch similarity index 82% rename from patches/api/0005-Purpur-client-support.patch rename to patches/api/0003-Purpur-client-support.patch index bec915f24..cfbee023b 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 47fcfa2a3358766dfda2efc9bbcf5b50e3f2f7c1..ede6f747953350f1d7eae36319d82f01095e17b3 100644 +index 962283d336e6d53941cebbc3a995d403ff989f66..f866628e5d9e8edccab657f86f60f911c2e3fb06 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3366,4 +3366,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3414,4 +3414,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0006-Default-permissions.patch b/patches/api/0004-Default-permissions.patch similarity index 100% rename from patches/api/0006-Default-permissions.patch rename to patches/api/0004-Default-permissions.patch diff --git a/patches/api/0007-Ridables.patch b/patches/api/0005-Ridables.patch similarity index 97% rename from patches/api/0007-Ridables.patch rename to patches/api/0005-Ridables.patch index cc01603de..180b3302d 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0005-Ridables.patch @@ -22,10 +22,10 @@ index 0c4dbb9ef63fa8575b5546239443cb2bd91ba847..4160e968e7d7e8e2a953534a981a7330 * @deprecated removed in 1.20.2 */ diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 9e3cb75536ae260dc898ab9dafbc1d98398782bc..d72ba9d6aa6f7e55d4fdf273c3b6f1c863e86fbd 100644 +index 1d0fd7ff8449f815a7d980af0b378181ea8bf8d8..566c74756c66db859a4f738a7716a61d012c6df1 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1063,4 +1063,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1107,4 +1107,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0008-Allow-inventory-resizing.patch b/patches/api/0006-Allow-inventory-resizing.patch similarity index 83% rename from patches/api/0008-Allow-inventory-resizing.patch rename to patches/api/0006-Allow-inventory-resizing.patch index a93bb8a10..d61613396 100644 --- a/patches/api/0008-Allow-inventory-resizing.patch +++ b/patches/api/0006-Allow-inventory-resizing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow inventory resizing diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java -index cbce826add9dc2b3187c7bea00c27b785d7517df..3a98de6407d9a6307f89c207be1f09e639385ebe 100644 +index 64e59fe706b0bb37fc2439fa88fd40c3167c9fb5..333ba8a730d01b6baa980f34aa03f3db90c8f255 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryType.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java -@@ -151,7 +151,7 @@ public enum InventoryType { +@@ -159,7 +159,7 @@ public enum InventoryType { SMITHING_NEW(4, "Upgrade Gear"), ; diff --git a/patches/api/0009-Llama-API.patch b/patches/api/0007-Llama-API.patch similarity index 100% rename from patches/api/0009-Llama-API.patch rename to patches/api/0007-Llama-API.patch diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0008-AFK-API.patch similarity index 95% rename from patches/api/0010-AFK-API.patch rename to patches/api/0008-AFK-API.patch index 9bff8f609..c661ab8ac 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index ede6f747953350f1d7eae36319d82f01095e17b3..187bd4933d7a2bf0469ffc73e71841648cc8a5bc 100644 +index f866628e5d9e8edccab657f86f60f911c2e3fb06..e3a6289547ff378fecf97b20ab08c8b36fe9cfa6 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3374,5 +3374,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3422,5 +3422,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0009-Bring-back-server-name.patch similarity index 87% rename from patches/api/0011-Bring-back-server-name.patch rename to patches/api/0009-Bring-back-server-name.patch index f1c2fb81f..d06ac9735 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0009-Bring-back-server-name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 884902cb7f86c0b56594ccafc7d05c6c7a23ab53..7e125817c68d5549be1eaa35c563e44e4c2c5239 100644 +index 4863d9f21f0a0f11974be85360edc587ffd7eab3..0e528e26a94338b2cee9556c87b7ff071fce58f9 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -2832,4 +2832,15 @@ public final class Bukkit { @@ -25,7 +25,7 @@ index 884902cb7f86c0b56594ccafc7d05c6c7a23ab53..7e125817c68d5549be1eaa35c563e44e + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index b599ed409f483379fae75938d27187b63b34225b..a7afd08014f0c571e01d26e809f2c1a6f6f5ce2d 100644 +index f57711635146fd8e36f4bd2284522723a10be531..2b3ec780e02b90f463ec251b46566dffc3b2cda2 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2485,4 +2485,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0012-ExecuteCommandEvent.patch b/patches/api/0010-ExecuteCommandEvent.patch similarity index 100% rename from patches/api/0012-ExecuteCommandEvent.patch rename to patches/api/0010-ExecuteCommandEvent.patch diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0011-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/api/0013-LivingEntity-safeFallDistance.patch rename to patches/api/0011-LivingEntity-safeFallDistance.patch diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0012-Lagging-threshold.patch similarity index 86% rename from patches/api/0014-Lagging-threshold.patch rename to patches/api/0012-Lagging-threshold.patch index a37ea53da..e31dc8e3e 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0012-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 7e125817c68d5549be1eaa35c563e44e4c2c5239..b948c38f32f94afa1708820dbbda9c7f4f9c685c 100644 +index 0e528e26a94338b2cee9556c87b7ff071fce58f9..e008983503a4ae45e9dd7f7858291dc4d3746520 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -2842,5 +2842,14 @@ public final class Bukkit { @@ -24,7 +24,7 @@ index 7e125817c68d5549be1eaa35c563e44e4c2c5239..b948c38f32f94afa1708820dbbda9c7f // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a7afd08014f0c571e01d26e809f2c1a6f6f5ce2d..f87583244ba9ea07ffd2a438ea32f0328782dbf3 100644 +index 2b3ec780e02b90f463ec251b46566dffc3b2cda2..410aa885770c3f8be73277e90c4de6409b926f77 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2493,5 +2493,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/api/0016-Anvil-API.patch b/patches/api/0014-Anvil-API.patch similarity index 100% rename from patches/api/0016-Anvil-API.patch rename to patches/api/0014-Anvil-API.patch diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0015-ItemStack-convenience-methods.patch similarity index 98% rename from patches/api/0017-ItemStack-convenience-methods.patch rename to patches/api/0015-ItemStack-convenience-methods.patch index ae3c65b3c..f510e8647 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0015-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 8c4ba0028f5c350a2906add58d9bf3d127a16f58..8ef4fa47e6721f5154316e81c2173cc4a42f4901 100644 +index 9f86ad25a57b3f6e6bda1ce657833837cb3b2292..7a8a2387d8ae5aae44325da9277e8284b4caa8c0 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11054,4 +11054,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11500,4 +11500,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } @@ -50,7 +50,7 @@ index 8c4ba0028f5c350a2906add58d9bf3d127a16f58..8ef4fa47e6721f5154316e81c2173cc4 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 0af73cc04edb93b9772136d4d808f657ea40e733..c733206b769d7a55076d863757fcac1a129033b7 100644 +index 36e3fbc727cd748aa138f52976154ba32954cd87..eb78ddfa5a83a45cb6103415aa679e73b3d6a13f 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; diff --git a/patches/api/0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/api/0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from patches/api/0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/api/0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/patches/api/0019-ChatColor-conveniences.patch b/patches/api/0017-ChatColor-conveniences.patch similarity index 100% rename from patches/api/0019-ChatColor-conveniences.patch rename to patches/api/0017-ChatColor-conveniences.patch diff --git a/patches/api/0020-LivingEntity-broadcastItemBreak.patch b/patches/api/0018-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/api/0020-LivingEntity-broadcastItemBreak.patch rename to patches/api/0018-LivingEntity-broadcastItemBreak.patch diff --git a/patches/api/0021-Item-entity-immunities.patch b/patches/api/0019-Item-entity-immunities.patch similarity index 100% rename from patches/api/0021-Item-entity-immunities.patch rename to patches/api/0019-Item-entity-immunities.patch diff --git a/patches/api/0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/api/0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/api/0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/api/0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/api/0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0024-Rabid-Wolf-API.patch b/patches/api/0022-Rabid-Wolf-API.patch similarity index 100% rename from patches/api/0024-Rabid-Wolf-API.patch rename to patches/api/0022-Rabid-Wolf-API.patch diff --git a/patches/api/0025-PlayerBookTooLargeEvent.patch b/patches/api/0023-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0025-PlayerBookTooLargeEvent.patch rename to patches/api/0023-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0026-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0026-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0027-Add-EntityTeleportHinderedEvent.patch b/patches/api/0025-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0027-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0025-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0028-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0028-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0029-Iron-golem-poppy-calms-anger.patch b/patches/api/0027-Iron-golem-poppy-calms-anger.patch similarity index 100% rename from patches/api/0029-Iron-golem-poppy-calms-anger.patch rename to patches/api/0027-Iron-golem-poppy-calms-anger.patch diff --git a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch b/patches/api/0028-API-for-any-mob-to-burn-daylight.patch similarity index 91% rename from patches/api/0030-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0028-API-for-any-mob-to-burn-daylight.patch index 6abf8aacb..a6ccec6fb 100644 --- a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0028-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index d72ba9d6aa6f7e55d4fdf273c3b6f1c863e86fbd..752690574e1d3f47a3cf80fe5da2ba4107386ffd 100644 +index 566c74756c66db859a4f738a7716a61d012c6df1..c20f29e1ddfd1d73df19f6d6f730fa23dc23dc7a 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1093,5 +1093,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1137,5 +1137,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); diff --git a/patches/api/0031-Add-back-player-spawned-endermite-API.patch b/patches/api/0029-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/api/0031-Add-back-player-spawned-endermite-API.patch rename to patches/api/0029-Add-back-player-spawned-endermite-API.patch diff --git a/patches/api/0032-Fix-default-permission-system.patch b/patches/api/0030-Fix-default-permission-system.patch similarity index 100% rename from patches/api/0032-Fix-default-permission-system.patch rename to patches/api/0030-Fix-default-permission-system.patch diff --git a/patches/api/0033-Summoner-API.patch b/patches/api/0031-Summoner-API.patch similarity index 100% rename from patches/api/0033-Summoner-API.patch rename to patches/api/0031-Summoner-API.patch diff --git a/patches/api/0034-Clean-up-version-command-output.patch b/patches/api/0032-Clean-up-version-command-output.patch similarity index 100% rename from patches/api/0034-Clean-up-version-command-output.patch rename to patches/api/0032-Clean-up-version-command-output.patch diff --git a/patches/api/0035-Extended-OfflinePlayer-API.patch b/patches/api/0033-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/api/0035-Extended-OfflinePlayer-API.patch rename to patches/api/0033-Extended-OfflinePlayer-API.patch diff --git a/patches/api/0036-Added-the-ability-to-add-combustible-items.patch b/patches/api/0034-Added-the-ability-to-add-combustible-items.patch similarity index 91% rename from patches/api/0036-Added-the-ability-to-add-combustible-items.patch rename to patches/api/0034-Added-the-ability-to-add-combustible-items.patch index 080f2a0cd..9fc989cc6 100644 --- a/patches/api/0036-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0034-Added-the-ability-to-add-combustible-items.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index b948c38f32f94afa1708820dbbda9c7f4f9c685c..4127ae56afb05196ff46a5313e9d141adc27802b 100644 +index e008983503a4ae45e9dd7f7858291dc4d3746520..4d375b95459698284f1c27eefe8adc29fc0e7871 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -2851,5 +2851,24 @@ public final class Bukkit { @@ -34,7 +34,7 @@ index b948c38f32f94afa1708820dbbda9c7f4f9c685c..4127ae56afb05196ff46a5313e9d141a // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index f87583244ba9ea07ffd2a438ea32f0328782dbf3..6795f2c0c1e974c4fe3181cd6838a68f7437c846 100644 +index 410aa885770c3f8be73277e90c4de6409b926f77..9217a021cd6e54fda334f637a0bfbbdbc7ad14b0 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2500,5 +2500,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/patches/api/0037-Potion-NamespacedKey.patch b/patches/api/0035-Potion-NamespacedKey.patch similarity index 100% rename from patches/api/0037-Potion-NamespacedKey.patch rename to patches/api/0035-Potion-NamespacedKey.patch diff --git a/patches/api/0038-Grindstone-API.patch b/patches/api/0036-Grindstone-API.patch similarity index 100% rename from patches/api/0038-Grindstone-API.patch rename to patches/api/0036-Grindstone-API.patch diff --git a/patches/api/0039-Shears-can-have-looting-enchantment.patch b/patches/api/0037-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0039-Shears-can-have-looting-enchantment.patch rename to patches/api/0037-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0040-Lobotomize-stuck-villagers.patch b/patches/api/0038-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0040-Lobotomize-stuck-villagers.patch rename to patches/api/0038-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0041-Add-local-difficulty-api.patch b/patches/api/0039-Add-local-difficulty-api.patch similarity index 100% rename from patches/api/0041-Add-local-difficulty-api.patch rename to patches/api/0039-Add-local-difficulty-api.patch diff --git a/patches/api/0042-Remove-Timings.patch b/patches/api/0040-Remove-Timings.patch similarity index 100% rename from patches/api/0042-Remove-Timings.patch rename to patches/api/0040-Remove-Timings.patch diff --git a/patches/api/0043-Add-Bee-API.patch b/patches/api/0041-Add-Bee-API.patch similarity index 100% rename from patches/api/0043-Add-Bee-API.patch rename to patches/api/0041-Add-Bee-API.patch diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0042-Debug-Marker-API.patch similarity index 99% rename from patches/api/0044-Debug-Marker-API.patch rename to patches/api/0042-Debug-Marker-API.patch index 1ff69f141..c2f5e66f9 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0042-Debug-Marker-API.patch @@ -260,10 +260,10 @@ index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5d /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 187bd4933d7a2bf0469ffc73e71841648cc8a5bc..3527cd8eb9e76aed7ba2226f784e9143ba2a8f6f 100644 +index e3a6289547ff378fecf97b20ab08c8b36fe9cfa6..617d1ff6cfe1113668f4f91b5ed83016ad48c3f7 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3394,5 +3394,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3442,5 +3442,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0043-Add-death-screen-API.patch similarity index 89% rename from patches/api/0045-Add-death-screen-API.patch rename to patches/api/0043-Add-death-screen-API.patch index cf240977a..97bd3725e 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0043-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 3527cd8eb9e76aed7ba2226f784e9143ba2a8f6f..eea83040ff15ea7c9bf97a45f5557294b309b4c8 100644 +index 617d1ff6cfe1113668f4f91b5ed83016ad48c3f7..498f9d8bbda8ab248ec520d850c9169da4b00327 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3464,5 +3464,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3512,5 +3512,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/api/0046-Add-item-packet-serialize-event.patch b/patches/api/0044-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/api/0046-Add-item-packet-serialize-event.patch rename to patches/api/0044-Add-item-packet-serialize-event.patch diff --git a/patches/api/0047-Language-API.patch b/patches/api/0045-Language-API.patch similarity index 100% rename from patches/api/0047-Language-API.patch rename to patches/api/0045-Language-API.patch diff --git a/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0046-Add-log-suppression-for-LibraryLoader.patch similarity index 96% rename from patches/api/0048-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0046-Add-log-suppression-for-LibraryLoader.patch index 95e4cd2ac..4948f9b89 100644 --- a/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/api/0046-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -index 301e82369603f3dd6e6c1bd380da4bacacd7ef6c..0c6ca7588fb3d6b6497ddf032fe75e5c6c9719e5 100644 +index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..f1e58639213be0c43cd2ff090b625e7d0a67e8be 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -55,6 +55,7 @@ public final class JavaPluginLoader implements PluginLoader { diff --git a/patches/api/0049-Fire-Immunity-API.patch b/patches/api/0047-Fire-Immunity-API.patch similarity index 84% rename from patches/api/0049-Fire-Immunity-API.patch rename to patches/api/0047-Fire-Immunity-API.patch index 44dfcb936..837db4fbd 100644 --- a/patches/api/0049-Fire-Immunity-API.patch +++ b/patches/api/0047-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 752690574e1d3f47a3cf80fe5da2ba4107386ffd..ed9627dff9a33524da546c46e1d1be71ae1d1e0c 100644 +index c20f29e1ddfd1d73df19f6d6f730fa23dc23dc7a..42b8de355855baecd0a435314909116c210d002d 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1100,5 +1100,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1144,5 +1144,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/api/0050-Added-goat-ram-event.patch b/patches/api/0048-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0050-Added-goat-ram-event.patch rename to patches/api/0048-Added-goat-ram-event.patch diff --git a/patches/api/0051-Add-PreExplodeEvents.patch b/patches/api/0049-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0051-Add-PreExplodeEvents.patch rename to patches/api/0049-Add-PreExplodeEvents.patch diff --git a/patches/api/0052-Stored-Bee-API.patch b/patches/api/0050-Stored-Bee-API.patch similarity index 100% rename from patches/api/0052-Stored-Bee-API.patch rename to patches/api/0050-Stored-Bee-API.patch diff --git a/patches/api/0053-Explorer-Map-API.patch b/patches/api/0051-Explorer-Map-API.patch similarity index 100% rename from patches/api/0053-Explorer-Map-API.patch rename to patches/api/0051-Explorer-Map-API.patch diff --git a/patches/api/0054-Add-hover-lines-API.patch b/patches/api/0052-Add-hover-lines-API.patch similarity index 95% rename from patches/api/0054-Add-hover-lines-API.patch rename to patches/api/0052-Add-hover-lines-API.patch index 3ed8a7703..f800a2e9e 100644 --- a/patches/api/0054-Add-hover-lines-API.patch +++ b/patches/api/0052-Add-hover-lines-API.patch @@ -24,7 +24,7 @@ index 0217f98a74140bbae454d467de27c12b6060ca75..fba5b867ea9de36b45ef25c2a93fc436 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index c733206b769d7a55076d863757fcac1a129033b7..ed168cba3692f55ac976c6ef31525e83ae36f5f9 100644 +index eb78ddfa5a83a45cb6103415aa679e73b3d6a13f..9ecfc504df089a74add168cd5a8376d7d6b8ea0e 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1638,5 +1638,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0001-Rebrand.patch similarity index 95% rename from patches/server/0003-Rebrand.patch rename to patches/server/0001-Rebrand.patch index 13c65af11..9c749f332 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,29 +5,27 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 6dd0015c4a8afb9cd36e79f5745f0afd63c6e524..0eeca0c0dfbb62b7551cda95576932d3f14e6de2 100644 +index 170a915098f09ace226648da342a04c5c7583d11..fb1837bd5d0cb1970a6c236e72654a1c09502c48 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { - val alsoShade: Configuration by configurations.creating +@@ -27,8 +27,12 @@ repositories { dependencies { -- implementation(project(":pufferfish-api")) // Pufferfish // Paper -- // Pufferfish start -- implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") { + extraRuntime(platform("net.kyori:adventure-bom:4.15.0-SNAPSHOT")) +- implementation(project(":paper-api")) +- implementation(project(":paper-mojangapi")) + // Purpur start + implementation(project(":purpur-api")) + implementation("io.papermc.paper:paper-mojangapi:${project.version}") { - exclude("io.papermc.paper", "paper-api") - } -- // Pufferfish end ++ exclude("io.papermc.paper", "paper-api") ++ } + // Purpur end // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -62,6 +62,10 @@ dependencies { - } - // Pufferfish end +@@ -65,6 +69,10 @@ dependencies { + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur @@ -36,16 +34,16 @@ index 6dd0015c4a8afb9cd36e79f5745f0afd63c6e524..0eeca0c0dfbb62b7551cda95576932d3 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -89,7 +93,7 @@ tasks.jar { +@@ -84,7 +92,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Pufferfish-$implementationVersion", // Pufferfish -+ "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur +- "Implementation-Version" to "git-Paper-$implementationVersion", ++ "Implementation-Version" to "git-Purpur-$implementationVersion", // Purpur "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask( +@@ -168,7 +176,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -162,10 +160,10 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..3cb56595822799926a8141e60a42f5d1 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae2834b0918a9 100644 +index e047dee632022abfe05865d1e71838be8d5d053a..888e31a0454888c36cb27602a28619f1f6dbf2c0 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java -@@ -123,6 +123,10 @@ public class CrashReport { +@@ -125,6 +125,10 @@ public class CrashReport { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append("---- Minecraft Crash Report ----\n"); @@ -177,10 +175,10 @@ index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae283 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90..ef14f47cec00ffaf1ac683964d3d1831dae9bcdb 100644 +index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..88b79cd90e936e1c48b84d7f762f425e1ae09259 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -910,7 +910,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! -+ return "Purpur"; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! +- return "Paper"; // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! ++ return "Purpur"; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 697e74b4d966f7472f0cb3dcaca928cdde4714d7..41375e6fcf209f653bded0da27e1b3a993d2ef8e 100644 +index 782bb8ca67517dde5dba8f0a133eb8699353dd01..faeed34e37be45e9d18ab0293535cade59fda440 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper +@@ -270,7 +270,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { -- private final String serverName = "Pufferfish"; // Paper // Pufferfish -+ private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur +- private final String serverName = "Paper"; // Paper ++ private final String serverName = "Purpur"; // Paper // Purpur private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); @@ -239,10 +237,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 1992bd985d1beae77b88d71c5fa551a277943fdb..831e71479ed0636ae8fd96adc732c23edf7d0e88 100644 +index ba2cd9c4cdbd5ddab1300320d7e0ede4d4b7a31a..3373df9e09bd29096c4b9c039c06256e4ecf4154 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -917,7 +917,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return EntityCategory.WATER; } @@ -252,7 +250,7 @@ index 1992bd985d1beae77b88d71c5fa551a277943fdb..831e71479ed0636ae8fd96adc732c23e @Override diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 3ceb5d83be20183da907915f70ba9e64369373a9..e5b8466fb2f8c98bdc81839d9c01cece42c39081 100644 +index 700932b65e4fda560d684b0aa079bcee3923f73e..d1b1bc4845fc9519fc892e962c3e7d89da3f14de 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -501,7 +501,7 @@ public class CraftScheduler implements BukkitScheduler { @@ -265,31 +263,32 @@ index 3ceb5d83be20183da907915f70ba9e64369373a9..e5b8466fb2f8c98bdc81839d9c01cece // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 397c10f64db3a4d7296fe18585b56851bc3a1f01..1e81801e5701b08feedd840c1e1663ae26507c16 100644 +index ec2396f0e5d62b10450eaa7239a8c5479638b3c3..72bb60535d2f35435ae8b96faced60a1b8d70db6 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -485,7 +485,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -482,7 +482,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { -- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish -+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur +- return new com.destroystokyo.paper.PaperVersionFetcher(); ++ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur - TODO: Pufferfish } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 +index 774556a62eb240da42e84db4502e2ed43495be17..50e78e5220bd8cb48e585866b2cb25f6688ed9e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -@@ -11,7 +11,7 @@ public final class Versioning { +@@ -11,8 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; -- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish -+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur - Properties properties = new Properties(); +- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); +- Properties properties = new Properties(); ++ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Purpur if (stream != null) { + try { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java index 40dcdf6885e99b26283a9ea2bd4d4bf6ec358e71..5fc8cc40ab627eba0b2110c73d31af213a935733 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch similarity index 94% rename from patches/server/0004-Purpur-config-files.patch rename to patches/server/0002-Purpur-config-files.patch index 1cfef9db4..a8b1c2158 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 +index 4b002e8b75d117b726b0de274a76d3596fce015b..9713263c3bd34ab8a3bfc0a8797ba0b1b88ed733 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -593,7 +593,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { -- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish -+ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur +- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); ++ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); @@ -26,21 +26,21 @@ index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f - final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion(); - if (implVersion != null) { - final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1); -- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish +- paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); - } else { - paperVersion = "unknown"; - } -- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish +- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion)); + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur + metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66ab9d4a70 100644 +index 14f4c0a93372a58cf36dc95265b5e210ea1605e5..ff27787313a3337e29eac6f623b08f1f333f293c 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -332,6 +332,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -322,6 +322,30 @@ public class CommandSourceStack implements ExecutionCommandSource resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper @@ -112,10 +112,10 @@ index 28fd04794e2a624c5d0a1322b1d6d851f443e3b1..b60ab6c545296c67304019759ab04aa6 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c480343a842 100644 +index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd62bfd8a2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1041,6 +1041,7 @@ public final class CraftServer implements Server { +@@ -1036,6 +1036,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -123,7 +123,7 @@ index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c48 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1056,6 +1057,7 @@ public final class CraftServer implements Server { +@@ -1051,6 +1052,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c48 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1071,6 +1073,7 @@ public final class CraftServer implements Server { +@@ -1066,6 +1068,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -139,7 +139,7 @@ index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c48 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2983,6 +2986,18 @@ public final class CraftServer implements Server { +@@ -3010,6 +3013,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index b06b8137a337a189662601aef4cd57d406f58c36..9637832f475630f07912230e37e04c48 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c737c5d62407337d3db2899cfc01713a058a6467..ed8e01918c7aab189ac9a8e37dbe9ff2b06aaa4d 100644 +index 4b457cbfc56e55e0ae0fee5b69e2e75349702aab..fa38d6dd3a7439de3b2503a90637eabb3e6dd8ec 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -174,6 +174,14 @@ public class Main { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch similarity index 86% rename from patches/server/0005-Purpur-client-support.patch rename to patches/server/0003-Purpur-client-support.patch index 9fc93169b..8600c66b6 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 08980763020a13ab49dc7d637625a4fba56da8c9..c4cef829be6333143ed4af4025ade34a307926f6 100644 +index 8efbbd379244e3ed54d4aba199037cc20ccd096a..86cf69de7a35f1ac8e2c56f988e74832332470d2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -274,6 +274,7 @@ public class ServerPlayer extends Player { - public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper +@@ -281,6 +281,7 @@ public class ServerPlayer extends Player { + public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper public @Nullable String clientBrandName = null; // Paper - Brand name public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event + public boolean purpurClient = false; // Purpur @@ -17,7 +17,7 @@ index 08980763020a13ab49dc7d637625a4fba56da8c9..c4cef829be6333143ed4af4025ade34a // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b601ba6662 100644 +index 77cd2b73e4d499beca16962a6b3d1fefe279cd87..13e064451c4d48e873061b6dea431a6b101de2ee 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -43,10 +43,10 @@ index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b6 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3a792ddc31e76038b84e8f87088c4cd94c349138..df5b588309f181c84336060d3668880b74ea7490 100644 +index ed41decbf0522c516b3608569d5719687105e25b..67bb2541fff19f0a48c7b1289e34749ece632d56 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3303,4 +3303,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3315,4 +3315,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0006-Fix-decompile-errors.patch b/patches/server/0004-Fix-decompile-errors.patch similarity index 94% rename from patches/server/0006-Fix-decompile-errors.patch rename to patches/server/0004-Fix-decompile-errors.patch index 828fc95cc..3157b4565 100644 --- a/patches/server/0006-Fix-decompile-errors.patch +++ b/patches/server/0004-Fix-decompile-errors.patch @@ -44,10 +44,10 @@ index d02ee11066fc4f07ccb110b09b86d895ff90d4f2..e1be4a77fae0b9120781f460079269b8 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index d5654cfe37bd82f1290b280990a8502432491ae1..b49e02ac7b3db9a5b79ce3f106ead19af4e7cfa6 100644 +index 9a2de546dc2af2ad4bf5d32ca6583f0e1f3f70d8..1c7bb504a576568bd275b4f1373208d37d1419e5 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1160,7 +1160,7 @@ public class Blocks { +@@ -1215,7 +1215,7 @@ public class Blocks { } private static Boolean ocelotOrParrot(BlockState state, BlockGetter world, BlockPos pos, EntityType type) { @@ -55,4 +55,4 @@ index d5654cfe37bd82f1290b280990a8502432491ae1..b49e02ac7b3db9a5b79ce3f106ead19a + return type == EntityType.OCELOT || type == EntityType.PARROT; // Purpur - decompile error } - private static BedBlock bed(DyeColor color) { + private static Block bed(DyeColor color) { diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch similarity index 89% rename from patches/server/0007-Component-related-conveniences.patch rename to patches/server/0005-Component-related-conveniences.patch index 073d79e02..e89c2bdd2 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a21b49af3134848f60d03058590505f7a5caaa11..dd84c17cee6c1ac5071fa2fefe70f91a16124b48 100644 +index 86cf69de7a35f1ac8e2c56f988e74832332470d2..b0e698b2532ed6af84ca2dd0d8b1c795921c5823 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1782,6 +1782,26 @@ public class ServerPlayer extends Player { +@@ -1883,6 +1883,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -36,10 +36,10 @@ index a21b49af3134848f60d03058590505f7a5caaa11..dd84c17cee6c1ac5071fa2fefe70f91a public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 33abcf12b4426572b74ca4c813e4392c823494bc..cd6bfaa8dc06c05ab25cbded645a1dbca725838c 100644 +index a35638a92479b90afa89cf201fc45b49c9e767f3..9a7b5c2bae8e3c1788068462d2f60665a8064a77 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1060,6 +1060,20 @@ public abstract class PlayerList { +@@ -1058,6 +1058,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 80c9a523e94704f73e833e2255af6b0bf55da454..62cbb7837d38a815e76b78451f1e8cafab990177 100644 +index 9abe817ae202edaa2d88cd59ae5c7db0b1c634be..37632d0c41149e6269fead808903765f0e59dbcc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4104,6 +4104,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4130,6 +4130,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0006-Ridables.patch similarity index 92% rename from patches/server/0008-Ridables.patch rename to patches/server/0006-Ridables.patch index 9a8c62897..02948550b 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -22,10 +22,10 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ef14f47cec00ffaf1ac683964d3d1831dae9bcdb..be7508a527a55ada0f769588db024f999d0b95f5 100644 +index 88b79cd90e936e1c48b84d7f762f425e1ae09259..81e4b7254e1c3cb714a9c37d941ff1b5d9e758ed 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1531,6 +1531,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,10 +34,10 @@ index ef14f47cec00ffaf1ac683964d3d1831dae9bcdb..be7508a527a55ada0f769588db024f99 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8aab01170fb512d98103935a19e468a145a6bb16..5d20509fd92969ed05f1044290650880fd4a663e 100644 +index f4d53d9bfe5b060158f69b5d9e4533a5b9869eed..35cc427755cccb123a866220bd2a72cdbd723465 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -225,6 +225,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) @@ -46,10 +46,10 @@ index 8aab01170fb512d98103935a19e468a145a6bb16..5d20509fd92969ed05f1044290650880 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index dd84c17cee6c1ac5071fa2fefe70f91a16124b48..7d29ba00128b2c079406eef13c373c4ebf66e2fa 100644 +index b0e698b2532ed6af84ca2dd0d8b1c795921c5823..d5940e560ea890f7f017ff9c37939a485be94540 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -756,6 +756,15 @@ public class ServerPlayer extends Player { +@@ -763,6 +763,15 @@ public class ServerPlayer extends Player { this.trackStartFallingPosition(); this.trackEnteredOrExitedLavaOnVehicle(); this.advancements.flushDirty(this); @@ -66,10 +66,10 @@ index dd84c17cee6c1ac5071fa2fefe70f91a16124b48..7d29ba00128b2c079406eef13c373c4e public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6cc9271ba058f4af759eae34e2f6e9f892b4f6da..925ecb3d737f2e0e58bfdf17e2e48334188dce28 100644 +index 9a94249834f8b0b8d3f6aeaf0c859ba875079250..0ade0256c3a227ea6a2971b2c5889b9935d52259 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2714,6 +2714,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2720,6 +2720,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,10 +79,10 @@ index 6cc9271ba058f4af759eae34e2f6e9f892b4f6da..925ecb3d737f2e0e58bfdf17e2e48334 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 62cbb7837d38a815e76b78451f1e8cafab990177..29773f20569cfc9a9ba999617ea2875d3cb96e9a 100644 +index 37632d0c41149e6269fead808903765f0e59dbcc..856803084d30cc4cbdb53bd6db15e7db5ea16154 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index 62cbb7837d38a815e76b78451f1e8cafab990177..29773f20569cfc9a9ba999617ea2875d private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2984,6 +2984,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3001,6 +3001,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 62cbb7837d38a815e76b78451f1e8cafab990177..29773f20569cfc9a9ba999617ea2875d this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3024,6 +3031,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3041,6 +3048,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Spigot end @@ -120,12 +120,11 @@ index 62cbb7837d38a815e76b78451f1e8cafab990177..29773f20569cfc9a9ba999617ea2875d if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4952,4 +4967,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4930,4 +4945,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end -+ -+ // Purpur start ++ urpur start + @Nullable + private Player rider = null; + @@ -191,7 +190,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda525c77b846 100644 +index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e0839a927915 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -224,7 +223,7 @@ index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda52 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2730,7 +2731,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2701,7 +2702,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper @@ -233,7 +232,7 @@ index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda52 Vec3 vec3d = this.getDeltaMovement(); // Paper start long time = System.nanoTime(); -@@ -3503,8 +3504,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3479,8 +3480,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start @@ -246,7 +245,7 @@ index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda52 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3514,6 +3517,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3490,6 +3493,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -269,10 +268,10 @@ index 3b9ee3324a084271862ed790e8fc0d469e877ec1..4b7b9737e9ebc0785116d46dafafda52 // Paper end if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 944c22ea172796492a683d2f2bddfb0938d7a8c9..050bb38f212fd2ec9b82ac5955496415474beb3b 100644 +index 5af48151159135b869ec4753bbcf79dd257c1570..1fc2b2cee28db5abb8ab33df6fd76de035aef688 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -147,8 +147,8 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -148,8 +148,8 @@ public abstract class Mob extends LivingEntity implements Targeting { this.restrictRadius = -1.0F; this.goalSelector = new GoalSelector(world.getProfilerSupplier()); this.targetSelector = new GoalSelector(world.getProfilerSupplier()); @@ -283,7 +282,7 @@ index 944c22ea172796492a683d2f2bddfb0938d7a8c9..050bb38f212fd2ec9b82ac5955496415 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1389,7 +1389,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1384,7 +1384,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -292,7 +291,7 @@ index 944c22ea172796492a683d2f2bddfb0938d7a8c9..050bb38f212fd2ec9b82ac5955496415 } public boolean isWithinRestriction() { -@@ -1773,4 +1773,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1769,4 +1769,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -350,13 +349,13 @@ index 944c22ea172796492a683d2f2bddfb0938d7a8c9..050bb38f212fd2ec9b82ac5955496415 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd44506275206bc9a2d 100644 +index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd21844a12 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -24,14 +24,21 @@ public class AttributeMap { +@@ -23,13 +23,20 @@ public class AttributeMap { + private final Map attributes = Maps.newHashMap(); private final Set dirtyAttributes = Sets.newHashSet(); private final AttributeSupplier supplier; - private final java.util.function.Function createInstance; // Pufferfish + private final net.minecraft.world.entity.LivingEntity entity; // Purpur public AttributeMap(AttributeSupplier defaultAttributes) { @@ -367,7 +366,6 @@ index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd445062752 + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; - this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { @@ -376,7 +374,7 @@ index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd445062752 this.dirtyAttributes.add(instance); } -@@ -43,7 +50,7 @@ public class AttributeMap { +@@ -41,7 +48,7 @@ public class AttributeMap { public Collection getSyncableAttributes() { return this.attributes.values().stream().filter((attribute) -> { @@ -386,96 +384,97 @@ index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd445062752 } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 8a720f9ae81d7ea856e28cb27a66adcf04bcb0eb..e0b70d9732a2b7d96999b7e4a497ffa1d8cf86a7 100644 +index 0a13e076b42bc8c0e7d4962379c207dea89f0435..2d7afaa67c762107717486cb9dbbf6f8f967396c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -80,7 +80,88 @@ import org.slf4j.Logger; +@@ -81,7 +81,89 @@ import org.slf4j.Logger; public class DefaultAttributes { private static final Logger LOGGER = LogUtils.getLogger(); -- private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ALLAY, Allay.createAttributes().build()).put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAMEL, Camel.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.FROG, Frog.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNIFFER, Sniffer.createAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TADPOLE, Tadpole.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WARDEN, Warden.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); +- private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ALLAY, Allay.createAttributes().build()).put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAMEL, Camel.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.BREEZE, Breeze.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.FROG, Frog.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNIFFER, Sniffer.createAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TADPOLE, Tadpole.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WARDEN, Warden.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); + private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder() -+ .put(EntityType.ALLAY, Allay.createAttributes().build()) -+ .put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()) -+ .put(EntityType.AXOLOTL, Axolotl.createAttributes().build()) -+ .put(EntityType.BAT, Bat.createAttributes().build()) -+ .put(EntityType.BEE, Bee.createAttributes().build()) -+ .put(EntityType.BLAZE, Blaze.createAttributes().build()) -+ .put(EntityType.CAT, Cat.createAttributes().build()) -+ .put(EntityType.CAMEL, Camel.createAttributes().build()) -+ .put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()) -+ .put(EntityType.CHICKEN, Chicken.createAttributes().build()) -+ .put(EntityType.COD, AbstractFish.createAttributes().build()) -+ .put(EntityType.COW, Cow.createAttributes().build()) -+ .put(EntityType.CREEPER, Creeper.createAttributes().build()) -+ .put(EntityType.DOLPHIN, Dolphin.createAttributes().build()) -+ .put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.DROWNED, Zombie.createAttributes().build()) -+ .put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()) -+ .put(EntityType.ENDERMAN, EnderMan.createAttributes().build()) -+ .put(EntityType.ENDERMITE, Endermite.createAttributes().build()) -+ .put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()) -+ .put(EntityType.EVOKER, Evoker.createAttributes().build()) -+ .put(EntityType.FOX, Fox.createAttributes().build()) -+ .put(EntityType.FROG, Frog.createAttributes().build()) -+ .put(EntityType.GHAST, Ghast.createAttributes().build()) -+ .put(EntityType.GIANT, Giant.createAttributes().build()) -+ .put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()) -+ .put(EntityType.GOAT, Goat.createAttributes().build()) -+ .put(EntityType.GUARDIAN, Guardian.createAttributes().build()) -+ .put(EntityType.HOGLIN, Hoglin.createAttributes().build()) -+ .put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()) -+ .put(EntityType.HUSK, Zombie.createAttributes().build()) -+ .put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()) -+ .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) -+ .put(EntityType.LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) -+ .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) -+ .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.OCELOT, Ocelot.createAttributes().build()) -+ .put(EntityType.PANDA, Panda.createAttributes().build()) -+ .put(EntityType.PARROT, Parrot.createAttributes().build()) -+ .put(EntityType.PHANTOM, net.minecraft.world.entity.monster.Phantom.createAttributes().build()) // Purpur -+ .put(EntityType.PIG, Pig.createAttributes().build()) -+ .put(EntityType.PIGLIN, Piglin.createAttributes().build()) -+ .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) -+ .put(EntityType.PILLAGER, Pillager.createAttributes().build()) -+ .put(EntityType.PLAYER, Player.createAttributes().build()) -+ .put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()) -+ .put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.RABBIT, Rabbit.createAttributes().build()) -+ .put(EntityType.RAVAGER, Ravager.createAttributes().build()) -+ .put(EntityType.SALMON, AbstractFish.createAttributes().build()) -+ .put(EntityType.SHEEP, Sheep.createAttributes().build()) -+ .put(EntityType.SHULKER, Shulker.createAttributes().build()) -+ .put(EntityType.SILVERFISH, Silverfish.createAttributes().build()) -+ .put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()) -+ .put(EntityType.SLIME, Monster.createMonsterAttributes().build()) -+ .put(EntityType.SNIFFER, Sniffer.createAttributes().build()) -+ .put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()) -+ .put(EntityType.SPIDER, Spider.createAttributes().build()) -+ .put(EntityType.SQUID, Squid.createAttributes().build()) -+ .put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.STRIDER, Strider.createAttributes().build()) -+ .put(EntityType.TADPOLE, Tadpole.createAttributes().build()) -+ .put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.TURTLE, Turtle.createAttributes().build()) -+ .put(EntityType.VEX, Vex.createAttributes().build()) -+ .put(EntityType.VILLAGER, Villager.createAttributes().build()) -+ .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) -+ .put(EntityType.WARDEN, Warden.createAttributes().build()) -+ .put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()) -+ .put(EntityType.WITCH, Witch.createAttributes().build()) -+ .put(EntityType.WITHER, WitherBoss.createAttributes().build()) -+ .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.WOLF, Wolf.createAttributes().build()) -+ .put(EntityType.ZOGLIN, Zoglin.createAttributes().build()) -+ .put(EntityType.ZOMBIE, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()) -+ .put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); ++ .put(EntityType.ALLAY, Allay.createAttributes().build()) ++ .put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()) ++ .put(EntityType.AXOLOTL, Axolotl.createAttributes().build()) ++ .put(EntityType.BAT, Bat.createAttributes().build()) ++ .put(EntityType.BEE, Bee.createAttributes().build()) ++ .put(EntityType.BLAZE, Blaze.createAttributes().build()) ++ .put(EntityType.CAT, Cat.createAttributes().build()) ++ .put(EntityType.CAMEL, Camel.createAttributes().build()) ++ .put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()) ++ .put(EntityType.CHICKEN, Chicken.createAttributes().build()) ++ .put(EntityType.COD, AbstractFish.createAttributes().build()) ++ .put(EntityType.COW, Cow.createAttributes().build()) ++ .put(EntityType.CREEPER, Creeper.createAttributes().build()) ++ .put(EntityType.DOLPHIN, Dolphin.createAttributes().build()) ++ .put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) ++ .put(EntityType.DROWNED, Zombie.createAttributes().build()) ++ .put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()) ++ .put(EntityType.ENDERMAN, EnderMan.createAttributes().build()) ++ .put(EntityType.ENDERMITE, Endermite.createAttributes().build()) ++ .put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()) ++ .put(EntityType.EVOKER, Evoker.createAttributes().build()) ++ .put(EntityType.BREEZE, Breeze.createAttributes().build()) ++ .put(EntityType.FOX, Fox.createAttributes().build()) ++ .put(EntityType.FROG, Frog.createAttributes().build()) ++ .put(EntityType.GHAST, Ghast.createAttributes().build()) ++ .put(EntityType.GIANT, Giant.createAttributes().build()) ++ .put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()) ++ .put(EntityType.GOAT, Goat.createAttributes().build()) ++ .put(EntityType.GUARDIAN, Guardian.createAttributes().build()) ++ .put(EntityType.HOGLIN, Hoglin.createAttributes().build()) ++ .put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()) ++ .put(EntityType.HUSK, Zombie.createAttributes().build()) ++ .put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()) ++ .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) ++ .put(EntityType.LLAMA, Llama.createAttributes().build()) ++ .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) ++ .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) ++ .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) ++ .put(EntityType.OCELOT, Ocelot.createAttributes().build()) ++ .put(EntityType.PANDA, Panda.createAttributes().build()) ++ .put(EntityType.PARROT, Parrot.createAttributes().build()) ++ .put(EntityType.PHANTOM, net.minecraft.world.entity.monster.Phantom.createAttributes().build()) // Purpur ++ .put(EntityType.PIG, Pig.createAttributes().build()) ++ .put(EntityType.PIGLIN, Piglin.createAttributes().build()) ++ .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) ++ .put(EntityType.PILLAGER, Pillager.createAttributes().build()) ++ .put(EntityType.PLAYER, Player.createAttributes().build()) ++ .put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()) ++ .put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()) ++ .put(EntityType.RABBIT, Rabbit.createAttributes().build()) ++ .put(EntityType.RAVAGER, Ravager.createAttributes().build()) ++ .put(EntityType.SALMON, AbstractFish.createAttributes().build()) ++ .put(EntityType.SHEEP, Sheep.createAttributes().build()) ++ .put(EntityType.SHULKER, Shulker.createAttributes().build()) ++ .put(EntityType.SILVERFISH, Silverfish.createAttributes().build()) ++ .put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()) ++ .put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()) ++ .put(EntityType.SLIME, Monster.createMonsterAttributes().build()) ++ .put(EntityType.SNIFFER, Sniffer.createAttributes().build()) ++ .put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()) ++ .put(EntityType.SPIDER, Spider.createAttributes().build()) ++ .put(EntityType.SQUID, Squid.createAttributes().build()) ++ .put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()) ++ .put(EntityType.STRIDER, Strider.createAttributes().build()) ++ .put(EntityType.TADPOLE, Tadpole.createAttributes().build()) ++ .put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()) ++ .put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()) ++ .put(EntityType.TURTLE, Turtle.createAttributes().build()) ++ .put(EntityType.VEX, Vex.createAttributes().build()) ++ .put(EntityType.VILLAGER, Villager.createAttributes().build()) ++ .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) ++ .put(EntityType.WARDEN, Warden.createAttributes().build()) ++ .put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()) ++ .put(EntityType.WITCH, Witch.createAttributes().build()) ++ .put(EntityType.WITHER, WitherBoss.createAttributes().build()) ++ .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) ++ .put(EntityType.WOLF, Wolf.createAttributes().build()) ++ .put(EntityType.ZOGLIN, Zoglin.createAttributes().build()) ++ .put(EntityType.ZOMBIE, Zombie.createAttributes().build()) ++ .put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()) ++ .put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()) ++ .put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); public static AttributeSupplier getSupplier(EntityType type) { return SUPPLIERS.get(type); @@ -527,10 +526,10 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5 --this.lookAtCooldown; this.getYRotD().ifPresent((yaw) -> { diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5bbd38a03 100644 +index 6b614818b14ecfc8fc82b523eeb7e21fdf9bf1ba..74b28d8a27b702896906603e7a39b91c79561ac5 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions; +@@ -19,6 +19,7 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobSpawnType; @@ -538,7 +537,7 @@ index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5 import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -43,12 +44,59 @@ public class Bat extends AmbientCreature { +@@ -46,12 +47,59 @@ public class Bat extends AmbientCreature { public Bat(EntityType type, Level world) { super(type, world); @@ -597,8 +596,8 @@ index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5 + @Override public boolean isFlapping() { - return !this.isResting() && this.tickCount % Bat.TICKS_PER_FLAP == 0; -@@ -98,7 +146,7 @@ public class Bat extends AmbientCreature { + return !this.isResting() && (float) this.tickCount % 10.0F == 0.0F; +@@ -101,7 +149,7 @@ public class Bat extends AmbientCreature { protected void pushEntities() {} public static AttributeSupplier.Builder createAttributes() { @@ -607,7 +606,7 @@ index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5 } public boolean isResting() { -@@ -130,6 +178,14 @@ public class Bat extends AmbientCreature { +@@ -134,6 +182,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep() { @@ -679,7 +678,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a double d = this.wantedX - this.fish.getX(); double e = this.wantedY - this.fish.getY(); 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 9a7956befc346e1b58f064213800fd099a052fc6..ef056d4431388a49b24f63524ee246e506d80540 100644 +index a87a34b0c4c8e5d0cf079025c230b1434c919b54..8f906101afa436b891f4a751b184d6eb89668948 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -43,6 +43,7 @@ import net.minecraft.world.entity.EntityType; @@ -780,7 +779,7 @@ index 9a7956befc346e1b58f064213800fd099a052fc6..ef056d4431388a49b24f63524ee246e5 this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -881,16 +932,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -888,16 +939,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -965,7 +964,7 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb // CraftBukkit end 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 c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599e107b5e1 100644 +index e555fd8ca61e1ce7a52ecd475cc3ea11dedcab08..e818cf94d0a7def1f0abc8519e3b8ff4e7918aef 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal { @@ -1052,7 +1051,7 @@ index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599 @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -164,6 +232,7 @@ public class Dolphin extends WaterAnimal { +@@ -159,6 +227,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -1060,7 +1059,7 @@ index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -174,6 +243,7 @@ public class Dolphin extends WaterAnimal { +@@ -169,6 +238,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -1068,7 +1067,7 @@ index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -225,7 +295,7 @@ public class Dolphin extends WaterAnimal { +@@ -220,7 +290,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -1077,7 +1076,7 @@ index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599 } @Override -@@ -260,6 +330,11 @@ public class Dolphin extends WaterAnimal { +@@ -255,6 +325,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1090,7 +1089,7 @@ index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 9e2af80c6a87f5849710266149cbca8cabfad4f8..b5f1d79787a7dbc8fddaa47fdeec1b224b409d19 100644 +index d17c69a857f083350cc9e9ec2b5dbe0a1482c85f..86c7b7d3c340372a5c33f8a848a274240c0e8554 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -144,6 +144,44 @@ public class Fox extends Animal implements VariantHolder { @@ -1441,10 +1440,10 @@ index 17e42c49fe6f1696a0b0b4b2537cabfe565692e5..61af090813936bac334a487c21e9e67f } } 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 397264d31992fd43bd57736c25693ae001330b6d..a3cb82e65ea344de1889762f638e72fcf0a44714 100644 +index 4c34edc55fa0e136ccf49a3aef001f413274dfac..521ce86afafe329de97c0ef8e95fb503c999edda 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -130,12 +130,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, Level world) { super(type, world); @@ -1514,7 +1513,7 @@ index 397264d31992fd43bd57736c25693ae001330b6d..a3cb82e65ea344de1889762f638e72fc @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -154,8 +210,10 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); -@@ -225,7 +260,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -224,6 +259,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override protected void customServerAiStep() { this.level().getProfiler().push("allayBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index b4793b88688bd568a428aa520e880f0038de45a7..d1dd2cda473bb2294dc10c66c13eac8591ea4d5b 100644 +index 387006271c246362b0df1bfcadca7b7096660003..12fc57798dae50ffdd6118202309c872ab6b332d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; -@@ -283,8 +300,7 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { @@ -2365,16 +2367,15 @@ index c8e3d47b3f2dc919cca8ad397095437f1da6c762..3098f90ef97f69dbaf482ce0acd0c0c7 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -168,7 +217,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -162,6 +211,7 @@ public class Frog extends Animal implements VariantHolder { @Override protected void customServerAiStep() { this.level().getProfiler().push("frogBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); -@@ -354,7 +403,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -347,7 +397,7 @@ public class Frog extends Animal implements VariantHolder { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2384,7 +2385,7 @@ index c8e3d47b3f2dc919cca8ad397095437f1da6c762..3098f90ef97f69dbaf482ce0acd0c0c7 super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..af8438ae8c805d3276ef2d82eb39b08880fcc8a1 100644 +index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..e46475c2d44923167da7c654cb8af6b6278c7149 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish { @@ -2439,17 +2440,17 @@ index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..af8438ae8c805d3276ef2d82eb39b088 @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); -@@ -81,7 +118,7 @@ public class Tadpole extends AbstractFish { +@@ -80,7 +117,7 @@ public class Tadpole extends AbstractFish { @Override protected void customServerAiStep() { this.level().getProfiler().push("tadpoleBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level(), this); +- this.getBrain().tick((ServerLevel) this.level(), this); ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.level().getProfiler().pop(); this.level().getProfiler().push("tadpoleActivityUpdate"); + TadpoleAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b..fef3b7d193d20c4fdd50b38c6a0371f05165a49d 100644 +index 111a244087e24f25ba8524a46a228da10cd9498a..e48ff5d0592f0d91974a49fd7ed1d0ee97172abe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -92,6 +92,23 @@ public class Goat extends Animal { @@ -2476,17 +2477,16 @@ index ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b..fef3b7d193d20c4fdd50b38c6a0371f0 @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -195,7 +212,7 @@ public class Goat extends Animal { +@@ -194,6 +211,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { this.level().getProfiler().push("goatBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index a0628b9d74c29d02bfba583edf7ee6f2cde2cff6..73db73bb5b47f586ce32249458268e4b7cda2003 100644 +index 63bbb5723f587788a65cc1cdac4cea94d96f254b..a96deee06d209dfe86a66b14166671d1dc924e11 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -149,12 +149,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -2647,10 +2647,10 @@ index a6601f70890f90691923c0e6a9f10ea597ccabc2..ae7bcfa608d8bdd2a2320618225294de protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 92d170dd0155a7a5879de4a320cdc03bb66d8887..0318297ed96a640932728d704fa273c4d126e034 100644 +index 41596d9c2e8e6c91f77b1bbe3ccf828708b6b970..6e7b7d2e9ccf67f9df458dc30cfea7242dc212ac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -31,6 +31,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -35,6 +35,13 @@ public class SkeletonHorse extends AbstractHorse { super(type, world); } @@ -2664,7 +2664,7 @@ index 92d170dd0155a7a5879de4a320cdc03bb66d8887..0318297ed96a640932728d704fa273c4 public static AttributeSupplier.Builder createAttributes() { return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } -@@ -42,6 +49,7 @@ public class SkeletonHorse extends AbstractHorse { +@@ -54,6 +61,7 @@ public class SkeletonHorse extends AbstractHorse { @Override protected void addBehaviourGoals() { @@ -2706,10 +2706,10 @@ index b016f53c6644c6411b3a91e09049892131187179..5fc37e2322188e0db12f7679e40b1a3d public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 7f8bbacf00498a2ed6a13760266df993a289c2dd..8c5a083f3db046709a38355343ad7e5ab45779b5 100644 +index 2f7f1f01c5e99266e66f7b8324fc94d2130ea9a4..cc19e9cc90789a5170d1cf3e004a3a452aad8b20 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -22,6 +22,18 @@ public class ZombieHorse extends AbstractHorse { +@@ -26,6 +26,18 @@ public class ZombieHorse extends AbstractHorse { super(type, world); } @@ -2728,7 +2728,7 @@ index 7f8bbacf00498a2ed6a13760266df993a289c2dd..8c5a083f3db046709a38355343ad7e5a public static AttributeSupplier.Builder createAttributes() { return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } -@@ -64,6 +76,7 @@ public class ZombieHorse extends AbstractHorse { +@@ -76,6 +88,7 @@ public class ZombieHorse extends AbstractHorse { @Override protected void addBehaviourGoals() { @@ -2792,7 +2792,7 @@ index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f8507533e 100644 +index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818afb47d20 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2803,11 +2803,10 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -128,7 +129,37 @@ public class EnderDragon extends Mob implements Enemy { - this.noPhysics = true; +@@ -129,6 +130,38 @@ public class EnderDragon extends Mob implements Enemy { this.noCulling = true; this.phaseManager = new EnderDragonPhaseManager(this); -- this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // CraftBukkit + this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY, ParticleTypes.EXPLOSION, ParticleTypes.EXPLOSION_EMITTER, SoundEvents.GENERIC_EXPLODE); // CraftBukkit + + // Purpur start + this.moveControl = new org.purpurmc.purpur.controller.FlyingMoveControllerWASD(this) { @@ -2839,10 +2838,11 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f + @Override + public boolean dismountsUnderwater() { + return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.enderDragonRidableInWater; ++ } } public void setDragonFight(EndDragonFight fight) { -@@ -143,6 +174,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -143,6 +176,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2860,7 +2860,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -204,6 +246,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -204,6 +248,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2898,7 +2898,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -230,6 +303,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -230,6 +305,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2907,7 +2907,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -242,9 +317,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -242,9 +319,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2919,7 +2919,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -278,7 +353,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -278,7 +355,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2928,7 +2928,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -347,7 +422,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -347,7 +424,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -2937,7 +2937,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f this.knockBack(this.level().getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.knockBack(this.level().getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.hurt(this.level().getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -391,7 +466,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -391,7 +468,7 @@ public class EnderDragon extends Mob implements Enemy { } if (!this.level().isClientSide) { @@ -2947,7 +2947,7 @@ index a288180da1996103eb7dc3bb87b4615f86630bb8..5568e97b604925c4e5a57067b032077f this.dragonFight.updateDragon(this); } 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 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258ce0f4b46 100644 +index c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..f0fa5f69985dde27d0e7dd1ed2c96d31137be647 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 @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -3096,7 +3096,7 @@ index 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -256,6 +370,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -3113,7 +3113,7 @@ index 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258 int i; if (this.getInvulnerableTicks() > 0) { -@@ -583,11 +707,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -576,11 +700,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3370,7 +3370,7 @@ index fd1b5a1beea7594fa65decfdcccfa15781fc005b..66b2fdcda53fdfd278994dc16be3e120 } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 991d728db2a3b64316fc2102cf3aee470327a62e..c64c88ddd929d49fcfc6ebc2d0030bc86c8ac337 100644 +index 485d14d71fb26e6e0d00a43da040bf63d696b66a..a72609b6b98ae730aa765b57275d2e32dbbb0eb6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -68,6 +68,23 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -3458,7 +3458,7 @@ index efc1d49c5bfea7d1674b8a9de2c8b617657eda0f..37afe706c5c453003ea96e62f376f45d return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 0d51f435f18f3f9d59a3241a0b7fa1c4af841b72..21e5102761876ceafce87fc824bf8392c354341a 100644 +index bd5996eef2d946e9d7765b6b315bc5951158810e..14c614dfdffd27756298b0105f0dbe139047e251 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -98,9 +98,27 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3506,7 +3506,7 @@ index 0d51f435f18f3f9d59a3241a0b7fa1c4af841b72..21e5102761876ceafce87fc824bf8392 float f = this.getLightLevelDependentMagicValue(); if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -415,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -409,6 +428,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -3553,10 +3553,10 @@ index 66b6c55f72aec7e4e9dfa5417a46ba68dbb16a83..7fb02aab225a45e951ab1e7c6ba1c53f this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 7f0fbca7638bf89465bafed9d106813b86f0149b..a566824074850724023830f6b6fa3728d0b2aa99 100644 +index e67cb165a0d706d38e4970fb3d63f59a29808a76..937e5d59743f1e45e426ac34f301884f1ba6e197 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -50,10 +50,28 @@ public class Evoker extends SpellcasterIllager { +@@ -51,10 +51,28 @@ public class Evoker extends SpellcasterIllager { this.xpReward = 10; } @@ -3585,7 +3585,7 @@ index 7f0fbca7638bf89465bafed9d106813b86f0149b..a566824074850724023830f6b6fa3728 this.goalSelector.addGoal(1, new Evoker.EvokerCastingSpellGoal()); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D)); this.goalSelector.addGoal(4, new Evoker.EvokerSummonSpellGoal()); -@@ -62,6 +80,7 @@ public class Evoker extends SpellcasterIllager { +@@ -63,6 +81,7 @@ public class Evoker extends SpellcasterIllager { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3707,7 +3707,7 @@ index 793c72bb7b86e404926085629121d6cad19a2740..198e3219e8f44eaea8ff1914c6c20efd protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return 10.440001F; diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b7292215e4fba5 100644 +index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3ae9abd44f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -70,15 +70,36 @@ public class Guardian extends Monster { @@ -3755,7 +3755,7 @@ index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b72922 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, new Guardian.GuardianAttackSelector(this))); } -@@ -352,7 +374,7 @@ public class Guardian extends Monster { +@@ -347,7 +369,7 @@ public class Guardian extends Monster { @Override public void travel(Vec3 movementInput) { if (this.isControlledByLocalInstance() && this.isInWater()) { @@ -3764,7 +3764,7 @@ index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b72922 this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); if (!this.isMoving() && this.getTarget() == null) { -@@ -369,7 +391,7 @@ public class Guardian extends Monster { +@@ -364,7 +386,7 @@ public class Guardian extends Monster { return new Vector3f(0.0F, dimensions.height + 0.125F * scaleFactor, 0.0F); } @@ -3773,7 +3773,7 @@ index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b72922 private final Guardian guardian; -@@ -378,8 +400,17 @@ public class Guardian extends Monster { +@@ -373,8 +395,17 @@ public class Guardian extends Monster { this.guardian = guardian; } @@ -3792,7 +3792,7 @@ index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b72922 if (this.operation == MoveControl.Operation.MOVE_TO && !this.guardian.getNavigation().isDone()) { Vec3 vec3d = new Vec3(this.wantedX - this.guardian.getX(), this.wantedY - this.guardian.getY(), this.wantedZ - this.guardian.getZ()); double d0 = vec3d.length(); -@@ -390,7 +421,7 @@ public class Guardian extends Monster { +@@ -385,7 +416,7 @@ public class Guardian extends Monster { this.guardian.setYRot(this.rotlerp(this.guardian.getYRot(), f, 90.0F)); this.guardian.yBodyRot = this.guardian.getYRot(); @@ -3802,7 +3802,7 @@ index 45300f79cba6133d2a2eca706eae03ee3cd973c3..3a2ed35542c775a0712b3bec94b72922 this.guardian.setSpeed(f2); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 8ef1e325d722ca36fc0fc36f1e5287d7002b9fb2..774c15a91b0e988364acc33b8516ef132bcc9464 100644 +index 72b8290bebe8ed9bc3c464b30cfe5d2d664310f5..bfc6dcafe79fa3bb6e450a23e91a772b41488561 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -24,6 +24,23 @@ public class Husk extends Zombie { @@ -3827,7 +3827,7 @@ index 8ef1e325d722ca36fc0fc36f1e5287d7002b9fb2..774c15a91b0e988364acc33b8516ef13 + // Purpur end + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); + return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index 63fce7e3d9f59f36e29bc827a46396d73143bb8b..f83f09f7568c44a1165aac73f7127c5d1af0478f 100644 @@ -4152,7 +4152,7 @@ index 0c11d9bef8f0129c541e30ad057612e881703b24..cfa324c6a75ac83cff4ba87034677d4e this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 8cb6f2d32c4b7a62ec1bdfeb8b661a1387cafe4b..eea85643a2cedb5fd1a08892aea82b96b935e408 100644 +index 06ab07fb5d8d0e2f97325890218a11fef551a0ba..7112789a74f90297277fc6175c912cac60c2ca01 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -97,12 +97,31 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -375,11 +412,12 @@ public class Slime extends Mob implements Enemy { +@@ -378,11 +415,12 @@ public class Slime extends Mob implements Enemy { } @Override @@ -4337,7 +4337,7 @@ index b14979ab7bed34a37fceff5589ecb789bab31318..cf81e9ade3200251ca3a25eb0e5ce7dc } @Nullable -@@ -413,7 +451,7 @@ public class Slime extends Mob implements Enemy { +@@ -416,7 +454,7 @@ public class Slime extends Mob implements Enemy { return super.getDimensions(pose).scale(0.255F * (float) this.getSize()); } @@ -4346,7 +4346,7 @@ index b14979ab7bed34a37fceff5589ecb789bab31318..cf81e9ade3200251ca3a25eb0e5ce7dc private float yRot; private int jumpDelay; -@@ -432,21 +470,33 @@ public class Slime extends Mob implements Enemy { +@@ -435,21 +473,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4383,7 +4383,7 @@ index b14979ab7bed34a37fceff5589ecb789bab31318..cf81e9ade3200251ca3a25eb0e5ce7dc if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -463,7 +513,7 @@ public class Slime extends Mob implements Enemy { +@@ -466,7 +516,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4431,7 +4431,7 @@ index 6f12e342adf1a008709fd9a4fbbbe1da8ec31b83..5a578ab80853f8961afeec2aae76ed52 this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index 118b636a44e4b062e812e433f603b039276337da..137ee6d1aa8ec334009b6fab21b9f30303ace45f 100644 +index 8185cef34b9300561a00f9e62b98f1aa818a3f5a..abd2c1accaa9b03fefab2d8c7f9132540ea9065e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -21,6 +21,23 @@ public class Stray extends AbstractSkeleton { @@ -4504,7 +4504,7 @@ index 61162ecd43dc5e6f7898daecdec49f444e6d869b..bfd69abf24d788b5e539498d56ade57f if (flag && !this.isSilent()) { this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 90e577b1a89b02c38daff2845a63dafe5ed929e1..566fa6f2f26139e457584b6e73fd8609efbf67d7 100644 +index 30ea3f64234fd1fda8dada3c7fb12be0730322a8..841fba3edf697647f59d0485b751c83625cccc83 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -63,6 +63,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -4588,7 +4588,7 @@ index 90e577b1a89b02c38daff2845a63dafe5ed929e1..566fa6f2f26139e457584b6e73fd8609 } @Override -@@ -240,14 +286,14 @@ public class Vex extends Monster implements TraceableEntity { +@@ -251,14 +297,14 @@ public class Vex extends Monster implements TraceableEntity { return new Vector3f(0.0F, dimensions.height - 0.0625F * scaleFactor, 0.0F); } @@ -4605,7 +4605,7 @@ index 90e577b1a89b02c38daff2845a63dafe5ed929e1..566fa6f2f26139e457584b6e73fd8609 if (this.operation == MoveControl.Operation.MOVE_TO) { Vec3 vec3d = new Vec3(this.wantedX - Vex.this.getX(), this.wantedY - Vex.this.getY(), this.wantedZ - Vex.this.getZ()); double d0 = vec3d.length(); -@@ -256,7 +302,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -267,7 +313,7 @@ public class Vex extends Monster implements TraceableEntity { this.operation = MoveControl.Operation.WAIT; Vex.this.setDeltaMovement(Vex.this.getDeltaMovement().scale(0.5D)); } else { @@ -4758,7 +4758,7 @@ index 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86d this.level().getProfiler().pop(); this.updateActivity(); 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 5fdad1600cc7a7c22d1d9a58b6b2dda605521b97..9f58059800ea9fa5e62bf801c60ec8255ab9fc87 100644 +index 753defa8f8b48d004a2a53b2fc322fd9c083d95e..1d5c60c08354bb64a6d671032c2e8b885ec4ca73 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -107,11 +107,30 @@ public class Zombie extends Monster { @@ -4849,7 +4849,7 @@ index 1afe8a8694c1fd0bf43ce3c0c36a83fda9aec141..252d2994fac423ea1fef36bdc7c09778 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index e703320717ff620a19ff76d1c10066117c9895d5..d040198ce528293ed95adcdb17ddf0acbc5a93e0 100644 +index 4257f2282152aee09533c9a2e53018d3e49effa4..e2ff79328877e417193849a81ae5342a5d0701e2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -69,6 +69,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -4876,17 +4876,16 @@ index e703320717ff620a19ff76d1c10066117c9895d5..d040198ce528293ed95adcdb17ddf0ac @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -132,7 +149,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -131,6 +148,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("hoglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index cfdc1650783d6855e0d4f33ec68aab48dbee09f0..f57d7fee1ece00aba9bc7b07dda8398e7acc73c3 100644 +index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..89d2a5b17b7f948fff041d8aec51424b54d3ea49 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -96,6 +96,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -4913,12 +4912,11 @@ index cfdc1650783d6855e0d4f33ec68aab48dbee09f0..f57d7fee1ece00aba9bc7b07dda8398e @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -@@ -304,7 +321,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -303,6 +320,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); PiglinAi.updateActivity(this); @@ -4959,10 +4957,10 @@ index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024 this.level().getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 5e43912708f9074dee1bb351efa737a7e6796fc3..250af1ce7a93c2d2897f35c68fae319c9ba7d55d 100644 +index 9f1b7c629644931074293151ed58a523ca6d488c..53035057b715401381b4f5438c82a61fe6012a7e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -122,8 +122,32 @@ public class Warden extends Monster implements VibrationSystem { +@@ -123,8 +123,32 @@ public class Warden extends Monster implements VibrationSystem { this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); @@ -4995,7 +4993,7 @@ index 5e43912708f9074dee1bb351efa737a7e6796fc3..250af1ce7a93c2d2897f35c68fae319c @Override public Packet getAddEntityPacket() { return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -397,19 +421,16 @@ public class Warden extends Monster implements VibrationSystem { +@@ -396,19 +420,16 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -5019,10 +5017,10 @@ index 5e43912708f9074dee1bb351efa737a7e6796fc3..250af1ce7a93c2d2897f35c68fae319c public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { 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 2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f..b6665acd9d9c799eedfb246354d2a74ba65391f3 100644 +index 11935e5b16324af572b07c5b173708f5a91f8289..42cfa847b29d8f265c7059bf4f93319ce938ee05 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -157,6 +157,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -5051,16 +5049,21 @@ index 2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f..b6665acd9d9c799eedfb246354d2a74b @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -258,7 +280,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -254,7 +276,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + protected void customServerAiStep(final boolean inactive) { // Paper end this.level().getProfiler().push("villagerBrain"); - // Pufferfish start -- if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) { -+ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level(), this); // Paper - } - // Pufferfish end -@@ -318,7 +340,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ // Purpur start ++ // if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish ++ if (!inactive && (getRider() == null || !this.isControllable())) { // Purpur - only use brain if no rider ++ this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ } ++ // Purpur end + this.level().getProfiler().pop(); + if (this.assignProfessionWhenSpawned) { + this.assignProfessionWhenSpawned = false; +@@ -311,7 +338,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -5069,7 +5072,7 @@ index 2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f..b6665acd9d9c799eedfb246354d2a74b } else { boolean flag = this.getOffers().isEmpty(); -@@ -331,8 +353,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -324,8 +351,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { @@ -5120,10 +5123,10 @@ index 833563e237462ccfc1b730b8f5fb35340d0db854..2bed7b373813660139d2322dcd6b83f3 this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 481c3e321cfc0f20bb1c4c6942b8bdbd23c06339..911a44ab096bf835709632921797a749ee0bc638 100644 +index 7f3466340891b4409d1399ebeb2ca865d77841cd..6e37874dc437285b26bd8e4ad3d3af8c39c38aa5 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -199,6 +199,19 @@ public abstract class Player extends LivingEntity { +@@ -194,6 +194,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5160,24 +5163,11 @@ index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5 @Override public void tick() { super.tick(); -diff --git a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java -index cc0a3d9794d05b6bc6ab05f4f2ab8d83134b181d..e1f918d0bd2a70db1aba8bda8717149f58766825 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java -@@ -33,7 +33,7 @@ public final class ProjectileUtil { - return getHitResult(vec32, entity, predicate, vec3, level); - } - -- private static HitResult getHitResult(Vec3 pos, Entity entity, Predicate predicate, Vec3 velocity, Level world) { -+ public static HitResult getHitResult(Vec3 pos, Entity entity, Predicate predicate, Vec3 velocity, Level world) { // Purpur - private -> public - Vec3 vec3 = pos.add(velocity); - HitResult hitResult = world.clip(new ClipContext(pos, vec3, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity)); - if (hitResult.getType() != HitResult.Type.MISS) { 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 06d1bdb9bd124b201c36d284c50d22bf50d3735a..937f57d8af629c4e913d7ccabf6adab15f91d3d0 100644 +index 78dd3365dc4d1265fc2102f740d75a384f5df5c5..4a2331c22a022881d66bcfd4134b0ffe421a0633 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -109,6 +109,12 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -110,6 +110,12 @@ public class WitherSkull extends AbstractHurtingProjectile { } @@ -5191,10 +5181,10 @@ index 06d1bdb9bd124b201c36d284c50d22bf50d3735a..937f57d8af629c4e913d7ccabf6adab1 public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9f843b89dc20b91bf7243facee8486d525e4a1b3..4c5d6e37f7d56436119278bbfad503867d9ccddb 100644 +index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..fed6671e518b2f1601bbf4154195a844fc3b0fd1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1538,4 +1538,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1582,4 +1582,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5223,7 +5213,7 @@ index 9f843b89dc20b91bf7243facee8486d525e4a1b3..4c5d6e37f7d56436119278bbfad50386 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 64ae7cfe765ebe697a2cce1b71751e628d6f1662..1920c154b43711473cdf29aeb881a773b8ce45df 100644 +index e0f80414e01852b6f48c173dc2343ec928147e2f..2d3d10c8cbf8e88f2c897a476041a094b91fa0e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -594,6 +594,15 @@ public class CraftEventFactory { @@ -6392,7 +6382,7 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000000000000000000000000000000000..af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e +index 0000000000000000000000000000000000000000..83dd3f982d5869e26748e6e0d0b38a3c7a08fe02 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -0,0 +1,99 @@ @@ -6437,7 +6427,7 @@ index 0000000000000000000000000000000000000000..af057c1d7fd74f3dd806c5ce7f8b0ad0 + super_tick(); + + Vec3 mot = this.getDeltaMovement(); -+ HitResult hitResult = ProjectileUtil.getHitResult(this.position(), this, this::canHitEntity, mot, level()); ++ HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); + + this.preOnHit(hitResult); + @@ -6497,7 +6487,7 @@ index 0000000000000000000000000000000000000000..af057c1d7fd74f3dd806c5ce7f8b0ad0 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000000000000000000000000000000000..1fd6412e332ea8ee82b19c108e113624e51d764b +index 0000000000000000000000000000000000000000..8fa9b376682d9e8b1971a9f72b918c6dc6872d04 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -0,0 +1,114 @@ @@ -6545,7 +6535,7 @@ index 0000000000000000000000000000000000000000..1fd6412e332ea8ee82b19c108e113624 + super_tick(); + + Vec3 mot = this.getDeltaMovement(); -+ HitResult hitResult = ProjectileUtil.getHitResult(this.position(), this, this::canHitEntity, mot, level()); ++ HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); + + this.preOnHit(hitResult); + diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch similarity index 97% rename from patches/server/0009-Configurable-entity-base-attributes.patch rename to patches/server/0007-Configurable-entity-base-attributes.patch index 6ec0ea05b..a0f1db9c2 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9501683d6a6239e7a053f9a40a377783232bbe8e..8b9efc0477f1d97414d12282bd9d10a7d2ec83a8 100644 +index 856803084d30cc4cbdb53bd6db15e7db5ea16154..4e21ff640261d95f7db1134793fb5e2e91015fd6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; +@@ -157,7 +157,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end - public abstract class Entity implements Nameable, EntityAccess, CommandSource { + public abstract class Entity implements Nameable, EntityAccess, CommandSource, ScoreHolder { - + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur // CraftBukkit start @@ -34,7 +34,7 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 797ef036c3fb7a21fb3a2fbc6a7e307594ea1e11..c23bea8c82c3f4670ce736cb1375e1adb8aa7a05 100644 +index 629cfd889ebfbf79b06fc42d81d7e0839a927915..23a59cf45f89f3d4d9ac98aada26a9027c2485f0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -55,10 +55,10 @@ index 797ef036c3fb7a21fb3a2fbc6a7e307594ea1e11..c23bea8c82c3f4670ce736cb1375e1ad return this.brain; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index e184d2a89a89d4bf77a32a2d610175c5bbd38a03..c283900e6c43fda62428a6e6d8b70e512458e779 100644 +index 74b28d8a27b702896906603e7a39b91c79561ac5..6aec149f450e0559c613dcc272ba48634d0083c0 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -264,6 +264,18 @@ public class Bat extends AmbientCreature { +@@ -268,6 +268,18 @@ public class Bat extends AmbientCreature { } } @@ -78,10 +78,10 @@ index e184d2a89a89d4bf77a32a2d610175c5bbd38a03..c283900e6c43fda62428a6e6d8b70e51 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 ef056d4431388a49b24f63524ee246e506d80540..ee9a12a0285f43535b377e5aea2c3e9e5f64b496 100644 +index 8f906101afa436b891f4a751b184d6eb89668948..9496bf72eb4cda6c2675daabe5ad82e90d12e173 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -471,6 +471,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -478,6 +478,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -158,7 +158,7 @@ index b0cff23aa6f841ad291437964ea5bebb6395de84..f440eabffb1abe4c7370bf7badf6137a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 3f81b9d3c0758d20b3f9421a6bf41599e107b5e1..3db4ded84b8219262b24152f8d29576cdc660c76 100644 +index e818cf94d0a7def1f0abc8519e3b8ff4e7918aef..519e52b303cb9a2d4b1cae84d8436f2057003fcb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -158,6 +158,11 @@ public class Dolphin extends WaterAnimal { @@ -174,7 +174,7 @@ index 3f81b9d3c0758d20b3f9421a6bf41599e107b5e1..3db4ded84b8219262b24152f8d29576c @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index b5f1d79787a7dbc8fddaa47fdeec1b224b409d19..f24434f577d44cef0816ebbdc88de37f449b8e13 100644 +index 86c7b7d3c340372a5c33f8a848a274240c0e8554..21c0431dd8abc06773b6a8ae76908a4227225326 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -182,6 +182,11 @@ public class Fox extends Animal implements VariantHolder { @@ -206,7 +206,7 @@ index 6815d7350a82c6d32f60aa6116466ebd06a920f9..95ff109511c97d603aeaf9e73c49397a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 9a84599457bbd14314e0c4f3fa8bf30bec8da347..e3fe62285ced917de6817916e99483e117008670 100644 +index fdd99d6a9db230f9f68b0a78f41a16e7658c4c16..a2f77d030856056409f2d888e80818eeb6a46ee6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -80,6 +80,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); + return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index f83f09f7568c44a1165aac73f7127c5d1af0478f..0f3e6c19e55a18cde71f3cb84c1e92b433ebcb7f 100644 @@ -1123,7 +1123,7 @@ index cfa324c6a75ac83cff4ba87034677d4e9415189e..28795558000d76fd255faabc79cc4560 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index eea85643a2cedb5fd1a08892aea82b96b935e408..fde2a69f489e12d9c1ccee4522258d2746dcb2e0 100644 +index 7112789a74f90297277fc6175c912cac60c2ca01..5bdeac3ed1bbc70d0620a548f03792e5df212629 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -114,6 +114,11 @@ public class Shulker extends AbstractGolem implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 9f58059800ea9fa5e62bf801c60ec8255ab9fc87..3948e9e56a260ee831fa17b0a4d4240a0bc8d26d 100644 +index 1d5c60c08354bb64a6d671032c2e8b885ec4ca73..f75900e33a08bd6eb13fd480fe62b49346f47bac 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -124,6 +124,11 @@ public class Zombie extends Monster { @@ -1424,7 +1424,7 @@ index 252d2994fac423ea1fef36bdc7c09778203049cb..fa5fa58ee03243054a38475634a6aa67 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index d040198ce528293ed95adcdb17ddf0acbc5a93e0..22788892f7286f3fa6b40059b2bedaf0c6ec5ef3 100644 +index e2ff79328877e417193849a81ae5342a5d0701e2..3a98f2fab709cd83f853f59a5678fdd4b7bd70d3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -86,6 +86,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1440,7 +1440,7 @@ index d040198ce528293ed95adcdb17ddf0acbc5a93e0..22788892f7286f3fa6b40059b2bedaf0 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index f57d7fee1ece00aba9bc7b07dda8398e7acc73c3..d9b1bde3ce458b7e50f7645d07ee578d13006a0a 100644 +index 89d2a5b17b7f948fff041d8aec51424b54d3ea49..7c1e3bdd68433319681c67251c82c6810e69dbcb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -113,6 +113,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1472,10 +1472,10 @@ index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913f return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index b6665acd9d9c799eedfb246354d2a74ba65391f3..75738c810990a544225ef5eb5b94779c746899eb 100644 +index 42cfa847b29d8f265c7059bf4f93319ce938ee05..9351ab40c4bef3febcbb8b2c2b7a4391f56a25ef 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -179,6 +179,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -177,6 +177,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0008-Barrels-and-enderchests-6-rows.patch similarity index 95% rename from patches/server/0010-Barrels-and-enderchests-6-rows.patch rename to patches/server/0008-Barrels-and-enderchests-6-rows.patch index bb6e8dc94..cee086bb8 100644 --- a/patches/server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0008-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cd6bfaa8dc06c05ab25cbded645a1dbca725838c..837ef9a66921f881c5c94aa5f28746d9494d4a98 100644 +index 9a7b5c2bae8e3c1788068462d2f60665a8064a77..accce07f973962899696336c541403b6e5afb18a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1185,6 +1185,27 @@ public abstract class PlayerList { +@@ -1183,6 +1183,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper @@ -37,10 +37,10 @@ index cd6bfaa8dc06c05ab25cbded645a1dbca725838c..837ef9a66921f881c5c94aa5f28746d9 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 911a44ab096bf835709632921797a749ee0bc638..3b4d9069ce877eba1adc330154eec5c178d82256 100644 +index 6e37874dc437285b26bd8e4ad3d3af8c39c38aa5..4495a3e7ea8f307cade39e42ac2aebf85a832537 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { +@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { public boolean affectsSpawning = true; public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper end @@ -108,10 +108,10 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index 7385e91f32f070e86a4e0fd3d214f55d832c7979..7b73de87236a60ce7343c29ec147e1866b448ba3 100644 +index ddca14f1224327a738415fb8b37398d8df0aa9c8..fe3236295790b9e250486835176cae810160c33a 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -85,6 +85,34 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -92,6 +92,34 @@ public class EnderChestBlock extends AbstractChestBlock i EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; playerEnderChestContainer.setActiveChest(enderChestBlockEntity); player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> { @@ -205,10 +205,10 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index b4bd318d61834d70d666577073f18e4c49ded113..a35f60b01b371673023bd23f47a8ddafd38787f2 100644 +index 977b77547f7ba62cef3640cf8d4f1c8e7cded53a..beae43e9b6fe447e7515d878ac175f461968768a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -181,8 +181,19 @@ public class CraftContainer extends AbstractContainerMenu { +@@ -184,8 +184,19 @@ public class CraftContainer extends AbstractContainerMenu { case PLAYER: case CHEST: case ENDER_CHEST: @@ -230,10 +230,10 @@ index b4bd318d61834d70d666577073f18e4c49ded113..a35f60b01b371673023bd23f47a8ddaf case DISPENSER: case DROPPER: diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -index 471ae4458e7ea7c29d7551b32cec98180fbccd4e..23db63c78e9fcf86cd498b3ed36ca50253c2fe97 100644 +index 3b0d3e9a067fccb10122c273aaf658ba240aa716..9b7fd460d3393e07970c66fec7f35a918675cd58 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -@@ -83,7 +83,7 @@ public class CraftInventory implements Inventory { +@@ -84,7 +84,7 @@ public class CraftInventory implements Inventory { @Override public void setContents(ItemStack[] items) { diff --git a/patches/server/0011-Llama-API.patch b/patches/server/0009-Llama-API.patch similarity index 97% rename from patches/server/0011-Llama-API.patch rename to patches/server/0009-Llama-API.patch index 45f03e0d6..7039475bf 100644 --- a/patches/server/0011-Llama-API.patch +++ b/patches/server/0009-Llama-API.patch @@ -25,7 +25,7 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); if (d > 676.0D) { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 278c33b7de4472a746cdbc1faaa68e05592777bc..15a08abe94cb97de1450ff42cfb924a537b9eb5c 100644 +index 8c8c135e9bc707ae8e2aad249302109023f6fea3..7b329fa3af99742d83eca7825e2da3b6e55431ee 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 @@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder -1) { -@@ -390,6 +404,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -393,6 +407,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits. @@ -115,7 +115,7 @@ index 925ecb3d737f2e0e58bfdf17e2e48334188dce28..3fa2997cefdff8957dd71aa87b4c2ee9 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -638,6 +658,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -641,6 +661,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -124,7 +124,7 @@ index 925ecb3d737f2e0e58bfdf17e2e48334188dce28..3fa2997cefdff8957dd71aa87b4c2ee9 // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1468,7 +1490,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { flag2 = true; // Paper - diff on change, this should be moved wrongly if (event.getLogWarning()) @@ -133,7 +133,7 @@ index 925ecb3d737f2e0e58bfdf17e2e48334188dce28..3fa2997cefdff8957dd71aa87b4c2ee9 } // Paper end } -@@ -1530,6 +1552,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1556,6 +1578,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -165,10 +165,10 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2 } // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java -index 3ff999734d14e2b6e7828e117f5ee32a60c26bc1..cfa9607241c3e69777ffc317206996c2f783437a 100644 +index 2986c3b1c9dd7f3a00ed7f25b25bfc2b513b35eb..8d199ed2f0b2f50a57f9854cc14005489ecb2976 100644 --- a/src/main/java/net/minecraft/world/entity/EntitySelector.java +++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java -@@ -39,6 +39,7 @@ public final class EntitySelector { +@@ -40,6 +40,7 @@ public final class EntitySelector { return net.minecraft.util.Mth.clamp(serverPlayer.getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= playerInsomniaTicks; }; // Paper end @@ -177,7 +177,7 @@ index 3ff999734d14e2b6e7828e117f5ee32a60c26bc1..cfa9607241c3e69777ffc317206996c2 private EntitySelector() {} // Paper start diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195c47cc9f8 100644 +index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..631b6f26c96e7de65c8ab5377f1b82c7f56df96c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -192,10 +192,10 @@ index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 3b4d9069ce877eba1adc330154eec5c178d82256..524689a3e487e303d04e32ac43487fb96c43ca7b 100644 +index 4495a3e7ea8f307cade39e42ac2aebf85a832537..0e69d0f1599d3b0e704b654dc296465b56cde2fb 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -194,6 +194,13 @@ public abstract class Player extends LivingEntity { +@@ -189,6 +189,13 @@ public abstract class Player extends LivingEntity { public boolean fauxSleeping; public int oldLevel = -1; @@ -223,10 +223,10 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index df5b588309f181c84336060d3668880b74ea7490..e1efdda967847af492f069861ef19dd307bc76a1 100644 +index 67bb2541fff19f0a48c7b1289e34749ece632d56..62e5bdd889392f6e2da73d093ff77ac355a4ea3c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -519,10 +519,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -531,10 +531,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -243,7 +243,7 @@ index df5b588309f181c84336060d3668880b74ea7490..e1efdda967847af492f069861ef19dd3 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3309,5 +3314,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3321,5 +3326,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,10 +317,10 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index c0333ba8e57cd284bb8ab15181da6b39d55872f9..282a57df4e2e5708e9cfd9c76b1d7de2a8a23900 100644 +index 59103744ac6beeb12719fdefcda54eeff498229e..30050800118a474dfd0a23cb66fd55de4c65ca1e 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -203,6 +203,7 @@ public class ActivationRange +@@ -199,6 +199,7 @@ public class ActivationRange continue; } diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch similarity index 82% rename from patches/server/0013-Bring-back-server-name.patch rename to patches/server/0011-Bring-back-server-name.patch index d2a28231e..03f7f1f2f 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index c5598adb8cbcbcf7277c2fd4dd72c243d44d9700..cda4544ae96a4fcb5c6c4483df67a59f1b53fd27 100644 +index 1643186bcb2caf5d29fd551afd35830726dbb80a..d53e0b67d847dfec2f4b118b5ca3f0ed1dc29ad6 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -58,6 +58,7 @@ public class DedicatedServerProperties extends Settings Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! -+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! +- return "Purpur"; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! ++ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } public SystemReport fillSystemReport(SystemReport details) { diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0013-LivingEntity-safeFallDistance.patch similarity index 91% rename from patches/server/0015-LivingEntity-safeFallDistance.patch rename to patches/server/0013-LivingEntity-safeFallDistance.patch index 4e7917ba7..674fec03c 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0013-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2c3d968c457ae23ec0d0eebe9c70b492b0960bfb..54037ad72135c120b1260b32380d2aabdde34ef4 100644 +index 23a59cf45f89f3d4d9ac98aada26a9027c2485f0..a8d09f76361cc3146aaeba72b7338049b30eb2cb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -34,7 +34,7 @@ index 2c3d968c457ae23ec0d0eebe9c70b492b0960bfb..54037ad72135c120b1260b32380d2aab double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2097,7 +2098,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2068,7 +2069,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -44,7 +44,7 @@ index 2c3d968c457ae23ec0d0eebe9c70b492b0960bfb..54037ad72135c120b1260b32380d2aab } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index a27e99ee6d8d2406d141dc1537c7098f43a29318..bab9e413bd55d48e3e54bee66a6cd5be19a8f415 100644 +index c4adf0222cd43e86c1791c3ff84e2e7ac8327e7b..27c86c474af331510b07eedc5aae430136235acc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -386,7 +386,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -69,10 +69,10 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 8add75d7652ac489183f8f8cb513081272f8bc7f..bebece47fc2064118ca39d0e511f71ba70a68e45 100644 +index 3373df9e09bd29096c4b9c039c06256e4ecf4154..a8f5f8f05973523945941e55c0c28e1e546a6a1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1115,4 +1115,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1120,4 +1120,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch similarity index 84% rename from patches/server/0016-Lagging-threshold.patch rename to patches/server/0014-Lagging-threshold.patch index bf092656c..33a5340c1 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 393cf73f3897f32f4a17bdc36b0d8881605817ed..89adc016610c13fee02b7dba35fcc37679afcec9 100644 +index 6339131c21398928e771a3172603da3a9c02561b..c442cf9a6856715ab7c404eb8e287bd67e20ae06 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -301,6 +301,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT +@@ -318,6 +318,16 @@ public class EntityType implements FeatureElement, EntityTypeT return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error } @@ -25,7 +25,7 @@ index 2561e74ffdf595a9b6ae13dcd738662c772db442..518b927dac087000b5049bc61d43a46a public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -531,6 +541,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -533,6 +543,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -43,22 +43,23 @@ index 2561e74ffdf595a9b6ae13dcd738662c772db442..518b927dac087000b5049bc61d43a46a if (this.descriptionId == null) { this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this)); diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -index 741719301e6fc91a598e74342810c4185e6fde26..6fbff9c02fbabf03c9c649a9ea6128021081f9cd 100644 +index 4f10f801dc126e9135432939b6663770c0e7a0bc..8f89a1c7e6214f549490ecf75afbdd72b897b120 100644 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -@@ -68,6 +68,15 @@ public class SpawnEggItem extends Item { - SpawnerBlockEntity tileentitymobspawner = (SpawnerBlockEntity) tileentity; - EntityType entitytypes = this.getType(itemstack.getTag()); +@@ -68,6 +68,16 @@ public class SpawnEggItem extends Item { + Spawner spawner = (Spawner) tileentity; -+ // Purpur start -+ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName())); -+ if (!event.callEvent()) { -+ return InteractionResult.FAIL; -+ } -+ entitytypes = EntityType.getFromBukkitType(event.getEntityType()); -+ // Purpur end + entitytypes = this.getType(itemstack.getTag()); + - tileentitymobspawner.setEntityId(entitytypes, world.getRandom()); - tileentity.setChanged(); - world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3); ++ // Purpur start ++ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); ++ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName())); ++ if (!event.callEvent()) { ++ return InteractionResult.FAIL; ++ } ++ entitytypes = EntityType.getFromBukkitType(event.getEntityType()); ++ // Purpur end ++ + spawner.setEntityId(entitytypes, world.getRandom()); + world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3); + world.gameEvent((Entity) context.getPlayer(), GameEvent.BLOCK_CHANGE, blockposition); diff --git a/patches/server/0018-Anvil-API.patch b/patches/server/0016-Anvil-API.patch similarity index 98% rename from patches/server/0018-Anvil-API.patch rename to patches/server/0016-Anvil-API.patch index 9e7c48f8f..59cd81495 100644 --- a/patches/server/0018-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index ffd349c1b80df0f1e8c02bda23700184825170fd..29f301bde378bd320d5c44f2c1b6bf9dc185e286 100644 +index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1af23da6b3ccb4759e46e37cfa2ca85cf78f3ec2 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { diff --git a/patches/server/0019-Alternative-Keepalive-Handling.patch b/patches/server/0017-Alternative-Keepalive-Handling.patch similarity index 97% rename from patches/server/0019-Alternative-Keepalive-Handling.patch rename to patches/server/0017-Alternative-Keepalive-Handling.patch index e388e60aa..5b9f3072c 100644 --- a/patches/server/0019-Alternative-Keepalive-Handling.patch +++ b/patches/server/0017-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 9226fadcf53da5f7d55f4434a660d3e091c0775f..0166107f8b48393a93ac046e6af70f0ff24fbb85 100644 +index 13e064451c4d48e873061b6dea431a6b101de2ee..04b9f56134a24385468c16c61cf84327263dcb88 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack diff --git a/patches/server/0020-Silk-touch-spawners.patch b/patches/server/0018-Silk-touch-spawners.patch similarity index 95% rename from patches/server/0020-Silk-touch-spawners.patch rename to patches/server/0018-Silk-touch-spawners.patch index a0dd9db8f..b99569b6e 100644 --- a/patches/server/0020-Silk-touch-spawners.patch +++ b/patches/server/0018-Silk-touch-spawners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Silk touch spawners diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 5f20e075c532f0f1d413242949d1738c0c152bf7..e6f8cb165f7e3da5f0edfc952d14059516de8acf 100644 +index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -294,7 +294,7 @@ public class Items { +@@ -316,7 +316,7 @@ public class Items { public static final Item PURPUR_BLOCK = registerBlock(Blocks.PURPUR_BLOCK); public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR); public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS); @@ -18,10 +18,10 @@ index 5f20e075c532f0f1d413242949d1738c0c152bf7..e6f8cb165f7e3da5f0edfc952d140595 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad253814a0 100644 +index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..72fe95069f449544ff8a17643e4bd654b698822e 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -@@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -42,6 +42,58 @@ public class SpawnerBlock extends BaseEntityBlock { return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick); } @@ -80,7 +80,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad @Override public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); -@@ -48,6 +100,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -50,6 +102,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack, boolean flag) { @@ -89,7 +89,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ed1a91c93f659306acaf8bad6820f49208554c8..570abbb70cfb523917de473bd91640719c40a611 100644 +index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..d4bca5b5f3d10c3a04befd8c365f46433491f299 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -108,6 +108,38 @@ public class PurpurWorldConfig { diff --git a/patches/server/0021-Add-turtle-egg-block-options.patch b/patches/server/0019-Add-turtle-egg-block-options.patch similarity index 91% rename from patches/server/0021-Add-turtle-egg-block-options.patch rename to patches/server/0019-Add-turtle-egg-block-options.patch index 8666b8216..467dcb0eb 100644 --- a/patches/server/0021-Add-turtle-egg-block-options.patch +++ b/patches/server/0019-Add-turtle-egg-block-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 07157822659288e76b2fba34db8d5d566506f33b..18feb559f9fd157dd4a01faf2b2bb18df2a64675 100644 +index b0199e071cba4c7ad51799132d00b22b616953fc..f5eb45df4f2c9914e1780bb10fb085713c411a4d 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -195,6 +195,25 @@ public class TurtleEggBlock extends Block { +@@ -202,6 +202,25 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(Level world, Entity entity) { @@ -36,7 +36,7 @@ index 07157822659288e76b2fba34db8d5d566506f33b..18feb559f9fd157dd4a01faf2b2bb18d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 570abbb70cfb523917de473bd91640719c40a611..7a4c1c04b7e3c558ac19b72693d5abe6c14acdfe 100644 +index d4bca5b5f3d10c3a04befd8c365f46433491f299..8142559d9d4eccd9d105acb1ff3aa131d8ea67b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch similarity index 95% rename from patches/server/0022-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0020-Logger-settings-suppressing-pointless-logs.patch index de53218b8..810a3a38a 100644 --- a/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Logger settings (suppressing pointless logs) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index e38e2e5a7ddba9c140f362021b6be0b0974f7cd1..0b3a06027f2c600960cd88159803be187c4d0317 100644 +index f655e0ae4a287886d0291cd0089bad2000249d0f..fcb5965ff0a9623a8e63a4b7413ad55416d269d9 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -200,6 +200,7 @@ public class PlayerAdvancements { +@@ -199,6 +199,7 @@ public class PlayerAdvancements { if (advancementholder == null) { if (!minecraftkey.getNamespace().equals("minecraft")) return; // CraftBukkit @@ -17,7 +17,7 @@ index e38e2e5a7ddba9c140f362021b6be0b0974f7cd1..0b3a06027f2c600960cd88159803be18 } else { this.startProgress(advancementholder, advancementprogress); diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 50ed7cfe1ecef6d075ba484804827cec83ba2bf2..54f9cd80ac925aa95ff4fdb4d52cbcc2b04263a5 100644 +index 14a5492428eac823a295ef3746d0aca6fbdab4ec..9bb669fd71cf412a090f340b3053b7cee87710f3 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java @@ -318,6 +318,7 @@ public class WorldGenRegion implements WorldGenLevel { diff --git a/patches/server/0023-Disable-outdated-build-check.patch b/patches/server/0021-Disable-outdated-build-check.patch similarity index 92% rename from patches/server/0023-Disable-outdated-build-check.patch rename to patches/server/0021-Disable-outdated-build-check.patch index ac53f1d73..18c82283b 100644 --- a/patches/server/0023-Disable-outdated-build-check.patch +++ b/patches/server/0021-Disable-outdated-build-check.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index ed8e01918c7aab189ac9a8e37dbe9ff2b06aaa4d..b214e8030b47ec2b14a8dc17894b8f89c95ab9bb 100644 +index fa38d6dd3a7439de3b2503a90637eabb3e6dd8ec..f93c8a4ca38e7d892b6941d3669445789c2fc227 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -301,7 +301,7 @@ public class Main { diff --git a/patches/server/0024-Giants-AI-settings.patch b/patches/server/0022-Giants-AI-settings.patch similarity index 98% rename from patches/server/0024-Giants-AI-settings.patch rename to patches/server/0022-Giants-AI-settings.patch index a9b0ffe4c..fdf5dfe27 100644 --- a/patches/server/0024-Giants-AI-settings.patch +++ b/patches/server/0022-Giants-AI-settings.patch @@ -114,7 +114,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a4c1c04b7e3c558ac19b72693d5abe6c14acdfe..b18c498b6fd17ef298cc6ee7b2386188f0b75b36 100644 +index 8142559d9d4eccd9d105acb1ff3aa131d8ea67b0..6d94dc88a470b7e51aafad6c912ff516d114f179 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -554,6 +554,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0025-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch similarity index 95% rename from patches/server/0025-Zombie-horse-naturally-spawn.patch rename to patches/server/0023-Zombie-horse-naturally-spawn.patch index d7e7a169e..e84f9f734 100644 --- a/patches/server/0025-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f7a19cdc38feb0dcee3e3cf42610a0604f9f4672..58e0d1a9dedf03029aaedb5d902827f58eaf853e 100644 +index 35cc427755cccb123a866220bd2a72cdbd723465..231d4065b1129815d443e76269eefba45857b59a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1000,10 +1000,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1001,10 +1001,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0026-Charged-creeper-naturally-spawn.patch b/patches/server/0024-Charged-creeper-naturally-spawn.patch similarity index 96% rename from patches/server/0026-Charged-creeper-naturally-spawn.patch rename to patches/server/0024-Charged-creeper-naturally-spawn.patch index 53a7034e1..17b39e014 100644 --- a/patches/server/0026-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0024-Charged-creeper-naturally-spawn.patch @@ -24,7 +24,7 @@ index e31094f270117dec3053620c06e409953fb6d710..a1e3f29ce49dc41ad70f74ee224250fe protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bae186807d44745942faf8919831f82e475a4f63..8503f57e3b07318331045aa25aa0fd07b8ca17ed 100644 +index 06ea43ddbbaf3165b74303a713f55512b9701765..c7956dfe6ef01868106d7c0989d5c6a612e07b7d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 96% rename from patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch index 6640c1049..6809dd89e 100644 --- a/patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch @@ -33,7 +33,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8503f57e3b07318331045aa25aa0fd07b8ca17ed..86232e49f12cae623dbe235fd0fac5fbf0255a2b 100644 +index c7956dfe6ef01868106d7c0989d5c6a612e07b7d..6087141b308c1998a6be13dbf6e1ef75d6ddc6a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -988,6 +988,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 92% rename from patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch index ac019e68c..f840a5a9f 100644 --- a/patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch +++ b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix 'outdated server' showing in ping before server fully diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index 2c13147bc063a09bb7907d6f90c3a1e811a09eb1..3edb0c392cec7fdabebad81da1a8b06a700fbfca 100644 +index e5006e7672ba79ed4bcf2c4173c5a9ed4c68395b..6338c52e0082d36d3b80038fdb44abf2772adb30 100644 --- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java @@ -153,6 +153,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene diff --git a/patches/server/0029-Tulips-change-fox-type.patch b/patches/server/0027-Tulips-change-fox-type.patch similarity index 95% rename from patches/server/0029-Tulips-change-fox-type.patch rename to patches/server/0027-Tulips-change-fox-type.patch index ae12cdfc3..959f9a174 100644 --- a/patches/server/0029-Tulips-change-fox-type.patch +++ b/patches/server/0027-Tulips-change-fox-type.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb383b989755 100644 +index 21c0431dd8abc06773b6a8ae76908a4227225326..88e26b2653eac1898f266b7c8f9f6e0fba422a52 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -36,6 +36,7 @@ import net.minecraft.util.RandomSource; @@ -67,7 +67,7 @@ index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb38 // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86232e49f12cae623dbe235fd0fac5fbf0255a2b..de3fe605c4cc477007d15468338a7de5dfc87c4c 100644 +index 6087141b308c1998a6be13dbf6e1ef75d6ddc6a8..532e25d00128c62c6eae4d0076dc0a3bd16c5b4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -509,6 +509,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0030-Breedable-Polar-Bears.patch b/patches/server/0028-Breedable-Polar-Bears.patch similarity index 97% rename from patches/server/0030-Breedable-Polar-Bears.patch rename to patches/server/0028-Breedable-Polar-Bears.patch index b0871157c..657774acf 100644 --- a/patches/server/0030-Breedable-Polar-Bears.patch +++ b/patches/server/0028-Breedable-Polar-Bears.patch @@ -59,7 +59,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de3fe605c4cc477007d15468338a7de5dfc87c4c..4b97350dd6968125d91e02441b6a573ce7000943 100644 +index 532e25d00128c62c6eae4d0076dc0a3bd16c5b4e..0d6f0e69093594fffcdb616d319be1b416909a64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -960,6 +960,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0031-Chickens-can-retaliate.patch b/patches/server/0029-Chickens-can-retaliate.patch similarity index 97% rename from patches/server/0031-Chickens-can-retaliate.patch rename to patches/server/0029-Chickens-can-retaliate.patch index e320a51e1..a18d7b4bb 100644 --- a/patches/server/0031-Chickens-can-retaliate.patch +++ b/patches/server/0029-Chickens-can-retaliate.patch @@ -50,7 +50,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b97350dd6968125d91e02441b6a573ce7000943..c208253d9afcdaa18fdb1f020d3d385556190203 100644 +index 0d6f0e69093594fffcdb616d319be1b416909a64..c76957ae7e9f2aa6b34d0a1098cfbc036b723237 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -299,6 +299,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch similarity index 81% rename from patches/server/0032-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0030-Add-option-to-set-armorstand-step-height.patch index 949d02bec..811dd9eab 100644 --- a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8b9efc0477f1d97414d12282bd9d10a7d2ec83a8..51e612378e837d3c30d50c870b565b30a772d5a0 100644 +index 4e21ff640261d95f7db1134793fb5e2e91015fd6..e664ca676c21b1c7fdc9df00797060053901e1f7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -334,7 +334,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -335,7 +335,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double xOld; public double yOld; public double zOld; @@ -18,10 +18,10 @@ index 8b9efc0477f1d97414d12282bd9d10a7d2ec83a8..51e612378e837d3c30d50c870b565b30 public final RandomSource random; public int tickCount; diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 9dcf28bdcb5770a191e62353a60c953731671283..43e562d740b628d5abf961312ea5ce7a23e8ac56 100644 +index 1e86e86b0a100a5d14aee10b60e70c32d2733660..b9bb4745cf540b5720259b009e973633647c36c6 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -690,6 +690,7 @@ public class ArmorStand extends LivingEntity { +@@ -677,6 +677,7 @@ public class ArmorStand extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 9dcf28bdcb5770a191e62353a60c953731671283..43e562d740b628d5abf961312ea5ce7a if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c208253d9afcdaa18fdb1f020d3d385556190203..5875b0e956a91ddb89adfdcb97418cc1d72a1ddf 100644 +index c76957ae7e9f2aa6b34d0a1098cfbc036b723237..ba7f378b9b0c791dd77862439f310a6653cccf30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Cat-spawning-options.patch b/patches/server/0031-Cat-spawning-options.patch similarity index 97% rename from patches/server/0033-Cat-spawning-options.patch rename to patches/server/0031-Cat-spawning-options.patch index de9b7978f..3ca10d95e 100644 --- a/patches/server/0033-Cat-spawning-options.patch +++ b/patches/server/0031-Cat-spawning-options.patch @@ -51,7 +51,7 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5875b0e956a91ddb89adfdcb97418cc1d72a1ddf..8f75164e9d877a61cc91886c1e1a7dd4026628c3 100644 +index ba7f378b9b0c791dd77862439f310a6653cccf30..6102535823eab8862c23919f20a8062f9f750eb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -272,6 +272,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0034-Cows-eat-mushrooms.patch b/patches/server/0032-Cows-eat-mushrooms.patch similarity index 98% rename from patches/server/0034-Cows-eat-mushrooms.patch rename to patches/server/0032-Cows-eat-mushrooms.patch index 5fe654b66..a6cca9377 100644 --- a/patches/server/0034-Cows-eat-mushrooms.patch +++ b/patches/server/0032-Cows-eat-mushrooms.patch @@ -114,7 +114,7 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f75164e9d877a61cc91886c1e1a7dd4026628c3..3d222e3cdb95409d9d35ef8a9224814e94c4b333 100644 +index 6102535823eab8862c23919f20a8062f9f750eb6..0db470bab81016af906dda69c9ff487e88bb63a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -342,6 +342,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 93% rename from patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch index aec0f2158..be9d94125 100644 --- a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index e3fe62285ced917de6817916e99483e117008670..c83e5d58ca5db1e63e099f36006043f7e78ea56f 100644 +index a2f77d030856056409f2d888e80818eeb6a46ee6..f27ca76b153dc33d20dc46a57f1dda4e91e82883 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -198,7 +198,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0fe0c01e8f 100644 +index 48b1cddfca671ac8bcb93a1b60518a4ee9e977e2..a52f8b583b84128b7d68bfced6c41e2c7554469c 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -112,12 +112,14 @@ public abstract class AbstractMinecart extends Entity { +@@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { private double flyingY = 0.949999988079071D; // Paper - restore vanilla precision private double flyingZ = 0.949999988079071D; // Paper - restore vanilla precision public double maxSpeed = 0.4D; @@ -35,7 +35,7 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f } protected AbstractMinecart(EntityType type, Level world, double x, double y, double z) { -@@ -342,6 +344,12 @@ public abstract class AbstractMinecart extends Entity { +@@ -294,6 +296,12 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -48,7 +48,7 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -499,16 +507,62 @@ public abstract class AbstractMinecart extends Entity { +@@ -451,16 +459,62 @@ public abstract class AbstractMinecart extends VehicleEntity { public void activateMinecart(int x, int y, int z, boolean powered) {} @@ -112,10 +112,10 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f this.move(MoverType.SELF, this.getDeltaMovement()); if (!this.onGround()) { diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java -index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1ef819a5e 100644 +index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976d533d54e 100644 --- a/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java -@@ -122,8 +122,9 @@ public class MinecartItem extends Item { +@@ -119,8 +119,9 @@ public class MinecartItem extends Item { BlockState iblockdata = world.getBlockState(blockposition); if (!iblockdata.is(BlockTags.RAILS)) { @@ -126,8 +126,8 @@ index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1 + } // else { // Purpur - place minecarts anywhere ItemStack itemstack = context.getItemInHand(); - if (!world.isClientSide) { -@@ -151,6 +152,6 @@ public class MinecartItem extends Item { + if (world instanceof ServerLevel) { +@@ -145,6 +146,6 @@ public class MinecartItem extends Item { itemstack.shrink(1); return InteractionResult.sidedSuccess(world.isClientSide); @@ -136,10 +136,10 @@ index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index e6a4a5898ffdcb2aa2bc01371a6d7dbc06d610ce..443bed339884f78ecda8abdbcdc9b57ea9768cc9 100644 +index 3ab8b99837b1d1faea722c598b0228b2780be8b1..06b07927aba82084bd2996be92b9e340a9bf2ad2 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -89,7 +89,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -93,7 +93,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; diff --git a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch similarity index 91% rename from patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch index 9e1ff6dd4..9de211d4e 100644 --- a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 094d60d125063cb6c83b09fb206aec91e40ef80e..561b9774a9932227ec56c528e49cc6227792da13 100644 +index a8d09f76361cc3146aaeba72b7338049b30eb2cb..ade6fcdf6f6fd80bc91ffc313226a41ba0c4e18d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1843,6 +1843,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1828,6 +1828,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 094d60d125063cb6c83b09fb206aec91e40ef80e..561b9774a9932227ec56c528e49cc622 this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1851,6 +1852,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1836,6 +1837,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch index 13d4d83f7..cc5f3aa2f 100644 --- a/patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch @@ -28,7 +28,7 @@ index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 807b1b1de4019f279618c6e02ab90bf230ed5e66..e943bd03ea9010f7d7f877380c38a38aab396d9f 100644 +index 9832d71949025eed99a3e9e8b09f9bee9991e36a..297dfcc634cbe6993e7844209ee564ad530866ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0044-Skip-events-if-there-s-no-listeners.patch b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch similarity index 88% rename from patches/server/0044-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0042-Skip-events-if-there-s-no-listeners.patch index 768487bbd..4dc73ab51 100644 --- a/patches/server/0044-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 3eec879bf3975636739b2491cc05b8177032d16d..a5829f0726fd92faae04f978c82b2f0736bcd50b 100644 +index 55f3f5396dac2b0bb0cc37b537547e9245042100..471270f302cbfaf81500976fcc5a02eaed4120f3 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -462,6 +462,7 @@ public class Commands { +@@ -516,6 +516,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper @@ -16,7 +16,7 @@ index 3eec879bf3975636739b2491cc05b8177032d16d..a5829f0726fd92faae04f978c82b2f07 PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -472,6 +473,7 @@ public class Commands { +@@ -526,6 +527,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/server/0045-Add-permission-for-F3-N-debug.patch b/patches/server/0043-Add-permission-for-F3-N-debug.patch similarity index 83% rename from patches/server/0045-Add-permission-for-F3-N-debug.patch rename to patches/server/0043-Add-permission-for-F3-N-debug.patch index d2c6881a2..7c16f3361 100644 --- a/patches/server/0045-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0043-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 837ef9a66921f881c5c94aa5f28746d9494d4a98..d4d7493569ecf3eb9456b4005f269b94fe08941e 100644 +index accce07f973962899696336c541403b6e5afb18a..e46fcb5c8bf1047e3f330fd525166aee5f0b646b 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1177,6 +1177,7 @@ public abstract class PlayerList { +@@ -1175,6 +1175,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/server/0046-Configurable-TPS-Catchup.patch b/patches/server/0044-Configurable-TPS-Catchup.patch similarity index 64% rename from patches/server/0046-Configurable-TPS-Catchup.patch rename to patches/server/0044-Configurable-TPS-Catchup.patch index d380a71f6..f2f87875a 100644 --- a/patches/server/0046-Configurable-TPS-Catchup.patch +++ b/patches/server/0044-Configurable-TPS-Catchup.patch @@ -5,24 +5,24 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14..57f2b54ad36d33e76e538895df691987c869a043 100644 +index c442cf9a6856715ab7c404eb8e287bd67e20ae06..0d4d62757e7b15767ec62f59e287ab3a94be8c03 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1160,7 +1160,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType = entity.getType(); final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java -index af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e..ce614ae6b1fa0b31c1ee8dacb69134bb20c949f4 100644 +index 83dd3f982d5869e26748e6e0d0b38a3c7a08fe02..92d562fa11f69bb6b841299aef257ea0c674ca1c 100644 --- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -35,6 +35,13 @@ public class DolphinSpit extends LlamaSpit { @@ -66,7 +66,7 @@ index af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e..ce614ae6b1fa0b31c1ee8dacb69134bb super_tick(); diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java -index 1fd6412e332ea8ee82b19c108e113624e51d764b..ea8b928b6d82689e71bbcc39ab497491072dfba6 100644 +index 8fa9b376682d9e8b1971a9f72b918c6dc6872d04..d0d951f867390fa12cae2ba2a49212354b10d7b0 100644 --- a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -38,6 +38,13 @@ public class PhantomFlames extends LlamaSpit { diff --git a/patches/server/0056-Dispenser-curse-of-binding-protection.patch b/patches/server/0054-Dispenser-curse-of-binding-protection.patch similarity index 90% rename from patches/server/0056-Dispenser-curse-of-binding-protection.patch rename to patches/server/0054-Dispenser-curse-of-binding-protection.patch index d3ed9cb49..e4b47a91b 100644 --- a/patches/server/0056-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0054-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 67820c9a971d9c0c24b6d7e6d10dd0b761f24345..de635f425a69ac4f21a80a2c723adf0362501d1f 100644 +index 84a41eaaa3e2bc2be1706dc436dea21195f7d81c..ed72f020394f4dd0f1fb21953e69b1aa9716b262 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -65,6 +65,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; +@@ -66,6 +66,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -16,7 +16,7 @@ index 67820c9a971d9c0c24b6d7e6d10dd0b761f24345..de635f425a69ac4f21a80a2c723adf03 import net.minecraft.world.level.GameRules; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; -@@ -1174,6 +1175,12 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1169,6 +1170,12 @@ public abstract class Mob extends LivingEntity implements Targeting { } @@ -43,7 +43,7 @@ index 42d87800a328f71c5127ce5599ca4c71cc9bb1cd..7868c2f7b563792f8902d9a77dca46e0 // 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 9311e620a821bbd46d962dd01ef9b0c1ec99555f..2e2a347d341ef831aaf1a6b01fa2aeb82e76b810 100644 +index e39048f5dd6b54bd2488ac450fa2260a6c2754dd..4240c9ce3fec8ae6883fa5762e01349136fe4067 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/server/0057-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch similarity index 87% rename from patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch index c21f83b02..150a08f9c 100644 --- a/patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0055-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 5c07da62c82bc70138f6cb5007629d6974be69ac..96f4ef06d16483bd4bb88cc36207d5bdc4bd1280 100644 +index c041c0b81be41cfd128c2f5ba56a5329d50b2efc..960bada23cb89a7f270d1ee24d62f2bc108522af 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -578,6 +578,7 @@ public class Boat extends Entity implements VariantHolder { +@@ -521,6 +521,7 @@ public class Boat extends VehicleEntity implements VariantHolder { if (f > 0.0F) { this.landFriction = f; @@ -17,7 +17,7 @@ index 5c07da62c82bc70138f6cb5007629d6974be69ac..96f4ef06d16483bd4bb88cc36207d5bd } 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 2e2a347d341ef831aaf1a6b01fa2aeb82e76b810..e2e95793c02521df51d9dbf76a22e11f96778f49 100644 +index 4240c9ce3fec8ae6883fa5762e01349136fe4067..cc373c386ca72c3c6cfd69dc26be6ccdfaae1738 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/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch similarity index 95% rename from patches/server/0058-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0056-Mending-mends-most-damages-equipment-first.patch index c2d7fb609..6ed077ae9 100644 --- a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch @@ -5,7 +5,7 @@ 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 6dac7cd4c9abfbde299f5d279acc2739195fc312..77ba83d02530b26ef66dcfe8b4c5e8a6109a3b28 100644 +index fb74f13ab2a977224e843a468ea8c72d923a75eb..5450058d23f1ab20689183bd284b01fc93628db5 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -331,7 +331,7 @@ public class ExperienceOrb extends Entity { @@ -18,10 +18,10 @@ index 6dac7cd4c9abfbde299f5d279acc2739195fc312..77ba83d02530b26ef66dcfe8b4c5e8a6 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d0f7baa80cb7d0883304abe2ed990c258a0d92b6..6b2a5e901584714b50eadfa1224b0c97e8a23e5f 100644 +index de277d61b718fe07a87d75a2547bb1c7f8553aa1..22451858d7a27f9e701b22e923be752ef5dfcafe 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -591,6 +591,16 @@ public final class ItemStack { +@@ -612,6 +612,16 @@ public final class ItemStack { return this.isDamageableItem() && this.getDamageValue() > 0; } diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0057-Add-5-second-tps-average-in-tps.patch similarity index 89% rename from patches/server/0059-Add-5-second-tps-average-in-tps.patch rename to patches/server/0057-Add-5-second-tps-average-in-tps.patch index de4d47047..dfa861ceb 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0057-Add-5-second-tps-average-in-tps.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add 5 second tps average in /tps diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf21641a2200c 100644 +index 066b9e4c4f0e7773548eda045cdd1ca8445221d2..92eaba96135ccddb7d682dab7e82cde9318a48ef 100644 --- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java @@ -58,7 +58,7 @@ public class RAMDetails extends JList { @@ -20,17 +20,17 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 @@ -67,7 +67,7 @@ public class RAMDetails extends JList { vector.add("Memory use: " + (data.getUsedMem() / 1024L / 1024L) + " mb (" + (data.getFree() * 100L / data.getMax()) + "% free)"); vector.add("Heap: " + (data.getTotal() / 1024L / 1024L) + " / " + (data.getMax() / 1024L / 1024L) + " mb"); - vector.add("Avg tick: " + DECIMAL_FORMAT.format(getAverage(server.tickTimes)) + " ms"); + vector.add("Avg tick: " + DECIMAL_FORMAT.format(this.getAverage(server.getTickTimesNanos())) + " ms"); - vector.add("TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg)); + vector.add("TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg)); // Purpur setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f99658c42e69ded4c61ccaf4ac5e9e645ee5bc7c..c5a93bb3f0ae907d3abb63f97567ab0e54a25b42 100644 +index 0d4d62757e7b15767ec62f59e287ab3a94be8c03..6206d19c2861996699ced5eccfff8ee8ab3a7727 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -297,7 +297,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { @@ -66,7 +66,7 @@ index 6b2a5e901584714b50eadfa1224b0c97e8a23e5f..191bcb10f9976b815038d73ac60c0ddd int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -675,6 +675,12 @@ public final class ItemStack { +@@ -696,6 +696,12 @@ public final class ItemStack { if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent breakCallback.accept(entity); Item item = this.getItem(); @@ -80,10 +80,10 @@ index 6b2a5e901584714b50eadfa1224b0c97e8a23e5f..191bcb10f9976b815038d73ac60c0ddd 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 8078f127ff4b6e0aafb5804b9c02e237f79445b5..06c2f30b77a2c8aecc65e0c305f643d53798f364 100644 +index 5fab851b319847035fb1eefd0ab999de3ccc2cd8..f1d6db9382bec49f61657168fe56b06784d02cf5 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -130,6 +130,14 @@ public class TridentItem extends Item implements Vanishable { +@@ -131,6 +131,14 @@ public class TridentItem extends Item implements Vanishable { f2 *= f6 / f5; f3 *= f6 / f5; f4 *= f6 / f5; diff --git a/patches/server/0061-Item-entity-immunities.patch b/patches/server/0059-Item-entity-immunities.patch similarity index 93% rename from patches/server/0061-Item-entity-immunities.patch rename to patches/server/0059-Item-entity-immunities.patch index dbd94c3fe..4036ad828 100644 --- a/patches/server/0061-Item-entity-immunities.patch +++ b/patches/server/0059-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 d46e61640b241d32df05240dedd2c23f138725e6..c6ef510d335b8baea58c4491853414a52a06b66b 100644 +index 35674f92a67f93382103c2766df4b678ba5c862f..ed520d535cd8e7507f45f69de393795bd90edd3c 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -73,7 +73,7 @@ public class ServerEntity { @@ -18,10 +18,10 @@ index d46e61640b241d32df05240dedd2c23f138725e6..c6ef510d335b8baea58c4491853414a5 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 eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631bf897a29b 100644 +index a39db702063887cf530f272deaf4f334047cc7d4..22d40d754624d2832e215c2774b591a0082cd240 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -56,6 +56,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -58,6 +58,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public boolean canMobPickup = true; // Paper private int despawnRate = -1; // Paper public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -34,7 +34,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -346,7 +352,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -364,7 +370,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public boolean hurt(DamageSource source, float amount) { @@ -52,7 +52,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b return false; } else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { return false; -@@ -548,6 +563,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -567,6 +582,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 @@ -66,7 +66,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 9c0f83ff8113696309265fb9e8f6006296de86a6..c57f0ae102f1c9833ed7f93af4682caf490ec70c 100644 +index 81498941748d646ebe6495f4a7ce6953532144c6..14d6ff11c8b8b047ada5d308515e9d214cf77b69 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -151,4 +151,46 @@ public class CraftItem extends CraftEntity implements Item { @@ -117,7 +117,7 @@ index 9c0f83ff8113696309265fb9e8f6006296de86a6..c57f0ae102f1c9833ed7f93af4682caf + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b34f95b6104b1aebd8c07cf279e168cdb074efb9..fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae 100644 +index 685553ad958249f2ec00ea1139e8bab58abf7bcb..6d46b1682a7c0b8c638a047177ff99ee8c47de9c 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/server/0062-Add-ping-command.patch b/patches/server/0060-Add-ping-command.patch similarity index 96% rename from patches/server/0062-Add-ping-command.patch rename to patches/server/0060-Add-ping-command.patch index 1b786366d..7873bddf6 100644 --- a/patches/server/0062-Add-ping-command.patch +++ b/patches/server/0060-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 a5829f0726fd92faae04f978c82b2f0736bcd50b..32fbe67a2dceda1a165edc7397a64beffc537488 100644 +index 471270f302cbfaf81500976fcc5a02eaed4120f3..0aeee502c60a81e6a9ca765e57ab27f5c588ac1d 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -230,6 +230,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); diff --git a/patches/server/0063-Add-demo-command.patch b/patches/server/0061-Add-demo-command.patch similarity index 96% rename from patches/server/0063-Add-demo-command.patch rename to patches/server/0061-Add-demo-command.patch index 6a34ca340..a323a3155 100644 --- a/patches/server/0063-Add-demo-command.patch +++ b/patches/server/0061-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 32fbe67a2dceda1a165edc7397a64beffc537488..4794bb7f80d3419c6da12ee0f608ba05080a409a 100644 +index 0aeee502c60a81e6a9ca765e57ab27f5c588ac1d..2bfcd4222daa7c5b5cc8cfa0545241afd3cb8d15 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -230,6 +230,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); diff --git a/patches/server/0064-Add-credits-command.patch b/patches/server/0062-Add-credits-command.patch similarity index 97% rename from patches/server/0064-Add-credits-command.patch rename to patches/server/0062-Add-credits-command.patch index 5c0c78156..31293554e 100644 --- a/patches/server/0064-Add-credits-command.patch +++ b/patches/server/0062-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 4794bb7f80d3419c6da12ee0f608ba05080a409a..637648e03985868c1fe420f84fa778b06deb23ee 100644 +index 2bfcd4222daa7c5b5cc8cfa0545241afd3cb8d15..575f026c086e24663b5d38222915460923937723 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -230,6 +230,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); diff --git a/patches/server/0065-Configurable-jockey-options.patch b/patches/server/0063-Configurable-jockey-options.patch similarity index 97% rename from patches/server/0065-Configurable-jockey-options.patch rename to patches/server/0063-Configurable-jockey-options.patch index 4e7a31167..91a153816 100644 --- a/patches/server/0065-Configurable-jockey-options.patch +++ b/patches/server/0063-Configurable-jockey-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 3cde608a222ab2ef2b5fc7f543e97ba71e440ea9..6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653 100644 +index e9f14e8d207c99a60a4802b3412048cd1481b9f7..ebfbf67d65dc5a54e9235f44ab391147c23ddd0f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -95,6 +95,21 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -31,7 +31,7 @@ index 3cde608a222ab2ef2b5fc7f543e97ba71e440ea9..6ec7d0f5e525f9e04b6fa0fb6d4da5fc protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 469ad6f0d73add7b005217b2ae39b201c7679a27..ede13fe38fb97b94180ea8557d8a45d2ae5954d3 100644 +index 4ba01ebfc93d10cd0077e32c30349afda2093fb2..a6d827b39ce9ca13103fb2f9940974e8aaaea037 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -51,6 +51,21 @@ public class Husk extends Zombie { @@ -54,10 +54,10 @@ index 469ad6f0d73add7b005217b2ae39b201c7679a27..ede13fe38fb97b94180ea8557d8a45d2 + } + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); + 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 3948e9e56a260ee831fa17b0a4d4240a0bc8d26d..8a30b101fd2cc78b867ae703f6a4e8805d1c841d 100644 +index f75900e33a08bd6eb13fd480fe62b49346f47bac..52f2d2df03314c8ddf70b240dca82cafa44c6b07 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -129,6 +129,18 @@ public class Zombie extends Monster { diff --git a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 99% rename from patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 62da4293e..797c7a03d 100644 --- a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -257,7 +257,7 @@ index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd5 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 6da08454de6f0932971a230471d3558578a4b2a3..fdb2d2f67d6356c010e430fc4aee5593811cbf17 100644 +index 5fd4129889b3006018612204bc527738a78a0d35..262c6a2b63316fda5fa98fa4fcfbc0985951f6ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1065,6 +1065,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0067-Add-phantom-spawning-options.patch b/patches/server/0065-Add-phantom-spawning-options.patch similarity index 98% rename from patches/server/0067-Add-phantom-spawning-options.patch rename to patches/server/0065-Add-phantom-spawning-options.patch index ea5475409..b1ca074b1 100644 --- a/patches/server/0067-Add-phantom-spawning-options.patch +++ b/patches/server/0065-Add-phantom-spawning-options.patch @@ -40,7 +40,7 @@ index dfeb3e336e06ef01f5401a362755030db942bb07..f74c5eda91a3d521763ec7bc33f23e0c for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fdb2d2f67d6356c010e430fc4aee5593811cbf17..efd10d6f2b3d342e2cb817b1e7fa7f5f86075b8c 100644 +index 262c6a2b63316fda5fa98fa4fcfbc0985951f6ee..bf39a299c9876ab8385de7d00ce6fdf427e73a9e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1068,6 +1068,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0068-Implement-bed-explosion-options.patch b/patches/server/0066-Implement-bed-explosion-options.patch similarity index 91% rename from patches/server/0068-Implement-bed-explosion-options.patch rename to patches/server/0066-Implement-bed-explosion-options.patch index b9b420b80..29d8302ee 100644 --- a/patches/server/0068-Implement-bed-explosion-options.patch +++ b/patches/server/0066-Implement-bed-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index d40500f9a807cab0b2fb6fa9032f33f4fb74c895..e8405a57fb88e63b63baaf00645c417633bdc0f2 100644 +index 04b1aa22ac1df39d274f27d9c93e0492a8a673f8..ab11b017f0795f5ec8161a4831c463c780307eaa 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -96,7 +96,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -106,7 +106,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = pos.getCenter(); @@ -17,7 +17,7 @@ index d40500f9a807cab0b2fb6fa9032f33f4fb74c895..e8405a57fb88e63b63baaf00645c4176 return InteractionResult.SUCCESS; } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first -@@ -149,7 +149,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -159,7 +159,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = blockposition.getCenter(); @@ -27,7 +27,7 @@ index d40500f9a807cab0b2fb6fa9032f33f4fb74c895..e8405a57fb88e63b63baaf00645c4176 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index efd10d6f2b3d342e2cb817b1e7fa7f5f86075b8c..461627c87d514b8a936ad5675abb849aa49c569d 100644 +index bf39a299c9876ab8385de7d00ce6fdf427e73a9e..41f6e686da7068f51a32c2baca643d73072e2e86 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/server/0069-Implement-respawn-anchor-explosion-options.patch b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch similarity index 92% rename from patches/server/0069-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0067-Implement-respawn-anchor-explosion-options.patch index db3f81e2c..e5ae3a7e4 100644 --- a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 2ed78cf83c0ae66a6ddba1ff307da89a24b0d0a8..ae17d6a54fad0bd2d71d306f418b5ced2f11b863 100644 +index 797ece59c10bdb60a86f71ca3b7bb95dbe0f1078..ff315a10bcc605dc4e02a8de6b7d4f10db543a6c 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -141,7 +141,7 @@ public class RespawnAnchorBlock extends Block { +@@ -148,7 +148,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 vec3d = explodedPos.getCenter(); @@ -18,7 +18,7 @@ index 2ed78cf83c0ae66a6ddba1ff307da89a24b0d0a8..ae17d6a54fad0bd2d71d306f418b5ced 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 461627c87d514b8a936ad5675abb849aa49c569d..3bfdc7ba270762ec114450d30e94457405d8bc19 100644 +index 41f6e686da7068f51a32c2baca643d73072e2e86..2950033152a4309ee21bb80b70f207bb1a175738 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/server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0068-Add-allow-water-in-end-world-option.patch similarity index 90% rename from patches/server/0070-Add-allow-water-in-end-world-option.patch rename to patches/server/0068-Add-allow-water-in-end-world-option.patch index 643655e11..0d7f7fd1d 100644 --- a/patches/server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0068-Add-allow-water-in-end-world-option.patch @@ -5,7 +5,7 @@ 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 277555a26e8281dd1a626e572794b08cf51d00c5..48e4fecf5ae5538004e3f53093b8be7c4be1cbee 100644 +index aa0f09a18ea781e027ea70928b30d3e93061120f..5cb8f1e13f4889792395d6b498c0ade22a33b446 100644 --- a/src/main/java/net/minecraft/world/item/BucketItem.java +++ b/src/main/java/net/minecraft/world/item/BucketItem.java @@ -195,7 +195,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { @@ -27,10 +27,10 @@ index 277555a26e8281dd1a626e572794b08cf51d00c5..48e4fecf5ae5538004e3f53093b8be7c 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 eccc55372a7a52a92dd9418a47ece0fd2adcd6ed..4f950128114b8fb6ad145a7302ce6be327c8b6c1 100644 +index d89e36f90c7d84eaa627ef1dd9002ea0a03d8a79..4fc9331cda9063d6f3f13572efd7182327c7a9e4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1883,4 +1883,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1900,4 +1900,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } // Paper end - notify observers even if grow failed @@ -46,10 +46,10 @@ index eccc55372a7a52a92dd9418a47ece0fd2adcd6ed..4f950128114b8fb6ad145a7302ce6be3 + // 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 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d86adedf44 100644 +index 4ab6997dad5b112f5105f786a6cee78c6c5667e8..bbf19716d84a0d7e71a11559ef4f62590f2f367c 100644 --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java -@@ -33,7 +33,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -41,7 +41,7 @@ public class IceBlock extends HalfTransparentBlock { public void afterDestroy(Level world, BlockPos pos, ItemStack tool) { // Paper end if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) == 0) { @@ -58,7 +58,7 @@ index 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d8 world.removeBlock(pos, false); return; } -@@ -61,7 +61,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -69,7 +69,7 @@ public class IceBlock extends HalfTransparentBlock { return; } // CraftBukkit end diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/server/0069-Allow-color-codes-in-books.patch similarity index 92% rename from patches/server/0071-Allow-color-codes-in-books.patch rename to patches/server/0069-Allow-color-codes-in-books.patch index 5b312dbc9..6772989aa 100644 --- a/patches/server/0071-Allow-color-codes-in-books.patch +++ b/patches/server/0069-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 3fa2997cefdff8957dd71aa87b4c2ee924b7e80a..8ffd6f79a055a56943521c6e1802eace318dc929 100644 +index 34a369dd615c4701d1bfb66a51623eab8e0b3080..2d29caa16c754b06cbfe91038b673668a1b61d02 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1229,13 +1229,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1233,13 +1233,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 3fa2997cefdff8957dd71aa87b4c2ee924b7e80a..8ffd6f79a055a56943521c6e1802eace this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1247,10 +1250,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1251,10 +1254,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 3fa2997cefdff8957dd71aa87b4c2ee924b7e80a..8ffd6f79a055a56943521c6e1802eace Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1260,11 +1266,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1264,11 +1270,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 3fa2997cefdff8957dd71aa87b4c2ee924b7e80a..8ffd6f79a055a56943521c6e1802eace } } -@@ -1277,6 +1283,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1281,6 +1287,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0070-Entity-lifespan.patch similarity index 86% rename from patches/server/0072-Entity-lifespan.patch rename to patches/server/0070-Entity-lifespan.patch index 9549c0c6b..527592431 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0070-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 8ffd6f79a055a56943521c6e1802eace318dc929..93b81303c6f5a009af7c282435671fd05ca68499 100644 +index 2d29caa16c754b06cbfe91038b673668a1b61d02..c58ede27583fa14fffcc8554d58bb47a94886e40 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2741,6 +2741,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2747,6 +2747,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { @@ -17,10 +17,10 @@ index 8ffd6f79a055a56943521c6e1802eace318dc929..93b81303c6f5a009af7c282435671fd0 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 de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5607919ec 100644 +index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b997397cc 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -135,6 +135,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { private BlockPos restrictCenter; private float restrictRadius; @@ -28,7 +28,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -324,6 +325,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -323,6 +324,7 @@ public abstract class Mob extends LivingEntity implements Targeting { entityliving = null; } } @@ -36,7 +36,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 this.target = entityliving; return true; // CraftBukkit end -@@ -371,8 +373,28 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -370,8 +372,28 @@ public abstract class Mob extends LivingEntity implements Targeting { } this.level().getProfiler().pop(); @@ -65,7 +65,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 @Override protected void playHurtSound(DamageSource source) { this.resetAmbientSoundTime(); -@@ -562,6 +584,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -561,6 +583,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 } @Override -@@ -632,6 +655,11 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -631,6 +654,11 @@ public abstract class Mob extends LivingEntity implements Targeting { this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,7 +85,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 } @Override -@@ -1708,6 +1736,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1703,6 +1731,7 @@ public abstract class Mob extends LivingEntity implements Targeting { this.setLastHurtMob(target); } @@ -94,7 +94,7 @@ index de635f425a69ac4f21a80a2c723adf0362501d1f..19688acdd615068b37b928c3608074c5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bfdc7ba270762ec114450d30e94457405d8bc19..5afe1d5977f1bbc2b2c2aa5982c4eb23d82e7644 100644 +index 2950033152a4309ee21bb80b70f207bb1a175738..9df1e909f4dc21d5c3d11fa67adc15efd5d82eca 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/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 93% rename from patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 8fff655c0..b2fd0dc4e 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0071-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 d8c87e4b8ca7b4872d5210e0f1e6da7a9648a122..e919fdda8b3f4012a3b48f75210513188a00cbcf 100644 +index 092808399b4450e2485d4cc3390a237ba809618a..f1260f9d4bd386c1bfddf977dc47a41082bce4f2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2745,4 +2745,26 @@ public class ServerPlayer extends Player { +@@ -2846,4 +2846,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index d8c87e4b8ca7b4872d5210e0f1e6da7a9648a122..e919fdda8b3f4012a3b48f7521051318 + // 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 961d37c7b690369ac5b94755faef1872b705187f..76ea2ee6f0dc370125dfedb852c90b54ecd3d831 100644 +index 411d204edd6ea805c0566c6d7ac76dbdd4428309..8148c9596a17396d37b820cac40f50c2073a0c00 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/server/0072-Squid-EAR-immunity.patch similarity index 94% rename from patches/server/0074-Squid-EAR-immunity.patch rename to patches/server/0072-Squid-EAR-immunity.patch index 6b0852511..e308ba494 100644 --- a/patches/server/0074-Squid-EAR-immunity.patch +++ b/patches/server/0072-Squid-EAR-immunity.patch @@ -25,7 +25,7 @@ index 3d7726bd54781e922f9d2b5b1fea510d6295919e..3557d668d5117aaaef2fde0792b58c7e public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 282a57df4e2e5708e9cfd9c76b1d7de2a8a23900..a7ecbd77d0017a298b94cceeddc049eff713f60f 100644 +index 30050800118a474dfd0a23cb66fd55de4c65ca1e..3fb2ae23bcbf0c397e91a958796f13a2dfedd152 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -36,7 +36,7 @@ index 282a57df4e2e5708e9cfd9c76b1d7de2a8a23900..a7ecbd77d0017a298b94cceeddc049ef import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -402,6 +403,7 @@ public class ActivationRange +@@ -379,6 +380,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0075-Phantoms-burn-in-light.patch b/patches/server/0073-Phantoms-burn-in-light.patch similarity index 98% rename from patches/server/0075-Phantoms-burn-in-light.patch rename to patches/server/0073-Phantoms-burn-in-light.patch index 71c92c188..87039d62b 100644 --- a/patches/server/0075-Phantoms-burn-in-light.patch +++ b/patches/server/0073-Phantoms-burn-in-light.patch @@ -52,7 +52,7 @@ index ef41a462b102981d30207299d0279fd51b433a22..6849b2ad3b2db840a1af35ef06949050 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 b9ba53461de687070dda3c0bcccbee240017033a..35be76739cda5aa4a075dc665e7702a9269d4333 100644 +index 3557d668d5117aaaef2fde0792b58c7e58546c22..81dd8666fd997f92972da2c6980c6ce515582fbc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1123,6 +1123,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/server/0074-Configurable-villager-breeding.patch similarity index 93% rename from patches/server/0076-Configurable-villager-breeding.patch rename to patches/server/0074-Configurable-villager-breeding.patch index efadce03e..db9640681 100644 --- a/patches/server/0076-Configurable-villager-breeding.patch +++ b/patches/server/0074-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 4dac757aec546c2128506ee899ee9517441595d1..cf4950ae95e18f64856e4bce8e70772268f3fa3a 100644 +index 0df7acbdf1c8d0546eb57291bfa952943a5f6520..ee8661840ddfbdf4a4726f96da61253a96878dfc 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -786,7 +786,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -784,7 +784,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/server/0077-Redstone-deactivates-spawners.patch b/patches/server/0075-Redstone-deactivates-spawners.patch similarity index 91% rename from patches/server/0077-Redstone-deactivates-spawners.patch rename to patches/server/0075-Redstone-deactivates-spawners.patch index ce03b99d6..9d6fd1f10 100644 --- a/patches/server/0077-Redstone-deactivates-spawners.patch +++ b/patches/server/0075-Redstone-deactivates-spawners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Redstone deactivates spawners diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java -index 1279132e2fb3e8f64f062df0ac8b8197f9d8f343..fb933cc388acf26cebe1da692b9c5dd165f797ee 100644 +index d88a23984dcea9c2119bdc245013af8b25448da3..075b4ac21707bd0b3ad2197c59359f8d33bae486 100644 --- a/src/main/java/net/minecraft/world/level/BaseSpawner.java +++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java -@@ -71,6 +71,7 @@ public abstract class BaseSpawner { +@@ -57,6 +57,7 @@ public abstract class BaseSpawner { } public boolean isNearPlayer(Level world, BlockPos pos) { diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/server/0076-Totems-work-in-inventory.patch similarity index 94% rename from patches/server/0078-Totems-work-in-inventory.patch rename to patches/server/0076-Totems-work-in-inventory.patch index 55b1e58ba..5bb581d07 100644 --- a/patches/server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0076-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 642ffbd2632c9cb0438447ca83f598b1df37bd9b..5e701bd6ce6db9ef3cebbc24ce80e00aa1e558d7 100644 +index 8148c9596a17396d37b820cac40f50c2073a0c00..d512d16abc1dff33e9b430d9ba5b960f1460f9ab 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1631,6 +1631,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1618,6 +1618,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/server/0079-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0077-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/server/0080-Dispensers-place-anvils-option.patch b/patches/server/0078-Dispensers-place-anvils-option.patch similarity index 90% rename from patches/server/0080-Dispensers-place-anvils-option.patch rename to patches/server/0078-Dispensers-place-anvils-option.patch index def613771..297118303 100644 --- a/patches/server/0080-Dispensers-place-anvils-option.patch +++ b/patches/server/0078-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 a0c7c6208314d981e8577ad69ef1c5193290a085..603eac94296c32d87dccf2c6b5fd7183864346f2 100644 +index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..5e3a3565ac71cd8b1ea95b1732e5a1ec26ef6adb 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1188,6 +1188,23 @@ public interface DispenseItemBehavior { +@@ -1196,6 +1196,23 @@ public interface DispenseItemBehavior { } } }); @@ -33,7 +33,7 @@ index a0c7c6208314d981e8577ad69ef1c5193290a085..603eac94296c32d87dccf2c6b5fd7183 static Vec3 getEntityPokingOutOfBlockPos(BlockSource pointer, EntityType entityType, Direction direction) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 008ae05e639b38a28d27a6dacbb6ef25a5c9ecbf..8ee713af7d57bbf52a9aacf11385c0a325a24aa8 100644 +index 7bcba65dfaa0076c5ce9271a5f54d01a99025242..d943ae4f0a3d6deda1596ed4c5b8c01e3653f8a1 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/server/0081-Allow-anvil-colors.patch b/patches/server/0079-Allow-anvil-colors.patch similarity index 96% rename from patches/server/0081-Allow-anvil-colors.patch rename to patches/server/0079-Allow-anvil-colors.patch index 20da3beeb..37d7e9d06 100644 --- a/patches/server/0081-Allow-anvil-colors.patch +++ b/patches/server/0079-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 b500a04b8135604f0159a741b3d228c9e87b2a46..8a7c30e316db4960b0b62ca0e366c19febead214 100644 +index 9cc9925cd43c4b1b742acde9cf4fb5fe46619d24..cccd34370d76d96eddeba3de1cfc41d47f9d1f60 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -294,6 +294,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -64,7 +64,7 @@ index b500a04b8135604f0159a741b3d228c9e87b2a46..8a7c30e316db4960b0b62ca0e366c19f } } else if (itemstack.hasCustomHoverName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ee713af7d57bbf52a9aacf11385c0a325a24aa8..4ac9e1c076d73e3964be68f4a550e3f8e2c96a7d 100644 +index d943ae4f0a3d6deda1596ed4c5b8c01e3653f8a1..1f22aae24973fc8f6464c0de0188d01c8171546f 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/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 88% rename from patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch index f5d2bb8a1..950b4604f 100644 --- a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0080-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 89e3dbfddc739f97fdb6ec9a5714530f03cc7092..079fd78528377ee4236fb2e7189a5f0fc5ec4fb3 100644 +index 519e52b303cb9a2d4b1cae84d8436f2057003fcb..ff11643193495f0646de4bcf13b7f1e57731e4fb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -485,6 +485,7 @@ public class Dolphin extends WaterAnimal { +@@ -480,6 +480,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { @@ -17,7 +17,7 @@ index 89e3dbfddc739f97fdb6ec9a5714530f03cc7092..079fd78528377ee4236fb2e7189a5f0f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ac9e1c076d73e3964be68f4a550e3f8e2c96a7d..f20c2daa8dabb5f6131eb6e6b8dba66cf5ad812b 100644 +index 1f22aae24973fc8f6464c0de0188d01c8171546f..afc67803bf71d26e84f9130c30ac2b1b3d1114bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0083-Short-enderman-height.patch b/patches/server/0081-Short-enderman-height.patch similarity index 90% rename from patches/server/0083-Short-enderman-height.patch rename to patches/server/0081-Short-enderman-height.patch index 4088fc200..b9b018f25 100644 --- a/patches/server/0083-Short-enderman-height.patch +++ b/patches/server/0081-Short-enderman-height.patch @@ -5,10 +5,10 @@ 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 518b927dac087000b5049bc61d43a46a7379e256..5d703e322bd220665c3ce3a41e40129b238ae150 100644 +index b04f03d422a9ed4c6bf090e895a2d9a74f48ea61..ef01a87a77954f19f017129ab186afea9e6389a2 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -309,7 +309,8 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -311,7 +311,8 @@ public class EntityType implements FeatureElement, EntityTypeT private Component description; @Nullable private ResourceLocation lootTable; @@ -19,10 +19,10 @@ index 518b927dac087000b5049bc61d43a46a7379e256..5d703e322bd220665c3ce3a41e40129b private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error 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 86581579aed4d8bd18c7b7ea58e2dc4fee5315ba..ebef4f39af4928ed5bd206a82aa0e3992e67db78 100644 +index 4530193e6b5d67cc6a1783b6ea537764bb5725cd..6f7f4dd703a6a2cf2d90102b23538bb2104fb464 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -440,6 +440,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -434,6 +434,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 diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch similarity index 89% rename from patches/server/0084-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0082-Stop-squids-floating-on-top-of-water.patch index b1af9007a..72926b934 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 8add0fa430b193a9a8267dd53bdf416aedbc495b..6c90cbbb93231b265b24fe45816d54e93c7cfc76 100644 +index 39bf307e3fd3c5333192e132b4cb56355444eacc..d39d3980235a022ee79b20eb5ed63fd63cd27522 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4406,6 +4406,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4436,6 +4436,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } @@ -19,7 +19,7 @@ index 8add0fa430b193a9a8267dd53bdf416aedbc495b..6c90cbbb93231b265b24fe45816d54e9 + // Purpur end + public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { - if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip + 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 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308bbb8ccf8 100644 @@ -39,7 +39,7 @@ index 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308 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 e3dbf3066337a482460238f8a94d854cf88adfa2..5c70aa2ce1a9e89c8c271201b6755ea1325058ac 100644 +index 67d595f75e0c3bffdb27b85b25ccd1f0bf1427d5..4d0c524af87d05dbd4a923ad6c40e1f26149e921 100644 --- a/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java @@ -374,4 +374,10 @@ public class AABB { diff --git a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch similarity index 96% rename from patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch index 1ecc6916a..0263d28ae 100644 --- a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch @@ -5,7 +5,7 @@ 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 c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a8c3aa979 100644 +index 590cd053a1b1c2a489772a2879998725fe0d783c..ba3f79cc1f7e672f0a9d32d262122ec6eba22b97 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java @@ -34,7 +34,7 @@ public class PortalShape { diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0084-Entities-can-use-portals-configuration.patch similarity index 90% rename from patches/server/0086-Entities-can-use-portals-configuration.patch rename to patches/server/0084-Entities-can-use-portals-configuration.patch index 0ed47ca60..647dbbb6e 100644 --- a/patches/server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0084-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6c90cbbb93231b265b24fe45816d54e93c7cfc76..725f7d22c67f571f9794cef6d2bc856d6f88ecb5 100644 +index d39d3980235a022ee79b20eb5ed63fd63cd27522..9907c10091b0f02c43cfd2d4b0d0953b91cbb070 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3125,7 +3125,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3142,7 +3142,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 6c90cbbb93231b265b24fe45816d54e93c7cfc76..725f7d22c67f571f9794cef6d2bc856d if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3830,7 +3830,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3851,7 +3851,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { diff --git a/patches/server/0087-LivingEntity-broadcastItemBreak.patch b/patches/server/0085-LivingEntity-broadcastItemBreak.patch similarity index 85% rename from patches/server/0087-LivingEntity-broadcastItemBreak.patch rename to patches/server/0085-LivingEntity-broadcastItemBreak.patch index cdd11f165..9ff14ab17 100644 --- a/patches/server/0087-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0085-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 841426fd4ea86c2f44309682a5fcbe3a39102b59..06c4647593334842217549e3266d4d6c9da81365 100644 +index a8f5f8f05973523945941e55c0c28e1e546a6a1f..93d8f8495a043efdbc763e1a35fd0ed86da5120e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1126,5 +1126,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1131,5 +1131,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0086-Customizable-wither-health-and-healing.patch similarity index 94% rename from patches/server/0088-Customizable-wither-health-and-healing.patch rename to patches/server/0086-Customizable-wither-health-and-healing.patch index 3d5d57598..f1c6b7254 100644 --- a/patches/server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0086-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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 e6d6341f895c763fee05db3a7a7e05a68b9d36e9..8796b779ac0550e32c7313b1280278de48070baf 100644 +index 8dc320e1b5bdb042d87d4d0f6380ca19bf50a1f3..61abb5ac7de7a71d7d652b134e3b75551a14961d 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 -@@ -525,8 +525,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -518,8 +518,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } diff --git a/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch similarity index 95% rename from patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch index 98a341d23..43620fb3b 100644 --- a/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0087-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 c0f11d06e077c41d65b25396a14a4d81a39993e2..8824d5e4b6d0ab504dd80b0cceef743b456d7e2e 100644 +index 231d4065b1129815d443e76269eefba45857b59a..361037daa20a2b262b68d9b717ee35dbc8a5c41b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -707,7 +707,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -709,7 +709,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -59,7 +59,7 @@ index 8385eb1d60f377da94e3178ab506feefb43563fd..a5443f92786427c42092aec8350e7ab3 if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, 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 2495cf8d28a2f11ddd1efefd6d772fccf1e488ba..8b1b424a61397f7e3c002611de961718046f0149 100644 +index 7eb0e5512a2aa78e7dca727384656781760d57c0..320c04ee1423b5964f8ee023fc1bf76913c745e4 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 { diff --git a/patches/server/0090-Raid-cooldown-setting.patch b/patches/server/0088-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0090-Raid-cooldown-setting.patch rename to patches/server/0088-Raid-cooldown-setting.patch index 15742d765..160b701ef 100644 --- a/patches/server/0090-Raid-cooldown-setting.patch +++ b/patches/server/0088-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1 if (!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 8b1b424a61397f7e3c002611de961718046f0149..bcee031a53e24a6c3731c2e0555f53ad2c5d81e8 100644 +index 320c04ee1423b5964f8ee023fc1bf76913c745e4..4bc033a3ce290b9bb64412042c642eabce2a0a5d 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 { diff --git a/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch similarity index 96% rename from patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch index 4f958f567..2fa3f7291 100644 --- a/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ 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 bcee031a53e24a6c3731c2e0555f53ad2c5d81e8..472f3cb5775aed6d902928b9dafe99a139d475d5 100644 +index 4bc033a3ce290b9bb64412042c642eabce2a0a5d..ba055361b27c83fd27e5347c26752e8f88d35793 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -286,6 +286,39 @@ public class PurpurWorldConfig { diff --git a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 97% rename from patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 6aaa898e0..7f6e878c5 100644 --- a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -20,7 +20,7 @@ index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952 ignored.add("goal_selector_1"); ignored.add("goal_selector_2"); diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c2e2a5e00 100644 +index ebfbf67d65dc5a54e9235f44ab391147c23ddd0f..162ecea875d99115cdd742524ce65ee74cc0d47e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -45,7 +45,7 @@ index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c 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 8a30b101fd2cc78b867ae703f6a4e8805d1c841d..6d7b5cf3db81c4e42dda17757125d4a1c83c8c59 100644 +index 52f2d2df03314c8ddf70b240dca82cafa44c6b07..624e4007f031b5781e34f4cb6614e8c767999ee2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -157,7 +157,19 @@ public class Zombie extends Monster { diff --git a/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 90% rename from patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch index c0c6e71ef..f843e3cab 100644 --- a/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch +++ b/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..3532db21cee82c18f95c540d24b2071585d71c4e 100644 +index 7c29750e534eae4266bf7a63c50e3827401d6569..e8e9a3370ba07dc0ca47c8352f6f04a449f2268f 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -39,6 +39,7 @@ public final class Ingredient implements Predicate { +@@ -36,6 +36,7 @@ public final class Ingredient implements Predicate { @Nullable private IntList stackingIds; public boolean exact; // CraftBukkit @@ -16,7 +16,7 @@ index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..3532db21cee82c18f95c540d24b20715 public static final Codec CODEC = Ingredient.codec(true); public static final Codec CODEC_NONEMPTY = Ingredient.codec(false); -@@ -70,6 +71,12 @@ public final class Ingredient implements Predicate { +@@ -67,6 +68,12 @@ public final class Ingredient implements Predicate { } else if (this.isEmpty()) { return itemstack.isEmpty(); } else { diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/server/0092-Flying-squids-Oh-my.patch similarity index 100% rename from patches/server/0094-Flying-squids-Oh-my.patch rename to patches/server/0092-Flying-squids-Oh-my.patch diff --git a/patches/server/0095-Infinity-bow-settings.patch b/patches/server/0093-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0095-Infinity-bow-settings.patch rename to patches/server/0093-Infinity-bow-settings.patch index 3ce820a59..e4d138d9d 100644 --- a/patches/server/0095-Infinity-bow-settings.patch +++ b/patches/server/0093-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a85d4a9c2583f8233032b680c89b147a230bca41..598a9f2dae899513cf10e33c8baad5991597b55c 100644 +index 8af34a04370ebb0b62137387c7eb082443f68c5b..2122658e5f5b6d0d9019f79f6c53717f7094abc0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0096-Configurable-daylight-cycle.patch b/patches/server/0094-Configurable-daylight-cycle.patch similarity index 89% rename from patches/server/0096-Configurable-daylight-cycle.patch rename to patches/server/0094-Configurable-daylight-cycle.patch index 18b7454d5..e6ecc1728 100644 --- a/patches/server/0096-Configurable-daylight-cycle.patch +++ b/patches/server/0094-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae 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 c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046aeb8e00cb3 100644 +index 6206d19c2861996699ced5eccfff8ee8ab3a7727..de211102edf78f645d3129e690e9214b47935003 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1523,7 +1523,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 7e8816a3bd9c60844ca0fbb8674abf6c53b4d81c..02aa54fbd0605b92de9263ba852ac04e24b2fdef 100644 +index efc2accce3eada889e919c19724206eab52dd627..e1701bd63540f1672ceb821f0e37d29587847da9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -409,6 +409,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0097-Arrows-should-not-reset-despawn-counter.patch similarity index 88% rename from patches/server/0099-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0097-Arrows-should-not-reset-despawn-counter.patch index 0b60a6696..3a71241de 100644 --- a/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0097-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 8affdd74769aed9aa92a76ba539cd9d27208827c..9710d1cd31d263b29c80923c56134b1f8f6702b0 100644 +index 42ebd91196ae420eee57f4380abc558555457163..49b55db16c8c2f389fb6990b3b3ad7dc29eb10c3 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -312,7 +312,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -319,7 +319,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 8affdd74769aed9aa92a76ba539cd9d27208827c..9710d1cd31d263b29c80923c56134b1f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02aa54fbd0605b92de9263ba852ac04e24b2fdef..41d694ec386530f97044ff6aa98f4e436cadddd7 100644 +index e1701bd63540f1672ceb821f0e37d29587847da9..c0f3f52068d147ca06dbb87da51d628b56cf51e4 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/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 8833cf4fd..d809b89c6 100644 --- a/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 348f7861eebd02774717fe8668102e2586f3f771..81e22b950e5f09e0e545d44e8979437c2accc29b 100644 +index bcc864cbfb9f24ad654da1fcbf7d7c76ed494ce3..73310204ed1fa4d72d2ec6239bb6e29319bb97cd 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -117,6 +117,14 @@ public class FarmBlock extends Block { +@@ -124,6 +124,14 @@ public class FarmBlock extends Block { return; } diff --git a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch similarity index 93% rename from patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch index a8262cfeb..c635e5147 100644 --- a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index a836bfd2ea8af8098a20fb37ca25a5a613226f67..70d3dcfdc9cd21bd347fc71db3f9446c94fdb381 100644 +index f6e0eefe068fe1a9fe159b382cf94de488521728..0116f6057f7db02f9971698871bf893f2dee0939 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -149,7 +149,7 @@ public abstract class Animal extends AgeableMob { +@@ -151,7 +151,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -17,7 +17,7 @@ index a836bfd2ea8af8098a20fb37ca25a5a613226f67..70d3dcfdc9cd21bd347fc71db3f9446c final ItemStack breedCopy = itemstack.copy(); // Paper this.usePlayerItem(player, hand, itemstack); this.setInLove(player, breedCopy); // Paper -@@ -240,12 +240,20 @@ public abstract class Animal extends AgeableMob { +@@ -242,12 +242,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -42,10 +42,10 @@ index a836bfd2ea8af8098a20fb37ca25a5a613226f67..70d3dcfdc9cd21bd347fc71db3f9446c 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 a8a494df6019230f7a301176580db9eb2d552030..80b4d8d1283c03681106853fd83bf6df0392c230 100644 +index 4fc9331cda9063d6f3f13572efd7182327c7a9e4..aec194669dbb13563a83abb64df2f0b64cc64cc7 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -194,6 +194,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -197,6 +197,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -95,7 +95,7 @@ index a8a494df6019230f7a301176580db9eb2d552030..80b4d8d1283c03681106853fd83bf6df public CraftWorld getWorld() { return this.world; } -@@ -217,6 +260,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -218,6 +261,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -104,7 +104,7 @@ index a8a494df6019230f7a301176580db9eb2d552030..80b4d8d1283c03681106853fd83bf6df 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 957fb2554554be7912f434b999a9ddd31681b92a..ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194 100644 +index 30cc6cf6911fef48454a213370e4759f6f71e357..7ebc466f72e61e11e73ab20a98f72d16cea7c077 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,6 +115,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0100-Make-entity-breeding-times-configurable.patch similarity index 97% rename from patches/server/0102-Make-entity-breeding-times-configurable.patch rename to patches/server/0100-Make-entity-breeding-times-configurable.patch index 8f7fa72e9..0ddcdf597 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0100-Make-entity-breeding-times-configurable.patch @@ -22,7 +22,7 @@ index 0cc411dd39d981187c9e9a3c5eb8043b19a09b98..f7032f4ea55f5aca293c2640686238b7 // 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 70d3dcfdc9cd21bd347fc71db3f9446c94fdb381..a434d91b8dfff30cff81df964ea8149caa8cb604 100644 +index 0116f6057f7db02f9971698871bf893f2dee0939..8df8a48bd1dbbb4a6835f68bd700eac2b5acf91b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @@ -33,7 +33,7 @@ index 70d3dcfdc9cd21bd347fc71db3f9446c94fdb381..a434d91b8dfff30cff81df964ea8149c protected Animal(EntityType type, Level world) { super(type, world); -@@ -281,8 +282,10 @@ public abstract class Animal extends AgeableMob { +@@ -283,8 +284,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -47,10 +47,10 @@ index 70d3dcfdc9cd21bd347fc71db3f9446c94fdb381..a434d91b8dfff30cff81df964ea8149c 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 ee9a12a0285f43535b377e5aea2c3e9e5f64b496..cd53ac9806f80409082f394e978295fd414d745d 100644 +index 9496bf72eb4cda6c2675daabe5ad82e90d12e173..6d3e16e9fb043d538b9c093fb79d092fce90d75a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -476,6 +476,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); } @@ -111,7 +111,7 @@ index d42c8bcd85ffb1e00d2883485bf22981611b0bc3..c501704251e5b23f697efc307ebdc906 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 72bdeff4cacac8669e2608ef9353318cb5fb16f0..fc4b66e0a0561fc6705a50dc65b1120301f02f77 100644 +index 88e26b2653eac1898f266b7c8f9f6e0fba422a52..fdab9a9ad76a0ad8f83ddbff278096637fd34a50 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -188,6 +188,11 @@ public class Fox extends Animal implements VariantHolder { @@ -140,7 +140,7 @@ index 72bdeff4cacac8669e2608ef9353318cb5fb16f0..fc4b66e0a0561fc6705a50dc65b11203 this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index c83e5d58ca5db1e63e099f36006043f7e78ea56f..cdf2bd4b2aa43b1d45fb0f0e8c4a14057ca39525 100644 +index f27ca76b153dc33d20dc46a57f1dda4e91e82883..09fc3c6ddf99854d43b6577b4d2d74665f32dfa3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -85,6 +85,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { @@ -346,7 +346,7 @@ index 3098f90ef97f69dbaf482ce0acd0c0c7ba3572b9..3cef040c0e8869ca2ca2cb83c8f60a0f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index fef3b7d193d20c4fdd50b38c6a0371f05165a49d..93295d9683293121f2267350194f18e97b2421c2 100644 +index e48ff5d0592f0d91974a49fd7ed1d0ee97172abe..599a980c1b66215c4430a5b11acfbc4e451f724f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -109,6 +109,11 @@ public class Goat extends Animal { @@ -426,10 +426,10 @@ index abbeb305b2d09e9c4c02ade603adac5ceb34bdd0..1de48560ac5a1db8845c98c812b2e9f9 protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index cc8813c572618700981403d513f30b8a06e4c49e..e618d3b77cafeaee22b4140449703ca80bdd4c92 100644 +index 68981762e3b71cfdf12180c9a711f22b33c471b7..76de20b86b6b99c10379adeb303fac4371891923 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -53,6 +53,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -57,6 +57,11 @@ public class SkeletonHorse extends AbstractHorse { return generateSpeed(this.level().purpurConfig.skeletonHorseMovementSpeedMin, this.level().purpurConfig.skeletonHorseMovementSpeedMax); } @@ -458,10 +458,10 @@ index 4abb9d5fedf63eba9dc3f716d44ea11806607af0..3632fcb124be8cf77d9bebf7b861a481 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index ebfd54d835cdac3f95c926b3e2e10db6170b4dd7..93c44b8cc86ca4fe0c70855d4eb71411c5a42846 100644 +index 4835950272c2a95cbcbfe3423bb83997ec6ee2c1..aaec706b7eaa6afdf7959e6dd53cc39344bb97df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -49,6 +49,11 @@ public class ZombieHorse extends AbstractHorse { +@@ -53,6 +53,11 @@ public class ZombieHorse extends AbstractHorse { return generateSpeed(this.level().purpurConfig.zombieHorseMovementSpeedMin, this.level().purpurConfig.zombieHorseMovementSpeedMax); } @@ -506,7 +506,7 @@ index 9b853fd05a3a851cb08d7f849b51f2b220780982..10136a5062d154456c962e7d1a99c2de BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 22788892f7286f3fa6b40059b2bedaf0c6ec5ef3..80f91a11c04763c1c9ed2bd242b88b5a473560d7 100644 +index 3a98f2fab709cd83f853f59a5678fdd4b7bd70d3..e2c26768fe87ee6a8e4dada7280c09a6e5210503 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -91,6 +91,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { diff --git a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 90% rename from patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch index 08750963b..7afe94dbe 100644 --- a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 14424afdb708df7f93caf6df45412ec721b5e1dd..a164e13ddfe64b212fc5937b455096287d3151d8 100644 +index b9bb4745cf540b5720259b009e973633647c36c6..1bb58a662f885670e3104e30c7ff0160198ceeed 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -619,7 +619,7 @@ public class ArmorStand extends LivingEntity { +@@ -606,7 +606,7 @@ public class ArmorStand extends LivingEntity { private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(DamageSource damageSource) { // Paper ItemStack itemstack = new ItemStack(Items.ARMOR_STAND); @@ -19,10 +19,10 @@ index 14424afdb708df7f93caf6df45412ec721b5e1dd..a164e13ddfe64b212fc5937b45509628 } 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 759ecd79534a7706f7d4a63eb9dacbefcfe54674..182faba889dc15a3500c5919cad8a5483a53033a 100644 +index 69912c5b300b67394dce3876d2d96872033cf156..d728dc8a9b5fa2de0a824aaf132ee15db090b02e 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -273,7 +273,13 @@ public class ItemFrame extends HangingEntity { +@@ -268,7 +268,13 @@ public class ItemFrame extends HangingEntity { } if (alwaysDrop) { @@ -57,24 +57,24 @@ index 03c065d0ad97d29f3586ba2bf3cd207b867ed634..62cdc36a21c0203ed98d2946a1efdf54 } 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 96f4ef06d16483bd4bb88cc36207d5bdc4bd1280..c314febb75a85ef12051bde392c5b57e9c5d85ac 100644 +index 960bada23cb89a7f270d1ee24d62f2bc108522af..7e9c88efd2a1edea673d1ef81635c2891a04d30e 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -242,7 +242,13 @@ public class Boat extends Entity implements VariantHolder { - } +@@ -968,7 +968,13 @@ public class Boat extends VehicleEntity implements VariantHolder { - protected void destroy(DamageSource source) { -- this.spawnAtLocation((ItemLike) this.getDropItem()); + @Override + public ItemStack getPickResult() { +- return new ItemStack(this.getDropItem()); + // Purpur start + final ItemStack boat = new ItemStack(this.getDropItem()); + if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { + boat.setHoverName(this.getCustomName()); + } -+ this.spawnAtLocation(boat); ++ return boat; + // Purpur end } - @Override + public static enum Type implements StringRepresentable { diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java index 7cffc64573008502bdd14ae4906fe51166b12fb3..1feafdbb48cf760cb6ebf95d5be2c32bdb1ad44f 100644 --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java @@ -95,10 +95,10 @@ index 7cffc64573008502bdd14ae4906fe51166b12fb3..1feafdbb48cf760cb6ebf95d5be2c32b world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F); entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer()); diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java -index aec7ac31a35b1cc81f40b3fbeb5cf95c0f2c8a6c..cbcd35e60a2c344c83978abf0b94c2120ff53dee 100644 +index 67a5a201d0b26ca7b27e6d0c3ffb9f8b6e16bce0..ec3d60b561de45349b705b7f14592be930af4b91 100644 --- a/src/main/java/net/minecraft/world/item/BoatItem.java +++ b/src/main/java/net/minecraft/world/item/BoatItem.java -@@ -69,6 +69,11 @@ public class BoatItem extends Item { +@@ -71,6 +71,11 @@ public class BoatItem extends Item { entityboat.setVariant(this.type); entityboat.setYRot(user.getYRot()); @@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48de43f61f90e2610e04d04803b374cead07f655..6f08b0556b0c8e4d4547ee7982c083972a8e1043 100644 +index 569a09a73c9d800e78a77c430494292457453ab1..82d7028c1fc2ddfbb8bbcee9205375f4807c8e25 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 05866acfb..5874d723d 100644 --- a/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..7cc6812bf6f2ba015f65fd1fc1eaac02 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6f08b0556b0c8e4d4547ee7982c083972a8e1043..28584fe38e7eebf6c4a4e5e84ff064db18067d63 100644 +index 82d7028c1fc2ddfbb8bbcee9205375f4807c8e25..725c942c6c9b26c9fa0b3aeb65f51a34996f72d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 89% rename from patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index fb4ad129e..805305067 100644 --- a/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index ebef4f39af4928ed5bd206a82aa0e3992e67db78..aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b 100644 +index 6f7f4dd703a6a2cf2d90102b23538bb2104fb464..2566cabec8ede95d2b7ea7c063ae9cb8a1a0bdf1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -501,7 +501,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -495,7 +495,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -21,7 +21,7 @@ index ebef4f39af4928ed5bd206a82aa0e3992e67db78..aecccc96a1ea7fbd774a4ccbd45c11be private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28584fe38e7eebf6c4a4e5e84ff064db18067d63..da8485add57441b426a526cde2a83fd7d0cd8d22 100644 +index 725c942c6c9b26c9fa0b3aeb65f51a34996f72d3..b2c8ec43768c1a3243bca0998350400d8ea51b89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -833,6 +833,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0106-Add-configurable-snowball-damage.patch b/patches/server/0104-Add-configurable-snowball-damage.patch similarity index 95% rename from patches/server/0106-Add-configurable-snowball-damage.patch rename to patches/server/0104-Add-configurable-snowball-damage.patch index fc62adeca..6a739bed7 100644 --- a/patches/server/0106-Add-configurable-snowball-damage.patch +++ b/patches/server/0104-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da8485add57441b426a526cde2a83fd7d0cd8d22..d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70 100644 +index b2c8ec43768c1a3243bca0998350400d8ea51b89..06558480c2f3b9b1e81ba48fe7c7a80ea5652599 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -350,6 +350,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch similarity index 86% rename from patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch index a78775c65..9e3c2f351 100644 --- a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 19688acdd615068b37b928c3608074c5607919ec..dd75a1115d02506f1e99688817cb724b22b3e696 100644 +index b98bf8243e8014f8ef4aa0cfaddf301b997397cc..9794b8262028db136e7282c5451e18b7f5d70f88 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1303,7 +1303,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1298,7 +1298,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); @@ -18,7 +18,7 @@ index 19688acdd615068b37b928c3608074c5607919ec..dd75a1115d02506f1e99688817cb724b } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70..ed11a1ca61ef0401936cd612e463a2ad4111585f 100644 +index 06558480c2f3b9b1e81ba48fe7c7a80ea5652599..d1792d16fe745c22a2408ca7b6446348563e5b63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -156,8 +156,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Add-boat-fall-damage-config.patch b/patches/server/0106-Add-boat-fall-damage-config.patch similarity index 95% rename from patches/server/0108-Add-boat-fall-damage-config.patch rename to patches/server/0106-Add-boat-fall-damage-config.patch index 3159d85b8..01f2bb01b 100644 --- a/patches/server/0108-Add-boat-fall-damage-config.patch +++ b/patches/server/0106-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e919fdda8b3f4012a3b48f75210513188a00cbcf..ccde38369c07f4f1760ca2a6d76c54c148521643 100644 +index f1260f9d4bd386c1bfddf977dc47a41082bce4f2..16058e98dbe426791637682316cf0b11160d30f1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1107,7 +1107,16 @@ public class ServerPlayer extends Player { +@@ -1111,7 +1111,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { diff --git a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/server/0109-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0107-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/server/0110-EMC-Configurable-disable-give-dropping.patch b/patches/server/0108-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0110-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0108-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 1649f9496..59acbaf7b 100644 --- a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,10 +136,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index cf4950ae95e18f64856e4bce8e70772268f3fa3a..339918b33e825f20a174981c9d5fbda95f4706e7 100644 +index ee8661840ddfbdf4a4726f96da61253a96878dfc..192e6af840ce939fd8e008a80ee0c6ad43cb51e6 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index cf4950ae95e18f64856e4bce8e70772268f3fa3a..339918b33e825f20a174981c9d5fbda9 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -979,6 +979,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -977,6 +977,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { diff --git a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 100% rename from patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch diff --git a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 100% rename from patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch diff --git a/patches/server/0114-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch similarity index 100% rename from patches/server/0114-Configurable-default-collar-color.patch rename to patches/server/0112-Configurable-default-collar-color.patch diff --git a/patches/server/0115-Phantom-flames-on-swoop.patch b/patches/server/0113-Phantom-flames-on-swoop.patch similarity index 95% rename from patches/server/0115-Phantom-flames-on-swoop.patch rename to patches/server/0113-Phantom-flames-on-swoop.patch index 74e54c201..b9427eaa1 100644 --- a/patches/server/0115-Phantom-flames-on-swoop.patch +++ b/patches/server/0113-Phantom-flames-on-swoop.patch @@ -17,7 +17,7 @@ index 6849b2ad3b2db840a1af35ef069490506449c861..0f13a3f38760f1117bd545702db7a5b1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96d21c69da492eb6646e3cc71029cbe6208c6406..e7a9a9c1a5261076f810d58a7be137354ac14d1a 100644 +index 9df131e8e3c14aedfafa491b4765dc05f468d01f..6bd5bcebc0d5a080ebc5d711fb7a942576a26f9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1299,6 +1299,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 86% rename from patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch index b843cf0e6..162131e17 100644 --- a/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for chests to open even with a solid block on top diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java -index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff7709741c10 100644 +index 9804ee2020e5cef23d3f5174d153fc149e611503..3a5e5cf88c5592e1bc3e6dc9eced2d1dd47bd145 100644 --- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java -@@ -355,6 +355,7 @@ public class ChestBlock extends AbstractChestBlock implements +@@ -358,6 +358,7 @@ public class ChestBlock extends AbstractChestBlock implements } private static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) { @@ -17,7 +17,7 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7a9a9c1a5261076f810d58a7be137354ac14d1a..74a210a911211d38be77a6d00a0c032c14f48aad 100644 +index 6bd5bcebc0d5a080ebc5d711fb7a942576a26f9c..ef40f177856981c16c667c202480591ad1334109 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -419,6 +419,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0115-Implement-TPSBar.patch similarity index 94% rename from patches/server/0117-Implement-TPSBar.patch rename to patches/server/0115-Implement-TPSBar.patch index fdef05c8b..a502d3603 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0115-Implement-TPSBar.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 637648e03985868c1fe420f84fa778b06deb23ee..e1887523b0b6a0479544385932f54ab1de0295ae 100644 +index 575f026c086e24663b5d38222915460923937723..77cced190bd287ff3f5bc8697f16b333da0bc786 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -233,6 +233,7 @@ public class Commands { +@@ -253,6 +253,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 637648e03985868c1fe420f84fa778b06deb23ee..e1887523b0b6a0479544385932f54ab1 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cef1f7169880560a9c79667320e63d552fa4aa03..13b57942eb63b2a9460f96ec59bb9ba36fe65e04 100644 +index de211102edf78f645d3129e690e9214b47935003..e7f3034fbb3cb6c606724bb6e2a8e0102b06b56f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1008,6 +1008,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -562,6 +563,7 @@ public class ServerPlayer extends Player { +@@ -569,6 +570,7 @@ public class ServerPlayer extends Player { } } @@ -60,7 +60,7 @@ index ccde38369c07f4f1760ca2a6d76c54c148521643..0070c97ef46dff0bc8ccea4ce3815180 } @Override -@@ -628,6 +630,7 @@ public class ServerPlayer extends Player { +@@ -635,6 +637,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -68,7 +68,7 @@ index ccde38369c07f4f1760ca2a6d76c54c148521643..0070c97ef46dff0bc8ccea4ce3815180 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2775,5 +2778,13 @@ public class ServerPlayer extends Player { +@@ -2876,5 +2879,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -83,10 +83,10 @@ index ccde38369c07f4f1760ca2a6d76c54c148521643..0070c97ef46dff0bc8ccea4ce3815180 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index d4d7493569ecf3eb9456b4005f269b94fe08941e..1774b424620863d2fd1f6353b3ce7e9b0fc0e132 100644 +index e46fcb5c8bf1047e3f330fd525166aee5f0b646b..61a34f3e49b21254984011bc470d72c86d55dba1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -488,6 +488,7 @@ public abstract class PlayerList { +@@ -486,6 +486,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end @@ -94,7 +94,7 @@ index d4d7493569ecf3eb9456b4005f269b94fe08941e..1774b424620863d2fd1f6353b3ce7e9b // CraftBukkit - Moved from above, added world PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -601,6 +602,7 @@ public abstract class PlayerList { +@@ -599,6 +600,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end diff --git a/patches/server/0118-Striders-give-saddle-back.patch b/patches/server/0116-Striders-give-saddle-back.patch similarity index 100% rename from patches/server/0118-Striders-give-saddle-back.patch rename to patches/server/0116-Striders-give-saddle-back.patch diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0117-PlayerBookTooLargeEvent.patch similarity index 92% rename from patches/server/0119-PlayerBookTooLargeEvent.patch rename to patches/server/0117-PlayerBookTooLargeEvent.patch index ecf70b9c5..74393e412 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0117-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 93b81303c6f5a009af7c282435671fd05ca68499..8ed7699d2f8b636cce023c1afe0e196c8361725c 100644 +index c58ede27583fa14fffcc8554d58bb47a94886e40..5ab5c85a4c3d03dba2a3943462ccff0a3e725555 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1149,10 +1149,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1153,10 +1153,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -24,7 +24,7 @@ index 93b81303c6f5a009af7c282435671fd05ca68499..8ed7699d2f8b636cce023c1afe0e196c server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1176,6 +1181,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1180,6 +1185,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch similarity index 94% rename from patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch index 05957c47a..934747f2b 100644 --- a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index dd7e47ddde00e0b4f3b9833c1793246547ba0cf2..a21feaa31c6aa3c7f2198b3b4a84af101aa16988 100644 +index fad32d590828fe2f9acec80c76a452c1fd7f4005..2cd998414287b3bc2412c0bbd2f6244e7fedb331 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -367,6 +367,16 @@ public abstract class Player extends LivingEntity { @@ -26,7 +26,7 @@ index dd7e47ddde00e0b4f3b9833c1793246547ba0cf2..a21feaa31c6aa3c7f2198b3b4a84af10 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a877974c3b3336ae49da1bcf56b66427d1748c35..be24ad68043d014d23879dfe4730c582a7b81689 100644 +index 810745ee8b2f3dedf50533e31000ed29c2929718..88609510c379d0e7d94f3d821f828ed0313a9fe3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -295,6 +295,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch similarity index 100% rename from patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename to patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 95% rename from patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch index 5fead2498..9712c8f0f 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 8f12325c79d16d2bdce2e6f07909f9f200d708e5..98e395f13a327967fe6ed8b7044a48903cf34eaa 100644 +index d512d16abc1dff33e9b430d9ba5b960f1460f9ab..ae3be8f490a245a76a76a85d12ba26906c499981 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1810,7 +1810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1795,7 +1795,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 8f12325c79d16d2bdce2e6f07909f9f200d708e5..98e395f13a327967fe6ed8b7044a4890 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index dd75a1115d02506f1e99688817cb724b22b3e696..54d1e9c9d98bbf8f408c3c9906d76c662ab2c90e 100644 +index 9794b8262028db136e7282c5451e18b7f5d70f88..ab459c32467e67b1a813ecdc56a12e2372e03faa 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -703,7 +703,7 @@ public abstract class Mob extends LivingEntity implements Targeting { public void aiStep() { super.aiStep(); this.level().getProfiler().push("looting"); @@ -57,7 +57,7 @@ index a85885ee51df585fa11ae9f8fcd67ff2a71c5a18..d81509e08e70ec5b2f837c9dc66b1254 @Override diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index 93bbda61f0eb2dd52573602b1f9cc7b031d1fc5a..63f9e5e2490e5b2fec6f2395077e21e601804ca5 100644 +index 4e2c23ccdf4e4a4d65b291dbe20952bae1838bff..0da884a833f6c707fea512e826658c3bb73f7a77 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java @@ -74,7 +74,7 @@ public class EatBlockGoal extends Goal { @@ -92,7 +92,7 @@ index 509317a26c79f453335df1c19dc4c9ec570046af..8e4d673e4f2d7f50ea5ed13794da08b1 } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index fc4b66e0a0561fc6705a50dc65b1120301f02f77..cf58894de9804770ba1722e2c0b727d3a637bf9f 100644 +index fdab9a9ad76a0ad8f83ddbff278096637fd34a50..fc3ec667aa2b8c3fe537cda0aeddd2192c0bbedf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder { @@ -131,10 +131,10 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a5b2af9d56e4efece7161d25dbc88f343ef233cc..39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23 100644 +index e28e25b0563bb6022ad1fb49f1c46fe619b65602..2a0e45b9580b73c453aba02f822f10bd3a1f7c9d 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -603,7 +603,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -605,7 +605,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index a5b2af9d56e4efece7161d25dbc88f343ef233cc..39d7fe20ef5b3ca34a72a50bb8d9c35a // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 84bd2cf1797f68eadbd0a21f2cfb6ce85710d928..bd4658651ba8bccdc5b8a7d59e70e527942615dd 100644 +index 61abb5ac7de7a71d7d652b134e3b75551a14961d..16c88fc3c865652496f0ecf6b7e92a97d20eeb00 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -485,7 +485,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -157,10 +157,10 @@ index 84bd2cf1797f68eadbd0a21f2cfb6ce85710d928..bd4658651ba8bccdc5b8a7d59e70e527 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e911902b23 100644 +index 2566cabec8ede95d2b7ea7c063ae9cb8a1a0bdf1..c17a01a995eb3fe46403f241effec86694ad0eaf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -543,7 +543,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e9 } @Override -@@ -595,7 +603,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -589,7 +597,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -195,10 +195,10 @@ index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e9 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 86999c7932216871b4b6e06d68168e3b48038a18..fbcb6b4cf4234d6eba989210012ab360c1b323a4 100644 +index 30a04ea1f66fe5dbbae27a48764e4bd0f66bf0b1..a7e77eae357e0fd146f340f8c3981f1a0d705b32 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -345,7 +345,7 @@ public class Evoker extends SpellcasterIllager { +@@ -351,7 +351,7 @@ public class Evoker extends SpellcasterIllager { return false; } else if (Evoker.this.tickCount < this.nextAttackTickCount) { return false; @@ -243,10 +243,10 @@ index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index d9b1bde3ce458b7e50f7645d07ee578d13006a0a..d133820c47ecda733aa8242acdb2cd3ba0f0b677 100644 +index 7c1e3bdd68433319681c67251c82c6810e69dbcb..92d90700cf06ac06b6c13abc78f6dc771e11bd7a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -424,7 +424,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -423,7 +423,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ItemStack stack) { @@ -284,17 +284,18 @@ index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e8303 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index cd0629581bae5f805842157af36c2d838e01bee3..b0a559dfefac693bda8692a30fbaa5ac8062ef27 100644 +index 2f058cec80c6ef7a5a5ca065dc6c9fe353c521de..e8036e3b124b9357a54a0f30e8610cbd885f5644 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -326,6 +326,6 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -304,7 +304,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); - return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.purpurConfig.projectilesBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); } - } + + public boolean mayBreak(Level world) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java index 9d43c8520953d6fe0d0948f9dbe14e0650ee01c2..deee9fffe6981d7e728621cc799a812d78000592 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -322,10 +323,10 @@ index cdbc925ef61b8b439415f0a89368227890bcecb2..300411e88cdaef7e0ce280edbd5f18fa if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 6365ddea0c23bc5d4009d98915f2b39aed2a0328..c7ba8503b2722e5d9ce0699b959cd6be01128055 100644 +index 9550ce8588c6aa3ba4cbbbb86912eae2b452eb01..059582e872f9f3c47187e12dbe174541aa934787 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java -@@ -172,7 +172,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { +@@ -179,7 +179,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @Override public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper @@ -335,10 +336,10 @@ index 6365ddea0c23bc5d4009d98915f2b39aed2a0328..c7ba8503b2722e5d9ce0699b959cd6be } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 81e22b950e5f09e0e545d44e8979437c2accc29b..84daad72bfd5f2bf29c5f2b75b6699a27ff43b5a 100644 +index 73310204ed1fa4d72d2ec6239bb6e29319bb97cd..bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -103,7 +103,7 @@ public class FarmBlock extends Block { +@@ -110,7 +110,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -348,10 +349,10 @@ index 81e22b950e5f09e0e545d44e8979437c2accc29b..84daad72bfd5f2bf29c5f2b75b6699a2 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -index e6fcea4482d5d87ed78beefad4c57bc86089460f..1626eb90a6b348ad9735b82452f52d4560075a03 100644 +index f579911b06b66e94e6311d970e93cca33fa089c6..2c63579226409a1823d2e8990e7ffc4250b83afb 100644 --- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -@@ -73,7 +73,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { +@@ -80,7 +80,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { if (!world.isClientSide) { // CraftBukkit start if (entity.isOnFire() && entity.mayInteract(world, pos)) { @@ -361,10 +362,10 @@ index e6fcea4482d5d87ed78beefad4c57bc86089460f..1626eb90a6b348ad9735b82452f52d45 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 18feb559f9fd157dd4a01faf2b2bb18df2a64675..9c834e3deed07eb70e6a57df2db732c1e2334737 100644 +index f5eb45df4f2c9914e1780bb10fb085713c411a4d..44bb9930313cae9d150cc08cbdcced10a35bd07d 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -213,7 +213,7 @@ public class TurtleEggBlock extends Block { +@@ -220,7 +220,7 @@ public class TurtleEggBlock extends Block { } if (entity instanceof Player) return true; diff --git a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 92% rename from patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch index 7d3285485..aec5797be 100644 --- a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -9,10 +9,10 @@ Normally, the sounds will only play when the block directly above is air. With this patch enabled, players can place any block above the Note Block and it will still work. diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index e46d84750bdd7c940f400efda226e12a3fdc3848..6343cd0c33cafb30225cfae17ea1cf15859073b1 100644 +index ff16075fbfe664c73a46bc4b002450867974114e..604053c7b5b2b7f2f1666baa3e0ce5acf3b37e46 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -@@ -87,7 +87,7 @@ public class NoteBlock extends Block { +@@ -94,7 +94,7 @@ public class NoteBlock extends Block { } private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) { @@ -22,7 +22,7 @@ index e46d84750bdd7c940f400efda226e12a3fdc3848..6343cd0c33cafb30225cfae17ea1cf15 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 499595ee7ab97559f562ecfbf4479a6b75506d9d..8c624ac93c3a24bb472217ae89dc8c9c82192407 100644 +index 1ee8dfb7d6efea66293cfd8059b8a84a77999fb2..647b58652a87d1d1b4b022853052ea19afa80152 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch similarity index 93% rename from patches/server/0124-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0122-Add-EntityTeleportHinderedEvent.patch index 2c26ee871..4d0909fc1 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 41d7cff39fc37955877668337689b4b26cd8c7cf..f80f6da484f4144e743079e5104bf503419074b2 100644 +index c82ebcac07033d887af499f81520982fbe5ed4f1..bc73d1051749339b44ff6765162ab6a76663a628 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -@@ -46,6 +46,14 @@ public class EndPortalBlock extends BaseEntityBlock { +@@ -54,6 +54,14 @@ public class EndPortalBlock extends BaseEntityBlock { public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper if (world instanceof ServerLevel && entity.canChangeDimensions() && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { @@ -36,10 +36,10 @@ index 41d7cff39fc37955877668337689b4b26cd8c7cf..f80f6da484f4144e743079e5104bf503 ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index a6ab0d0defc05e56a91084c49897059670a1324b..2c085c4a154cb0f8a1d38453f43474a764398784 100644 +index ee998d06804e344ea9d5b84ef0074b84aaba04c2..c51ac562d642061ce60db66ae9a86eecd9d85ecb 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -84,6 +84,14 @@ public class NetherPortalBlock extends Block { +@@ -92,6 +92,14 @@ public class NetherPortalBlock extends Block { public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper if (entity.canChangeDimensions()) { @@ -74,10 +74,10 @@ index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55f blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 4c5d6e37f7d56436119278bbfad503867d9ccddb..b636553c33b8a09c9d92ff8f355affe05e1579cf 100644 +index fed6671e518b2f1601bbf4154195a844fc3b0fd1..669405e0a38adc5336aa004011544346c44bc5bc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -600,6 +600,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -607,6 +607,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -89,10 +89,10 @@ index 4c5d6e37f7d56436119278bbfad503867d9ccddb..b636553c33b8a09c9d92ff8f355affe0 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e1efdda967847af492f069861ef19dd307bc76a1..a4aed376b8c66dc251cdbaa98a067c26694c4b8d 100644 +index 62e5bdd889392f6e2da73d093ff77ac355a4ea3c..6413d01dbdabb2f9d9507403dca92391e9dc08bc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1363,6 +1363,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1375,6 +1375,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0125-Farmland-trampling-changes.patch b/patches/server/0123-Farmland-trampling-changes.patch similarity index 95% rename from patches/server/0125-Farmland-trampling-changes.patch rename to patches/server/0123-Farmland-trampling-changes.patch index e8a8d4cca..66bbf3c24 100644 --- a/patches/server/0125-Farmland-trampling-changes.patch +++ b/patches/server/0123-Farmland-trampling-changes.patch @@ -12,10 +12,10 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 84daad72bfd5f2bf29c5f2b75b6699a27ff43b5a..84107011175b6e58b463d5d1b716a3262be0db77 100644 +index bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d..5c93cf7f97ecf4fba2c905b293ca7d21d1424f30 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -118,12 +118,20 @@ public class FarmBlock extends Block { +@@ -125,12 +125,20 @@ public class FarmBlock extends Block { } // Purpur start diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0124-Movement-options-for-armor-stands.patch similarity index 86% rename from patches/server/0126-Movement-options-for-armor-stands.patch rename to patches/server/0124-Movement-options-for-armor-stands.patch index 7d43f24db..85f9bf338 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0124-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 95fecfaaffe6c7b6a46490518917285ea8551c05..bfd8eb90479bdb1cad6343c04995788b31b3e05c 100644 +index 9907c10091b0f02c43cfd2d4b0d0953b91cbb070..da036cb4be83301a22c9f5af9c7f1439a9347799 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1870,7 +1870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1863,7 +1863,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } @@ -30,7 +30,7 @@ index 95fecfaaffe6c7b6a46490518917285ea8551c05..bfd8eb90479bdb1cad6343c04995788b if (entity instanceof Boat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 3238e9e8bfff4dc33247d8bf29d408f262e4172e..aa2b21c2f96b096499cf9d8e077a0aed1ea6f654 100644 +index 1bb58a662f885670e3104e30c7ff0160198ceeed..5332e072e3c278a1d9769feb783b9419020a36d1 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { @@ -46,16 +46,16 @@ index 3238e9e8bfff4dc33247d8bf29d408f262e4172e..aa2b21c2f96b096499cf9d8e077a0aed this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); this.headPose = ArmorStand.DEFAULT_HEAD_POSE; -@@ -1025,4 +1027,18 @@ public class ArmorStand extends LivingEntity { +@@ -1005,4 +1007,18 @@ public class ArmorStand extends LivingEntity { + } } // Paper end - // Paper end + + // Purpur start + @Override + public void updateInWaterStateAndDoWaterCurrentPushing() { + if (this.level().purpurConfig.armorstandWaterMovement && -+ (this.level().purpurConfig.armorstandWaterFence || !(level().getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock))) ++ (this.level().purpurConfig.armorstandWaterFence || !(level().getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock))) + super.updateInWaterStateAndDoWaterCurrentPushing(); + } + @@ -66,7 +66,7 @@ index 3238e9e8bfff4dc33247d8bf29d408f262e4172e..aa2b21c2f96b096499cf9d8e077a0aed + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a27a2fb4d9643ed0d2cb4bbad8c09052978e123c..4352f37b8568c7e9ce8cce66c2a1b36d6d9f8520 100644 +index 87daca07c8f22475921fb8ee968e3d5bfbb0a41c..08136dfa12437d4d4bf7b5d3d9404db671e6925c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0125-Fix-stuck-in-portals.patch similarity index 90% rename from patches/server/0127-Fix-stuck-in-portals.patch rename to patches/server/0125-Fix-stuck-in-portals.patch index 78760201e..b67ed1e11 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0125-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0070c97ef46dff0bc8ccea4ce3815180916d974e..0b8a6290f7a7efbeb4433a066a0f8878adcd4467 100644 +index 3349082af08600894fbca04533f9ab4a9bf2dfd9..c63502c452c3804fafe31fe4daf2aed8f16427a0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1266,6 +1266,7 @@ public class ServerPlayer extends Player { +@@ -1270,6 +1270,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 0070c97ef46dff0bc8ccea4ce3815180916d974e..0b8a6290f7a7efbeb4433a066a0f8878 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8084b3b135257441c919a627e70849b9f2199e37..3c3f919a468435ee327e3569849f4194ef214b57 100644 +index da036cb4be83301a22c9f5af9c7f1439a9347799..93c4f2ccf556a52e5bc951291f847f53d056c2b0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3122,12 +3122,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3139,12 +3139,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch similarity index 97% rename from patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch index f66339a28..543dbfda2 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch @@ -21,10 +21,10 @@ index 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e29 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index c283900e6c43fda62428a6e6d8b70e512458e779..c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25 100644 +index 6aec149f450e0559c613dcc272ba48634d0083c0..0ed3d4f4cb9e2d11391c39633267becfd457102d 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -276,6 +276,11 @@ public class Bat extends AmbientCreature { +@@ -280,6 +280,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level().purpurConfig.batAttackKnockback); } @@ -37,7 +37,7 @@ index c283900e6c43fda62428a6e6d8b70e512458e779..c3d1d77a5703db4e1e3eb38fdd0b8903 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 cd53ac9806f80409082f394e978295fd414d745d..baeea251e8f6a23bbd41987fffeb60bac157c363 100644 +index 6d3e16e9fb043d538b9c093fb79d092fce90d75a..0db5e35b8e4a186c8ef150a1b0f072e10573136e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -180,7 +180,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -49,7 +49,7 @@ index cd53ac9806f80409082f394e978295fd414d745d..baeea251e8f6a23bbd41987fffeb60ba this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -481,6 +481,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -488,6 +488,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeBreedingTicks; } @@ -126,7 +126,7 @@ index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 3f41698deb5b1d837832285e087aa0f82f16cd59..5533b667b983fe6f2375ca8f21c8580dc373628a 100644 +index ff11643193495f0646de4bcf13b7f1e57731e4fb..75585a6b275fafbc5ef112d9de4926b77fcb3781 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -163,6 +163,11 @@ public class Dolphin extends WaterAnimal { @@ -142,7 +142,7 @@ index 3f41698deb5b1d837832285e087aa0f82f16cd59..5533b667b983fe6f2375ca8f21c8580d @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index cf58894de9804770ba1722e2c0b727d3a637bf9f..a1f13c54b7ded4b10fb4e6bd82a384d13446b62f 100644 +index fc3ec667aa2b8c3fe537cda0aeddd2192c0bbedf..c8efa4029136d0cd54a5f73f003e022511cc7c8b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { @@ -174,7 +174,7 @@ index 95ff109511c97d603aeaf9e73c49397a841fcbce..58539d29b8e2a8c0676cc574f64e7d61 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index cdf2bd4b2aa43b1d45fb0f0e8c4a14057ca39525..6b635c997a8052f6ea9b6dc39bef70000edbd782 100644 +index 09fc3c6ddf99854d43b6577b4d2d74665f32dfa3..1e51eee2c4e425c7ac0152b55a1d1376a5a5708e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -90,6 +90,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 93295d9683293121f2267350194f18e97b2421c2..26062173d137e26abdc452f7b2e0be0ee6dddfa3 100644 +index 599a980c1b66215c4430a5b11acfbc4e451f724f..b41509e26808a025bc247fa209d3b9df10368013 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -114,6 +114,11 @@ public class Goat extends Animal { @@ -507,10 +507,10 @@ index 1de48560ac5a1db8845c98c812b2e9f9eb972123..53546e904948d03882e5f5b0a8d4256c protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index e618d3b77cafeaee22b4140449703ca80bdd4c92..1a988e2abb7c5f7dafa325f2a9d92a99be06681f 100644 +index 76de20b86b6b99c10379adeb303fac4371891923..688c87743446bdf5a9e2b830b8a47655d80f3284 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -58,6 +58,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -62,6 +62,11 @@ public class SkeletonHorse extends AbstractHorse { return 6000; } @@ -539,10 +539,10 @@ index 3632fcb124be8cf77d9bebf7b861a48196252ed0..17648925f97110f2439890388f4bfbbf public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 93c44b8cc86ca4fe0c70855d4eb71411c5a42846..9dcc47b0680227d1ada06366ca2a334535d18425 100644 +index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba4a797d48 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -54,6 +54,11 @@ public class ZombieHorse extends AbstractHorse { +@@ -58,6 +58,11 @@ public class ZombieHorse extends AbstractHorse { return 6000; } @@ -555,10 +555,10 @@ index 93c44b8cc86ca4fe0c70855d4eb71411c5a42846..9dcc47b0680227d1ada06366ca2a3345 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23..20aa7cdf10284c14a2d623aefb061b6197d66d27 100644 +index 2a0e45b9580b73c453aba02f822f10bd3a1f7c9d..f3ef0116537c660d46c17e1ccb0dcb62bc552b91 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -190,6 +190,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -192,6 +192,11 @@ public class EnderDragon extends Mob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.enderDragonMaxHealth); } @@ -571,7 +571,7 @@ index 39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23..20aa7cdf10284c14a2d623aefb061b61 return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } 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 97be7061d3cccac7b64f4b1a234ccbd83e2b7407..76f88b96e4965e61a620d8e8809411a0711bf02e 100644 +index 16c88fc3c865652496f0ecf6b7e92a97d20eeb00..138e38945fdfff919b1afabcfdf3424267027161 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 @@ -117,6 +117,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -641,7 +641,7 @@ index 5bfeb39a23a72f57523a3c2db1d79c7aef70eb02..e8191f0df3420d5a531cf226547a1777 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 64acb2e81ef65acb0d41db8b5f7c924c2e2a5e00..902f831ea001145f73691b96f2fca8245a4fc05a 100644 +index 162ecea875d99115cdd742524ce65ee74cc0d47e..a315e2fc10b9d404a92971dea6a0a5fae16d8133 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -95,6 +95,11 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -673,7 +673,7 @@ index 971210c1199ec48f28446e75d8d796a1f3f9a734..cd1f830bf28b1c68e2b9cc7daa77f696 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 51524661a62cbfe5ff7a3b7d640260e911902b23..013fd016d384f1bf94b875bc71139e0ea4e12d21 100644 +index c17a01a995eb3fe46403f241effec86694ad0eaf..145726402118057161982f5f1cf712177c81d4de 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -95,7 +95,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -711,10 +711,10 @@ index 336a22876bcf1cdfcd9d17d22f615d45c2863589..936add0eb7204af7dc507c786cb82e0d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index fbcb6b4cf4234d6eba989210012ab360c1b323a4..1ef547285cfb8e74404e4108a1403c8fda43cb1f 100644 +index a7e77eae357e0fd146f340f8c3981f1a0d705b32..db3a49a979a9d84f29228ae975133c46216bfb75 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -72,6 +72,11 @@ public class Evoker extends SpellcasterIllager { +@@ -73,6 +73,11 @@ public class Evoker extends SpellcasterIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.evokerMaxHealth); } @@ -759,7 +759,7 @@ index d014731fe352246299253bf005e23673abe091bc..ecaccb4697bf2acaa6dc9034486fcf97 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 74c4bcccb12b25eac50d061edbc2d2cb46ccb8df..93cd1129003b360ca40ad50fe849bd834a5f2a9b 100644 +index 52e2900f57979d25a62fbd23e08f5378cb6c0611..c696ffd7f4454ca79933cef04bf2b89e2a65b8cf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -99,6 +99,11 @@ public class Guardian extends Monster { @@ -775,7 +775,7 @@ index 74c4bcccb12b25eac50d061edbc2d2cb46ccb8df..93cd1129003b360ca40ad50fe849bd83 protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index ede13fe38fb97b94180ea8557d8a45d2ae5954d3..b361078339f01881ee6806049ecc2490fd5cf6bf 100644 +index a6d827b39ce9ca13103fb2f9940974e8aaaea037..f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -66,6 +66,11 @@ public class Husk extends Zombie { @@ -788,7 +788,7 @@ index ede13fe38fb97b94180ea8557d8a45d2ae5954d3..b361078339f01881ee6806049ecc2490 + } + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); + return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index 0f3e6c19e55a18cde71f3cb84c1e92b433ebcb7f..91294d87521c884c402485b923691f9fd8985353 100644 @@ -871,7 +871,7 @@ index 5aa00878c4c7be4a38137a93b1a2cf1c468422ea..0992e3729fdfa945660affb7eb7efcff protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index fde2a69f489e12d9c1ccee4522258d2746dcb2e0..69e1f7d1737a8410ff36d4226c15090e72529658 100644 +index 5bdeac3ed1bbc70d0620a548f03792e5df212629..ea09f65e89b2c683c1549146948ff4f5b5073500 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -119,6 +119,11 @@ public class Shulker extends AbstractGolem implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 6d7b5cf3db81c4e42dda17757125d4a1c83c8c59..e118cfc34b05f6d4921a0903eca70be6b68bff4f 100644 +index 624e4007f031b5781e34f4cb6614e8c767999ee2..52a576a16bfeb7dc6ec97280f9a5e0f408d71e46 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -141,6 +141,11 @@ public class Zombie extends Monster { @@ -1117,7 +1117,7 @@ index b2d77117309e81db60e7e50911247793fa829755..3574a1e641d8af34a0ff7ea8dcfb0864 public boolean jockeyOnlyBaby() { return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 80f91a11c04763c1c9ed2bd242b88b5a473560d7..d0144c99cf5c755c81fc0f9457b462c98ff3e804 100644 +index e2c26768fe87ee6a8e4dada7280c09a6e5210503..d1501c1048417defdf1766366b572f2c98989cc9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1133,7 +1133,7 @@ index 80f91a11c04763c1c9ed2bd242b88b5a473560d7..d0144c99cf5c755c81fc0f9457b462c9 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index d133820c47ecda733aa8242acdb2cd3ba0f0b677..e506dcf390ecb5cce8ae6993df7ec91b3ebc125e 100644 +index 92d90700cf06ac06b6c13abc78f6dc771e11bd7a..f9e03dc7178c76ea70e45f265d9b42f9d2fe960d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1165,10 +1165,10 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 339918b33e825f20a174981c9d5fbda95f4706e7..54897b889d053b8752fb4a4f5664e39c6a8954d3 100644 +index 192e6af840ce939fd8e008a80ee0c6ad43cb51e6..375192fbc04bd4dd5fa178bd26eaa1b00c9b58db 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } diff --git a/patches/server/0129-Config-to-always-tame-in-Creative.patch b/patches/server/0127-Config-to-always-tame-in-Creative.patch similarity index 95% rename from patches/server/0129-Config-to-always-tame-in-Creative.patch rename to patches/server/0127-Config-to-always-tame-in-Creative.patch index e3736e49f..922b23c8c 100644 --- a/patches/server/0129-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0127-Config-to-always-tame-in-Creative.patch @@ -33,10 +33,10 @@ index 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6 this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index a2c2c453c83bcc99ffebe8566f04288f01fa120a..5c7400bab81b87e908010bab6684b072c51a8adc 100644 +index 1fd962ef8bd53cd29c58509952e9d47a9d7e2020..a23d9adec5ef24f11129dff2d0da3544037898fb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -335,7 +335,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index d0717a81ae7b3c55fb47917508b456408484658b..fb6bca763fcbb249c86c1e360274d4458df19bfc 100644 +index 58175824dc315134b03b9dabfcae04e192af0b86..8d57bf9bbd1f61e6f1509c8b5cf01756ef145571 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 @@ -519,7 +519,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder EnchantmentTarget.TRIDENT; + case CROSSBOW -> EnchantmentTarget.CROSSBOW; + case VANISHABLE -> EnchantmentTarget.VANISHABLE; ++ case BOW_AND_CROSSBOW -> EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur + }; + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index ea9d99990b718beaef4bee3ff75340656f3c76c5..55963ed03a2e552636035b498cf7441bd4c3ee59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0145-Drowning-Settings.patch similarity index 91% rename from patches/server/0147-Drowning-Settings.patch rename to patches/server/0145-Drowning-Settings.patch index cfd96dfe0..1af0a0ffd 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0145-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3c3f919a468435ee327e3569849f4194ef214b57..9304dda9563cb3b5e9a8f386cc2d479ecd048f05 100644 +index 93c4f2ccf556a52e5bc951291f847f53d056c2b0..f12ad902b6add41ffd9aff19081ce4abf998effb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3371,7 +3371,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3388,7 +3388,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index 3c3f919a468435ee327e3569849f4194ef214b57..9304dda9563cb3b5e9a8f386cc2d479e public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b4834e26c297b0440f07fa38e97f928cc820fcc7..b7b936deddfbb07768befd49ccc14c5d86c06508 100644 +index e8d6b832ae9a04e4505eaf9e693454cc6e85962e..6efffa178d2f051c2d50672d861aee854f1ff874 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0148-Break-individual-slabs-when-sneaking.patch b/patches/server/0146-Break-individual-slabs-when-sneaking.patch similarity index 92% rename from patches/server/0148-Break-individual-slabs-when-sneaking.patch rename to patches/server/0146-Break-individual-slabs-when-sneaking.patch index 268b5974e..01da86043 100644 --- a/patches/server/0148-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0146-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 3b557c41fc21591fa06ead5d7d1eae871172ffa4..ea28ac7cc590aea0e3ac778e597d807412708756 100644 +index ecf0b6f30d5791f6c7097d352eafa8ecbcdf4aa8..5de06447de2ab2c45debf314aecd39722d4a7af6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -397,6 +397,7 @@ public class ServerPlayerGameMode { @@ -17,10 +17,10 @@ index 3b557c41fc21591fa06ead5d7d1eae871172ffa4..ea28ac7cc590aea0e3ac778e597d8074 // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java -index ea8c78af35b0ddc0d08adfccfc78770b867e5df6..88cfa41f90d4ad395b96fd0b69ac0bdefe06ed2d 100644 +index adc7eba4bb5e8f7c507a16cdbd7497338a7658cf..512c528e0f2f3aa0da0253698a0189415329265a 100644 --- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java -@@ -131,4 +131,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { +@@ -138,4 +138,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { return false; } } diff --git a/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 92% rename from patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch index 5ca467a70..dff5bd628 100644 --- a/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to disable hostile mob spawn on ice diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java -index e4218acaaf7d3aef0fb31f5597fb1af32aa2c8b5..01977550309451cda795583ba4122143b140b9b7 100644 +index 127a344f35e194fc7b1a0783c75291fab929fe19..d90d8539815d92143c994108efdfcc18bcb3b158 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Monster.java +++ b/src/main/java/net/minecraft/world/entity/monster/Monster.java @@ -89,6 +89,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { @@ -24,7 +24,7 @@ index e4218acaaf7d3aef0fb31f5597fb1af32aa2c8b5..01977550309451cda795583ba4122143 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c9cba09dc987651f8533b0324578472ca2d5b02..cf044d358a2f1fe4bdb9240502ab889dd7156cb2 100644 +index 0f13f4727ee854fa66df7ec9f49d33622a05e252..40afefd48f10068c48f2db6524c1c24cb5348c28 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -565,6 +565,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 92% rename from patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch index 2f0e537c3..c92cf9a43 100644 --- a/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index ba2fe129aaf25c54b624f282f8994c6a884abad8..2f64267d780fdbba1248398094bed39ed619740c 100644 +index 5332e072e3c278a1d9769feb783b9419020a36d1..1ea348b6007d8aebf1e0f29018a03eb10c445369 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -114,6 +114,7 @@ public class ArmorStand extends LivingEntity { @@ -17,7 +17,7 @@ index ba2fe129aaf25c54b624f282f8994c6a884abad8..2f64267d780fdbba1248398094bed39e public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf044d358a2f1fe4bdb9240502ab889dd7156cb2..be0d58ead54c70b5aa94732a90e15a49fe28f6a6 100644 +index 40afefd48f10068c48f2db6524c1c24cb5348c28..f023b83b2e7084ee661673080c4573c4bce9f355 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0151-Option-to-make-doors-require-redstone.patch b/patches/server/0149-Option-to-make-doors-require-redstone.patch similarity index 93% rename from patches/server/0151-Option-to-make-doors-require-redstone.patch rename to patches/server/0149-Option-to-make-doors-require-redstone.patch index e063760b9..ef3d16b84 100644 --- a/patches/server/0151-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0149-Option-to-make-doors-require-redstone.patch @@ -36,10 +36,10 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..97c20c5b89e6d7e4ed844eff39ee55df } else { DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java -index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a3072f4c490 100644 +index ed57fbcfcff29a71026b0600b02daf4178d78429..31a5d3a5642123983b8c7df49be04f25141d15a2 100644 --- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java -@@ -167,6 +167,7 @@ public class DoorBlock extends Block { +@@ -198,6 +198,7 @@ public class DoorBlock extends Block { public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -47,7 +47,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30 } else { state = (BlockState) state.cycle(DoorBlock.OPEN); world.setBlock(pos, state, 10); -@@ -270,4 +271,18 @@ public class DoorBlock extends Block { +@@ -301,4 +302,18 @@ public class DoorBlock extends Block { flag = false; return flag; } @@ -67,7 +67,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be0d58ead54c70b5aa94732a90e15a49fe28f6a6..13d2d69181ceb9c211e675c58930649bd67005ed 100644 +index f023b83b2e7084ee661673080c4573c4bce9f355..4957adad4022b244ad04c04ad87563239bcc0469 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -504,6 +504,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch similarity index 97% rename from patches/server/0152-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0150-Config-to-allow-for-unsafe-enchants.patch index 663a31152..df1cf6ba5 100644 --- a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 664cbce2e06fcb95d3d3d6c5302fc9119f938925..bc9778c705d23acd84fa1cdeff6b403b4cda3686 100644 +index 37d9c354af887c474094b1a364782007a5f2035d..ec86231077f6a1e03068507555539c5b550ddf31 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -48,7 +48,7 @@ public class EnchantCommand { @@ -74,10 +74,10 @@ index cccd34370d76d96eddeba3de1cfc41d47f9d1f60..ceac7d74f6fbe6519535357a03a0e4d1 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 191bcb10f9976b815038d73ac60c0ddd6f7ee24a..43366430f1219dc364f1bf7b8112a232f85c275f 100644 +index f6274690538d55becb9afe0d5a87213cb2e396a0..05f4670df6b45d7d9cd4ff78a0e10587f8be6f12 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1215,6 +1215,12 @@ public final class ItemStack { +@@ -1240,6 +1240,12 @@ public final class ItemStack { return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; } diff --git a/patches/server/0153-Configurable-sponge-absorption.patch b/patches/server/0151-Configurable-sponge-absorption.patch similarity index 89% rename from patches/server/0153-Configurable-sponge-absorption.patch rename to patches/server/0151-Configurable-sponge-absorption.patch index bffe9c97b..e93171c54 100644 --- a/patches/server/0153-Configurable-sponge-absorption.patch +++ b/patches/server/0151-Configurable-sponge-absorption.patch @@ -8,10 +8,10 @@ Allows the total area and radius of water blocks the sponge can absorb to be cha Co-authored by: granny diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index d810f6bf9a8a354e5b8994e51ec3672428277dde..e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8 100644 +index c4667bea0708d12e228ec2a4c84fcee7e48ca08c..6469f5e25673b4e20cf0b520b28b14b2eda9130c 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -51,7 +51,7 @@ public class SpongeBlock extends Block { +@@ -58,7 +58,7 @@ public class SpongeBlock extends Block { private boolean removeWaterBreadthFirstSearch(Level world, BlockPos pos) { BlockStateListPopulator blockList = new BlockStateListPopulator(world); // CraftBukkit - Use BlockStateListPopulator @@ -21,7 +21,7 @@ index d810f6bf9a8a354e5b8994e51ec3672428277dde..e7b19fa84d9dce28dd88a3b4adcb8357 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13d2d69181ceb9c211e675c58930649bd67005ed..2b6817d593f1f501055d57cb08be873917823b05 100644 +index 4957adad4022b244ad04c04ad87563239bcc0469..ff6c402f69072ffa781593a28fc7fa0637e7e612 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -629,6 +629,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0154-Projectile-offset-config.patch b/patches/server/0152-Projectile-offset-config.patch similarity index 98% rename from patches/server/0154-Projectile-offset-config.patch rename to patches/server/0152-Projectile-offset-config.patch index f554306cf..b6de9f1d4 100644 --- a/patches/server/0154-Projectile-offset-config.patch +++ b/patches/server/0152-Projectile-offset-config.patch @@ -83,7 +83,7 @@ index de5bdceb4c8578fb972a2fd5ee0dfdae509e46dc..bcf63ccb6e679cb97d658780b2663aaf com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(thrownPotion)) { diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf536ee9583a 100644 +index f1d6db9382bec49f61657168fe56b06784d02cf5..07695068fafd170ca88ad109d83dea93c387d794 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -77,7 +77,7 @@ public class TridentItem extends Item implements Vanishable { @@ -96,7 +96,7 @@ index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf53 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b6817d593f1f501055d57cb08be873917823b05..82dfee00977a201b14cd13a2b88a8d76e5955fca 100644 +index ff6c402f69072ffa781593a28fc7fa0637e7e612..bdac4ecd881b9469a319275f9c0f074ccffe48c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -422,6 +422,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0155-Config-for-powered-rail-activation-distance.patch b/patches/server/0153-Config-for-powered-rail-activation-distance.patch similarity index 86% rename from patches/server/0155-Config-for-powered-rail-activation-distance.patch rename to patches/server/0153-Config-for-powered-rail-activation-distance.patch index 9f5118180..f1bd34c95 100644 --- a/patches/server/0155-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0153-Config-for-powered-rail-activation-distance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for powered rail activation distance diff --git a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java -index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623bd5accdcd 100644 +index b84c48902ef24fdae17578a304e6c93dc20c5dce..e03125281767845564c48c98c3e6b6bbd269ade1 100644 --- a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -23,7 +23,7 @@ public class PoweredRailBlock extends BaseRailBlock { +@@ -30,7 +30,7 @@ public class PoweredRailBlock extends BaseRailBlock { } protected boolean findPoweredRailSignal(Level world, BlockPos pos, BlockState state, boolean flag, int distance) { @@ -18,7 +18,7 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82dfee00977a201b14cd13a2b88a8d76e5955fca..4bd01834faafc8bbfb29818063c9acd42d44a8fa 100644 +index bdac4ecd881b9469a319275f9c0f074ccffe48c2..70f29c7adf3118c63bec2d12c01a6d59c6fffa82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -615,6 +615,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0156-Piglin-portal-spawn-modifier.patch b/patches/server/0154-Piglin-portal-spawn-modifier.patch similarity index 91% rename from patches/server/0156-Piglin-portal-spawn-modifier.patch rename to patches/server/0154-Piglin-portal-spawn-modifier.patch index 3d7246463..813648a27 100644 --- a/patches/server/0156-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0154-Piglin-portal-spawn-modifier.patch @@ -18,10 +18,10 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdcd7cb333e 100644 +index c51ac562d642061ce60db66ae9a86eecd9d85ecb..673dd5cc5c83eb606aa5684b8ae14b82e0346a35 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -52,7 +52,7 @@ public class NetherPortalBlock extends Block { +@@ -60,7 +60,7 @@ public class NetherPortalBlock extends Block { @Override public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { @@ -31,7 +31,7 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4bd01834faafc8bbfb29818063c9acd42d44a8fa..b71f78d71d88e051cb12bf1cf09abb909a4d0465 100644 +index 70f29c7adf3118c63bec2d12c01a6d59c6fffa82..18143874afd0fb7b6fdc7f1471368bced0dc39d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1647,6 +1647,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Config-to-change-max-number-of-bees.patch b/patches/server/0155-Config-to-change-max-number-of-bees.patch similarity index 96% rename from patches/server/0157-Config-to-change-max-number-of-bees.patch rename to patches/server/0155-Config-to-change-max-number-of-bees.patch index fad4fde19..3d9b8cb1a 100644 --- a/patches/server/0157-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0155-Config-to-change-max-number-of-bees.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d71ad4f45 100644 +index dfd364ac4b7551a13c4c6c100b5e62c0dfb10595..312ee43ad1a35918fc359f7ebb5742004212b931 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0156-Config-for-wither-explosion-radius.patch similarity index 93% rename from patches/server/0158-Config-for-wither-explosion-radius.patch rename to patches/server/0156-Config-for-wither-explosion-radius.patch index 95b9c519a..daf8166a4 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0156-Config-for-wither-explosion-radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for wither explosion radius 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 f40ab9d5b18c189ba9b572e49243640bd44362d1..b4687453256ead43cf5288994316c7bf946b86df 100644 +index d57ef27df0a3597416564f8723b4b986413ad314..aa5ce9625bf23885a55521cbb4d994b684a5cf61 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -97,7 +97,7 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -98,7 +98,7 @@ public class WitherSkull extends AbstractHurtingProjectile { if (!this.level().isClientSide) { // CraftBukkit start // this.level().explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB); diff --git a/patches/server/0159-Gamemode-extra-permissions.patch b/patches/server/0157-Gamemode-extra-permissions.patch similarity index 95% rename from patches/server/0159-Gamemode-extra-permissions.patch rename to patches/server/0157-Gamemode-extra-permissions.patch index 8ae9938b5..43f6d91a1 100644 --- a/patches/server/0159-Gamemode-extra-permissions.patch +++ b/patches/server/0157-Gamemode-extra-permissions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 756651db912068c837197a972e95bc66ab9d4a70..106b27d507b16297a0a88b3b5beaaf3d0ef7e2c6 100644 +index ff27787313a3337e29eac6f623b08f1f333f293c..e75a5caa06a1a92a7ab4c70b1d4ab512f645022d 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -223,6 +223,19 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -217,6 +217,19 @@ public class CommandSourceStack implements ExecutionCommandSource { // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (event.message() != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { @@ -17,16 +17,16 @@ index 0b3a06027f2c600960cd88159803be187c4d0317..533a348acb53c8e7590f3d81c19e53a6 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a81b3001842971e12c98311d3cb3347f1b284fe9..934838dc695b708d0672d787887726587dc5762c 100644 +index ab259fb1e247ae53a3af57f297ebaa4ce8959ba6..3c6331f703acc59f1764f7ef474b242cfeeb63aa 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1004,6 +1004,7 @@ public class ServerPlayer extends Player { +@@ -1011,6 +1011,7 @@ public class ServerPlayer extends Player { })); - Team scoreboardteambase = this.getTeam(); + PlayerTeam scoreboardteam = this.getTeam(); + if (org.purpurmc.purpur.PurpurConfig.deathMessageOnlyBroadcastToAffectedPlayer) this.sendSystemMessage(ichatbasecomponent); else // Purpur - if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { - if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { + if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { + if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index a66c35ce86437311b38d1787c766bbe179cc5dfa..a0f45333ef049ac950295504bb7526f949dcbede 100644 diff --git a/patches/server/0162-Configurable-mob-blindness.patch b/patches/server/0160-Configurable-mob-blindness.patch similarity index 94% rename from patches/server/0162-Configurable-mob-blindness.patch rename to patches/server/0160-Configurable-mob-blindness.patch index 3ad49a35b..fde80cd3b 100644 --- a/patches/server/0162-Configurable-mob-blindness.patch +++ b/patches/server/0160-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6f6f6610c27c738db440d7be747f0be2296f2815..f7bd53e548ea2f57f697b143b58b6d2e21371366 100644 +index 6efffa178d2f051c2d50672d861aee854f1ff874..f1f225615dd4a325ea29552f58fb9a6ff982a943 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1036,6 +1036,17 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,7 +28,7 @@ index 6f6f6610c27c738db440d7be747f0be2296f2815..f7bd53e548ea2f57f697b143b58b6d2e return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 99c7e2ff1dfdb7e9bb755c6081232c1c64c96396..01b3d8263d24f6b58da087c751c001a6bd5c723c 100644 +index eeba42faac3cf16be92054bd3f04eb761e257656..1af16bbaab355022d183e71828a866686347ec0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -132,6 +132,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0163-Hide-hidden-players-from-entity-selector.patch b/patches/server/0161-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0163-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0161-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 96% rename from patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch index 5f5bf13a6..331ee36e5 100644 --- a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,7 +21,7 @@ index fd3b1e92a626402112bbd371a0ac1264a2c19c32..a8bc27c858c6ddec2ff2f84b5c1dc51c // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 01b3d8263d24f6b58da087c751c001a6bd5c723c..ae367a21e60425f5720a3532e2a6d99cafa9e33f 100644 +index 1af16bbaab355022d183e71828a866686347ec0f..59cb375fce3f2917d86617854a18dfa55766daf4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -928,6 +928,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0165-Iron-golem-calm-anger-options.patch b/patches/server/0163-Iron-golem-calm-anger-options.patch similarity index 98% rename from patches/server/0165-Iron-golem-calm-anger-options.patch rename to patches/server/0163-Iron-golem-calm-anger-options.patch index 7c2030848..371e6b3e2 100644 --- a/patches/server/0165-Iron-golem-calm-anger-options.patch +++ b/patches/server/0163-Iron-golem-calm-anger-options.patch @@ -25,7 +25,7 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae367a21e60425f5720a3532e2a6d99cafa9e33f..db9c2ac59a8a1a1659ab44420d9583d224be2c05 100644 +index 59cb375fce3f2917d86617854a18dfa55766daf4..9d03449e5d939e8dfa0ce57d89688da8bc36ee4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1386,6 +1386,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0166-Breedable-parrots.patch b/patches/server/0164-Breedable-parrots.patch similarity index 88% rename from patches/server/0166-Breedable-parrots.patch rename to patches/server/0164-Breedable-parrots.patch index eb8ed2241..831eba192 100644 --- a/patches/server/0166-Breedable-parrots.patch +++ b/patches/server/0164-Breedable-parrots.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 5c7400bab81b87e908010bab6684b072c51a8adc..364a2d9f7a77e10862c84398d5fade7e9a401dbb 100644 +index a23d9adec5ef24f11129dff2d0da3544037898fb..a3304ce24c08e4250df81a2d09098b8cbbc604bd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -227,6 +227,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { -@@ -380,13 +382,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder 0.01D) { double d20 = 0.06D; @@ -18,7 +18,7 @@ index 9d9d9cf2366441b453b66f91c53e7a0fe0c01e8f..faf449dfb4f95a300796db46833f3b6a Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e3f1a9a9518ba0942c8ef148d965dbcfc070258..09ca13ad75c972cbf92a1dfc9b3835ccc1cd11d1 100644 +index d37804b18bcb413e465a31d4dfdae8725a0b0237..69b27f8dc9b813022dc2c92f43f6f1ef6d986c99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -275,6 +275,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch similarity index 89% rename from patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch index 4f5da2768..f9d00e31d 100644 --- a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index a21feaa31c6aa3c7f2198b3b4a84af101aa16988..65c92a2feffd878c12082239b0c41444a0f21d57 100644 +index 2cd998414287b3bc2412c0bbd2f6244e7fedb331..1380a9962d1a9706b5137af8843f0e3fa082b533 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1319,7 +1319,7 @@ public abstract class Player extends LivingEntity { +@@ -1314,7 +1314,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { @@ -18,7 +18,7 @@ index a21feaa31c6aa3c7f2198b3b4a84af101aa16988..65c92a2feffd878c12082239b0c41444 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09ca13ad75c972cbf92a1dfc9b3835ccc1cd11d1..3aedf02206c4581b201e4dd0cefe0b6524e6f38b 100644 +index 69b27f8dc9b813022dc2c92f43f6f1ef6d986c99..e10690939e782e0a5cab3d5816d87906cf9898f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -372,6 +372,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch similarity index 86% rename from patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch index b187288a2..32520bfca 100644 --- a/patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable dragon egg teleporting diff --git a/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java b/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java -index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e711743c88 100644 +index 7f365143ce5c62e734eceb855ba0a02ab3a99b27..bbb266cbe23da2573d3dfb3a6edd57461988d3c5 100644 --- a/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java -@@ -42,8 +42,8 @@ public class DragonEggBlock extends FallingBlock { +@@ -49,8 +49,8 @@ public class DragonEggBlock extends FallingBlock { } private void teleport(BlockState state, Level world, BlockPos pos) { @@ -19,7 +19,7 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3aedf02206c4581b201e4dd0cefe0b6524e6f38b..2abe6192ab9caac24aae3c8488cf0ee3cb3173d7 100644 +index e10690939e782e0a5cab3d5816d87906cf9898f4..e50d8cb072acd403c285fee9a0df80e4d5946846 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -537,6 +537,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0170-Config-for-unverified-username-message.patch b/patches/server/0168-Config-for-unverified-username-message.patch similarity index 95% rename from patches/server/0170-Config-for-unverified-username-message.patch rename to patches/server/0168-Config-for-unverified-username-message.patch index fa7758c60..f340dc05a 100644 --- a/patches/server/0170-Config-for-unverified-username-message.patch +++ b/patches/server/0168-Config-for-unverified-username-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index ff2dd53e9e943aa929188fd9d4c35498b78c497a..e615e417627840d645db259bc9640a0471a52b05 100644 +index 89b3184be952fd0803520dd0f717f3acfc3cb496..8acb4ab02e57f63f4b0f3c1420d9880d9085dd33 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -296,7 +296,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -263,7 +263,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(s1)); // Spigot } else { diff --git a/patches/server/0171-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch similarity index 95% rename from patches/server/0171-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0169-Make-anvil-cumulative-cost-configurable.patch index e48a72e76..c00fd38cc 100644 --- a/patches/server/0171-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index fdf2bf10a533c3d4ee145880e6949dadf6ce5410..531b911c1bcdd3735529ee18f2bb0ccdf4ad6089 100644 +index ceac7d74f6fbe6519535357a03a0e4d1214d6a1d..27d76e0c4809d333c548379bf78ec2db083b027e 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -403,7 +403,7 @@ public class AnvilMenu extends ItemCombinerMenu { diff --git a/patches/server/0173-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0170-Bee-can-work-when-raining-or-at-night.patch similarity index 88% rename from patches/server/0173-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0170-Bee-can-work-when-raining-or-at-night.patch index 51a004388..f3846f5b8 100644 --- a/patches/server/0173-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0170-Bee-can-work-when-raining-or-at-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bee can work when raining or at night 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 baeea251e8f6a23bbd41987fffeb60bac157c363..d969a4bb3522faa5f88cae92fcd0bad375b7b0f2 100644 +index 0db5e35b8e4a186c8ef150a1b0f072e10573136e..a4c6ea94be1c1a610c6141328192a29052b9f157 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -399,7 +399,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -406,7 +406,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { boolean wantsToEnterHive() { if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) { @@ -18,7 +18,7 @@ index baeea251e8f6a23bbd41987fffeb60bac157c363..d969a4bb3522faa5f88cae92fcd0bad3 return flag && !this.isHiveNearFire(); } else { diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c55acbbf3 100644 +index 312ee43ad1a35918fc359f7ebb5742004212b931..8a163b5d3c7759abe4fe84bfec788a15fddc1e44 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -203,7 +203,7 @@ public class BeehiveBlockEntity extends BlockEntity { @@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb01e0a0e92d9c6fad33129fe61a2a53779f44ff..f398039b41bc014c61dec0e932af4a93400bd252 100644 +index e50d8cb072acd403c285fee9a0df80e4d5946846..3973c8fb88ed33264e21d94b56425389c95b54a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -769,6 +769,8 @@ public class PurpurWorldConfig { +@@ -764,6 +764,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index bb01e0a0e92d9c6fad33129fe61a2a53779f44ff..f398039b41bc014c61dec0e932af4a93 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -782,6 +784,8 @@ public class PurpurWorldConfig { +@@ -777,6 +779,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch similarity index 94% rename from patches/server/0174-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0171-API-for-any-mob-to-burn-daylight.patch index 3316ea193..14906e4b5 100644 --- a/patches/server/0174-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d16d15c92456ce2d8bb287a0c668b7bc459c5066..0aa3c178d0bca9332702589b5f0781019368b3e5 100644 +index f12ad902b6add41ffd9aff19081ce4abf998effb..1ed6072672d0585fa7609b9709b7c4b876a0f7fe 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -497,6 +497,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return true; } @@ -32,7 +32,7 @@ index d16d15c92456ce2d8bb287a0c668b7bc459c5066..0aa3c178d0bca9332702589b5f078101 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0ea17c4f6ad4753b6ed02b2387c1d3762c8d67d0..a75f8b72632cab7b9f2c5c6e0cacebe8fe572691 100644 +index f1f225615dd4a325ea29552f58fb9a6ff982a943..36d4d360c1f60d884f067391b7790e001010b45d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -63,7 +63,7 @@ index 0ea17c4f6ad4753b6ed02b2387c1d3762c8d67d0..a75f8b72632cab7b9f2c5c6e0cacebe8 } // CraftBukkit start -@@ -3582,6 +3589,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3558,6 +3565,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -92,10 +92,10 @@ index 0ea17c4f6ad4753b6ed02b2387c1d3762c8d67d0..a75f8b72632cab7b9f2c5c6e0cacebe8 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 54d1e9c9d98bbf8f408c3c9906d76c662ab2c90e..3a86686789ca77301e43bb9810f9b2b311d7763d 100644 +index ab459c32467e67b1a813ecdc56a12e2372e03faa..7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1753,17 +1753,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1748,17 +1748,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { @@ -191,7 +191,7 @@ index 2dbcfd847dd5b6db587b291a8a7a6e278949c3a9..f35637a105d5aa12fb57c2456f2b2a7d // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index b361078339f01881ee6806049ecc2490fd5cf6bf..481a6cf3dfc2948d80071920b905b488de8737e5 100644 +index f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3..5ac87650e357f3ac48e37713b9b0b18ad4d6feb6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -22,6 +22,7 @@ public class Husk extends Zombie { @@ -277,7 +277,7 @@ index 030b81dd8c52ddb300e73d792f9c4cea4e8a8d46..1d4a292a37069408420ca90b1c278422 // Paper end private static enum AttackPhase { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index e118cfc34b05f6d4921a0903eca70be6b68bff4f..fab8e4ffa083e3d436fd4d6d19cf8ea8a7b5a6a6 100644 +index 52a576a16bfeb7dc6ec97280f9a5e0f408d71e46..9b1ae2fa1681f1212b6a09d5b10b16634ce65470 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -96,11 +96,12 @@ public class Zombie extends Monster { @@ -353,10 +353,10 @@ index e118cfc34b05f6d4921a0903eca70be6b68bff4f..fab8e4ffa083e3d436fd4d6d19cf8ea8 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b636553c33b8a09c9d92ff8f355affe05e1579cf..7ca35289068dbece3f9f19384fe202fc844eceea 100644 +index 669405e0a38adc5336aa004011544346c44bc5bc..03b38dd69cd6932c17b9b2d832e67c14628a4918 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -228,6 +228,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -369,10 +369,10 @@ index b636553c33b8a09c9d92ff8f355affe05e1579cf..7ca35289068dbece3f9f19384fe202fc /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 4ab5cbdbdb78215f738380873dc710467ac2e52b..a7c81e76b0e6cd50c3900f7aa07807a74b13f606 100644 +index 93d8f8495a043efdbc763e1a35fd0ed86da5120e..ea91da46779b177d3457e4683a76cedea8bc684d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1132,5 +1132,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1137,5 +1137,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0175-Config-MobEffect-by-world.patch b/patches/server/0172-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0175-Config-MobEffect-by-world.patch rename to patches/server/0172-Config-MobEffect-by-world.patch index 78001e61e..07a1df1c6 100644 --- a/patches/server/0175-Config-MobEffect-by-world.patch +++ b/patches/server/0172-Config-MobEffect-by-world.patch @@ -72,7 +72,7 @@ index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f398039b41bc014c61dec0e932af4a93400bd252..bef591a3392c4fe94bd91d38071381c09f8293a4 100644 +index 3973c8fb88ed33264e21d94b56425389c95b54a1..1d9ed4a7d89e259beb6bf05dc624a15588adc099 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -331,6 +331,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch deleted file mode 100644 index 3738a72dd..000000000 --- a/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 27 May 2021 04:04:23 -0500 -Subject: [PATCH] ShulkerBox allow oversized stacks - -This fixes PaperMC/Paper#4748 where breaking a shulkerbox in survival mode -with oversized itemstacks would cause a "chunk ban". This fixes it by always -creating an itemstack using the TileEntity's NBT data (how it handles it for -creative players) instead of routing it through the LootableBuilder. - -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index ea28ac7cc590aea0e3ac778e597d807412708756..dce9f57806052337c9256d45e95b4b84a88bf852 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -428,7 +428,7 @@ public class ServerPlayerGameMode { - - ItemStack mainHandStack = null; // Paper - boolean isCorrectTool = false; // Paper -- if (this.isCreative()) { -+ if (this.isCreative() || (this.level.purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur - // return true; // CraftBukkit - } else { - ItemStack itemstack = this.player.getMainHandItem(); -diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -index d5fe3b8e2f5a8899f6afeb0600764284a617f261..2b513fc2f6c33963e43093cb08594bff946d72fa 100644 ---- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -@@ -135,7 +135,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock { - public void playerWillDestroy(Level world, BlockPos pos, BlockState state, Player player) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof ShulkerBoxBlockEntity shulkerBoxBlockEntity) { -- if (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty()) { -+ if (world.purpurConfig.shulkerBoxAllowOversizedStacks || (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty())) { // Purpur - ItemStack itemStack = getColoredItemStack(this.getColor()); - blockEntity.saveToItem(itemStack); - if (shulkerBoxBlockEntity.hasCustomName()) { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e50d8cb072acd403c285fee9a0df80e4d5946846..49416c3d1c8a8d3cb3882ea9394898ff4eb73118 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -657,6 +657,11 @@ public class PurpurWorldConfig { - } - } - -+ public boolean shulkerBoxAllowOversizedStacks = false; -+ private void shulkerBoxSettings() { -+ shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks); -+ } -+ - public boolean slabHalfBreak = false; - private void slabSettings() { - slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); diff --git a/patches/server/0176-Beacon-Activation-Range-Configurable.patch b/patches/server/0173-Beacon-Activation-Range-Configurable.patch similarity index 96% rename from patches/server/0176-Beacon-Activation-Range-Configurable.patch rename to patches/server/0173-Beacon-Activation-Range-Configurable.patch index ef0327b88..1f4bd453d 100644 --- a/patches/server/0176-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0173-Beacon-Activation-Range-Configurable.patch @@ -26,7 +26,7 @@ index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bef591a3392c4fe94bd91d38071381c09f8293a4..456a3cbadb5dbce0dfdafe4320c5006205a032bd 100644 +index 1d9ed4a7d89e259beb6bf05dc624a15588adc099..fca69da24c29c9215529e5a203d7ab282ec4b7f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -504,6 +504,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0177-Add-toggle-for-sand-duping-fix.patch b/patches/server/0174-Add-toggle-for-sand-duping-fix.patch similarity index 80% rename from patches/server/0177-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0174-Add-toggle-for-sand-duping-fix.patch index 915276d71..5304718df 100644 --- a/patches/server/0177-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0174-Add-toggle-for-sand-duping-fix.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for sand duping fix diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index e6f75a9cac46c8e3ddba664a9d5b27b665a94cb4..958e7684440fcc209fe33e882bf259d92a6814b1 100644 +index 45c07733f03b5c11f6d8e820f65dc950c70d9a67..8e9ab1335626493b8d74f71f643565c0e65af94c 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -133,7 +133,7 @@ public class FallingBlockEntity extends Entity { @@ -27,7 +27,7 @@ index e6f75a9cac46c8e3ddba664a9d5b27b665a94cb4..958e7684440fcc209fe33e882bf259d9 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 456a3cbadb5dbce0dfdafe4320c5006205a032bd..ce9a971ce1b9657823988395cb37b109a7b3410e 100644 +index fca69da24c29c9215529e5a203d7ab282ec4b7f7..7f69260fc1286c243ecc46311e1188a465f9d481 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -683,6 +683,11 @@ public class PurpurWorldConfig { @@ -39,6 +39,6 @@ index 456a3cbadb5dbce0dfdafe4320c5006205a032bd..ce9a971ce1b9657823988395cb37b109 + fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); + } + - public boolean shulkerBoxAllowOversizedStacks = false; - private void shulkerBoxSettings() { - shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks); + public boolean slabHalfBreak = false; + private void slabSettings() { + slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); diff --git a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 86% rename from patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch index f8d11df58..fb89df9b6 100644 --- a/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3cbed62b617cf3147030b185f6ae6d829aee9476..a275702357c21187225710858c10a7b184e73879 100644 +index 1ed6072672d0585fa7609b9709b7c4b876a0f7fe..c9dafb8ca9267bea2449bb92ab5808af453ad2b1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3196,7 +3196,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3213,7 +3213,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); @@ -18,10 +18,10 @@ index 3cbed62b617cf3147030b185f6ae6d829aee9476..a275702357c21187225710858c10a7b1 } diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a80acb4a4d 100644 +index bc73d1051749339b44ff6765162ab6a76663a628..0b45bc1db5f57a4381c470a563aa81ac0d3a1be7 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -@@ -61,6 +61,22 @@ public class EndPortalBlock extends BaseEntityBlock { +@@ -69,6 +69,22 @@ public class EndPortalBlock extends BaseEntityBlock { // return; // CraftBukkit - always fire event in case plugins wish to change it } @@ -45,7 +45,7 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36010960bd8511c17cb00bf4eda4cb0cfb89cf58..36fe53481de6b72841ac7b7a771bba355726941b 100644 +index 7f69260fc1286c243ecc46311e1188a465f9d481..1e82dea915cdbf09cca47c753dc181c3e51a6fc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -631,6 +631,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0179-Make-lightning-rod-range-configurable.patch b/patches/server/0176-Make-lightning-rod-range-configurable.patch similarity index 93% rename from patches/server/0179-Make-lightning-rod-range-configurable.patch rename to patches/server/0176-Make-lightning-rod-range-configurable.patch index cf76027bf..640bbf2f1 100644 --- a/patches/server/0179-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0176-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 02bd86d25223e0c53d0515f91d0b7677011e9f24..4edea5ea0964bc054b76b1c6635c5b719721e202 100644 +index 2d8cb768429a77547ae2904b11614d66459332fd..67d343ddfd665164219f5645e8a912134170d386 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1170,7 +1170,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1177,7 +1177,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 89% rename from patches/server/0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 6ecd8c1b8..1c17ff019 100644 --- a/patches/server/0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 65c92a2feffd878c12082239b0c41444a0f21d57..e46327725cbdae34b769c8d125594618099cb8b4 100644 +index 1380a9962d1a9706b5137af8843f0e3fa082b533..5631240aed1c032faeb291358e40180f8aa40e49 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity { +@@ -184,6 +184,7 @@ public abstract class Player extends LivingEntity { public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur @@ -17,7 +17,7 @@ index 65c92a2feffd878c12082239b0c41444a0f21d57..e46327725cbdae34b769c8d125594618 // CraftBukkit start public boolean fauxSleeping; -@@ -264,6 +265,12 @@ public abstract class Player extends LivingEntity { +@@ -259,6 +260,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 65c92a2feffd878c12082239b0c41444a0f21d57..e46327725cbdae34b769c8d125594618 this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2382,7 +2389,7 @@ public abstract class Player extends LivingEntity { +@@ -2297,7 +2304,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); @@ -40,7 +40,7 @@ index 65c92a2feffd878c12082239b0c41444a0f21d57..e46327725cbdae34b769c8d125594618 CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer) this, stack); } diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java -index 2038df72f8d7d33d4105de8129628daf21de6f0f..31ec6022b305df0ae02364c916ecf18425a0bc36 100644 +index c3448707fd8a632b457cc97b35d08a9c6933d5ee..2840c0b16d9b8147703f34bac5a8aa21f82e6e44 100644 --- a/src/main/java/net/minecraft/world/food/FoodData.java +++ b/src/main/java/net/minecraft/world/food/FoodData.java @@ -33,8 +33,10 @@ public class FoodData { @@ -55,7 +55,7 @@ index 2038df72f8d7d33d4105de8129628daf21de6f0f..31ec6022b305df0ae02364c916ecf184 public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db5156b0781cedc56929f73d3183b853b26ff4f7..01463f9279fd69b4afc42d9161a4da0473dc3ed8 100644 +index 1e82dea915cdbf09cca47c753dc181c3e51a6fc1..d1d7e18bde867b53d61350d8503f1f15b7913527 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -388,6 +388,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0181-Allow-player-join-full-server-by-permission.patch b/patches/server/0178-Allow-player-join-full-server-by-permission.patch similarity index 90% rename from patches/server/0181-Allow-player-join-full-server-by-permission.patch rename to patches/server/0178-Allow-player-join-full-server-by-permission.patch index 0ebff586b..341773752 100644 --- a/patches/server/0181-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0178-Allow-player-join-full-server-by-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1774b424620863d2fd1f6353b3ce7e9b0fc0e132..cdb5ebf7ed24cdf0ab8e06a92bc2dd21f85008d9 100644 +index 61a34f3e49b21254984011bc470d72c86d55dba1..0d75ccbf6c5cacd9ce2355d4dca2b1290a8da39f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -757,7 +757,7 @@ public abstract class PlayerList { +@@ -755,7 +755,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0179-Add-portal-permission-bypass.patch new file mode 100644 index 000000000..3667722c7 --- /dev/null +++ b/patches/server/0179-Add-portal-permission-bypass.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 7 Dec 2023 14:53:48 -0800 +Subject: [PATCH] Add portal permission bypass + + +diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java +index 5631240aed1c032faeb291358e40180f8aa40e49..952bf54a96f3ee84059f13c5821af2cfafa05c60 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -185,6 +185,7 @@ public abstract class Player extends LivingEntity { + // Paper end + public int sixRowEnderchestSlotCount = -1; // Purpur + public int burpDelay = 0; // Purpur ++ public boolean canPortalInstant = false; // Purpur + + // CraftBukkit start + public boolean fauxSleeping; +@@ -474,7 +475,7 @@ public abstract class Player extends LivingEntity { + + @Override + public int getPortalWaitTime() { +- return Math.max(1, this.level().getGameRules().getInt(this.abilities.invulnerable ? GameRules.RULE_PLAYERS_NETHER_PORTAL_CREATIVE_DELAY : GameRules.RULE_PLAYERS_NETHER_PORTAL_DEFAULT_DELAY)); ++ return Math.max(1, canPortalInstant ? 1 : this.level().getGameRules().getInt(this.abilities.invulnerable ? GameRules.RULE_PLAYERS_NETHER_PORTAL_CREATIVE_DELAY : GameRules.RULE_PLAYERS_NETHER_PORTAL_DEFAULT_DELAY)); + } + + @Override +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +index 8a1e765363aeb61078fd23980d3856dc680cb05e..aac60c61fc631c8ecac161eae513a305610a3dfb 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +@@ -267,6 +267,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { + @Override + public void recalculatePermissions() { + this.perm.recalculatePermissions(); ++ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur + } + + @Override diff --git a/patches/server/0183-Shulker-spawn-from-bullet-options.patch b/patches/server/0180-Shulker-spawn-from-bullet-options.patch similarity index 93% rename from patches/server/0183-Shulker-spawn-from-bullet-options.patch rename to patches/server/0180-Shulker-spawn-from-bullet-options.patch index 96f17fabf..19399ff6d 100644 --- a/patches/server/0183-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0180-Shulker-spawn-from-bullet-options.patch @@ -13,7 +13,7 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 69e1f7d1737a8410ff36d4226c15090e72529658..786fe41cc743817f2ed613969c7eeec9fc001b4b 100644 +index ea09f65e89b2c683c1549146948ff4f5b5073500..bf3c02e78df66ca57773d667350197220df5d2d1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -503,12 +503,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -68,10 +68,10 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f39347665b1b88a3068b258ec7a6923890961f5..60f15c3cebdcfde4938d0088b7d5b053af7ecc8e 100644 +index d1d7e18bde867b53d61350d8503f1f15b7913527..3cdd1f0fa067160f879fb617b81f42678270cde6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1926,6 +1926,11 @@ public class PurpurWorldConfig { +@@ -1917,6 +1917,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 3f39347665b1b88a3068b258ec7a6923890961f5..60f15c3cebdcfde4938d0088b7d5b053 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1937,6 +1942,11 @@ public class PurpurWorldConfig { +@@ -1928,6 +1933,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0184-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch similarity index 94% rename from patches/server/0184-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0181-Eating-glow-berries-adds-glow-effect.patch index 843e97c7d..732b5b88d 100644 --- a/patches/server/0184-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b76a45676b 100644 +index 7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0..e83ea53da012f3dcaa1f53bf6082a17a69e6ee13 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1184,7 +1184,7 @@ public class Items { +@@ -1224,7 +1224,7 @@ public class Items { public static final Item LANTERN = registerBlock(Blocks.LANTERN); public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN); public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).food(Foods.SWEET_BERRIES))); @@ -18,7 +18,7 @@ index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b7 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60f15c3cebdcfde4938d0088b7d5b053af7ecc8e..2e810dafa23b92ba844a53d970c6e2206f8b3819 100644 +index 3cdd1f0fa067160f879fb617b81f42678270cde6..1275e2a3799d064244f22894a03cc2dd53477f04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -220,6 +220,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0182-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0182-Add-portal-waiting-option-permission-bypass.patch deleted file mode 100644 index 969c8887d..000000000 --- a/patches/server/0182-Add-portal-waiting-option-permission-bypass.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sat, 26 Jun 2021 23:05:12 -0500 -Subject: [PATCH] Add portal waiting option & permission bypass - - -diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e46327725cbdae34b769c8d125594618099cb8b4..05c089d6e89cf017998bfab88aa9b2d124bf7f86 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Player.java -+++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -190,6 +190,7 @@ public abstract class Player extends LivingEntity { - // Paper end - public int sixRowEnderchestSlotCount = -1; // Purpur - public int burpDelay = 0; // Purpur -+ public boolean canPortalInstant = false; // Purpur - - // CraftBukkit start - public boolean fauxSleeping; -@@ -474,7 +475,7 @@ public abstract class Player extends LivingEntity { - - @Override - public int getPortalWaitTime() { -- return this.abilities.invulnerable ? 1 : 80; -+ return canPortalInstant ? 1 : this.abilities.invulnerable ? this.level().purpurConfig.playerCreativePortalWaitTime : this.level().purpurConfig.playerPortalWaitTime; // Purpur - } - - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 017e97c1618b8ee4640b36a0ec1b07026047bfc3..cf124ad445fd5e8adb1114aca5113e274d950a4a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { - @Override - public void recalculatePermissions() { - this.perm.recalculatePermissions(); -+ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur - } - - @Override -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 01463f9279fd69b4afc42d9161a4da0473dc3ed8..3f39347665b1b88a3068b258ec7a6923890961f5 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -390,6 +390,8 @@ public class PurpurWorldConfig { - public double playerCriticalDamageMultiplier = 1.5D; - public int playerBurpDelay = 10; - public boolean playerBurpWhenFull = false; -+ public int playerPortalWaitTime = 80; -+ public int playerCreativePortalWaitTime = 1; - private void playerSettings() { - if (PurpurConfig.version < 19) { - boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -412,6 +414,8 @@ public class PurpurWorldConfig { - playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); - playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); - playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); -+ playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); -+ playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); - } - - private static boolean projectileDespawnRateSettingsMigrated = false; diff --git a/patches/server/0185-Option-to-make-drowned-break-doors.patch b/patches/server/0182-Option-to-make-drowned-break-doors.patch similarity index 91% rename from patches/server/0185-Option-to-make-drowned-break-doors.patch rename to patches/server/0182-Option-to-make-drowned-break-doors.patch index f35fab407..9a73ed99e 100644 --- a/patches/server/0185-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0182-Option-to-make-drowned-break-doors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6ff79bbe2f 100644 +index a315e2fc10b9d404a92971dea6a0a5fae16d8133..6e6d7f68cf1c1c224b67a9d674fdcaa67ea00359 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; @@ -34,10 +34,10 @@ index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e810dafa23b92ba844a53d970c6e2206f8b3819..e49cd59e4fc687c9365d722f12948378e29b9327 100644 +index 1275e2a3799d064244f22894a03cc2dd53477f04..d9409fa6d82b6f512e8b482f319b139489675828 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1072,6 +1072,7 @@ public class PurpurWorldConfig { +@@ -1063,6 +1063,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 2e810dafa23b92ba844a53d970c6e2206f8b3819..e49cd59e4fc687c9365d722f12948378 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1087,6 +1088,7 @@ public class PurpurWorldConfig { +@@ -1078,6 +1079,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0186-Configurable-hunger-starvation-damage.patch b/patches/server/0183-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0186-Configurable-hunger-starvation-damage.patch rename to patches/server/0183-Configurable-hunger-starvation-damage.patch index 2f1327761..3bc9e501b 100644 --- a/patches/server/0186-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0183-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 2840c0b16d9b8147703f34bac5a8aa21f82e6e44..e8079d126e6c0cf0b15c01afb6498922 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 111cba29dfd34d3953f65846bb0c453033e80113..0152466a72847518a4b76616aa98694378c24104 100644 +index d9409fa6d82b6f512e8b482f319b139489675828..97295817c15bfaab80241ae89134bde1bb129462 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2587,4 +2587,9 @@ public class PurpurWorldConfig { +@@ -2578,4 +2578,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0187-Enhance-SysoutCatcher.patch b/patches/server/0184-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0187-Enhance-SysoutCatcher.patch rename to patches/server/0184-Enhance-SysoutCatcher.patch diff --git a/patches/server/0188-Add-uptime-command.patch b/patches/server/0185-Add-uptime-command.patch similarity index 96% rename from patches/server/0188-Add-uptime-command.patch rename to patches/server/0185-Add-uptime-command.patch index 127da6da0..b990e82cb 100644 --- a/patches/server/0188-Add-uptime-command.patch +++ b/patches/server/0185-Add-uptime-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index e1887523b0b6a0479544385932f54ab1de0295ae..e254f7c498c5a1608afe130b2dd4d3d037069f25 100644 +index 77cced190bd287ff3f5bc8697f16b333da0bc786..bf51f5e414ab45e33efa4057ab251120290b43e1 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -233,6 +233,7 @@ public class Commands { +@@ -253,6 +253,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index e1887523b0b6a0479544385932f54ab1de0295ae..e254f7c498c5a1608afe130b2dd4d3d0 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a3675f1ef2317c1a0e9addd9280fe928a45b2736..615de0c4baf7797d03c43e5e164b198ebb70b341 100644 +index e7f3034fbb3cb6c606724bb6e2a8e0102b06b56f..b2690db071a9ae26218406de09e37150a9d3eb66 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -288,6 +288,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop optional = this.getStripped(blockState); -- Optional optional2 = WeatheringCopper.getPrevious(blockState); -- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(blockState.getBlock())).map((block) -> { -- return block.withPropertiesOf(blockState); -- }); -+ // Purpur start -+ Block clickedBlock = level.getBlockState(blockPos).getBlock(); -+ Optional optional = Optional.ofNullable(level.purpurConfig.axeStrippables.get(blockState.getBlock())); -+ Optional optional2 = Optional.ofNullable(level.purpurConfig.axeWeatherables.get(blockState.getBlock())); -+ Optional optional3 = Optional.ofNullable(level.purpurConfig.axeWaxables.get(blockState.getBlock())); -+ // Purpur end - ItemStack itemStack = context.getItemInHand(); -- Optional optional4 = Optional.empty(); -+ Optional optional4 = Optional.empty(); // Purpur - if (optional.isPresent()) { -- level.playSound(player, blockPos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!STRIPPABLES.containsKey(clickedBlock)) level.playSound(null, blockPos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound - optional4 = optional; - } else if (optional2.isPresent()) { -- level.playSound(player, blockPos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!HoneycombItem.WAXABLES.get().containsKey(clickedBlock)) level.playSound(null, blockPos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound - level.levelEvent(player, 3005, blockPos, 0); - optional4 = optional2; - } else if (optional3.isPresent()) { -- level.playSound(player, blockPos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(clickedBlock)) level.playSound(null, blockPos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound - level.levelEvent(player, 3004, blockPos, 0); - optional4 = optional3; - } - - if (optional4.isPresent()) { -+ org.purpurmc.purpur.tool.Actionable actionable = optional4.get(); // Purpur -+ BlockState state = actionable.into().withPropertiesOf(blockState); // Purpur +- Optional optional = this.evaluateNewBlockState(level, blockPos, player, level.getBlockState(blockPos)); ++ Optional optional = this.evaluateActionable(level, blockPos, player, level.getBlockState(blockPos)); // Purpur + if (optional.isEmpty()) { + return InteractionResult.PASS; + } else { ++ org.purpurmc.purpur.tool.Actionable actionable = optional.get(); // Purpur ++ BlockState state = actionable.into().withPropertiesOf(level.getBlockState(blockPos)); // Purpur + ItemStack itemStack = context.getItemInHand(); // Paper start - EntityChangeBlockEvent -- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional4.get())) { +- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional.get())) { + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, state)) { // Purpur return InteractionResult.PASS; } // Paper end -@@ -63,15 +66,22 @@ public class AxeItem extends DiggerItem { +@@ -47,35 +49,40 @@ public class AxeItem extends DiggerItem { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, blockPos, itemStack); } -- level.setBlock(blockPos, optional4.get(), 11); -- level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(player, optional4.get())); +- level.setBlock(blockPos, optional.get(), 11); +- level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(player, optional.get())); + // Purpur start + level.setBlock(blockPos, state, 11); + actionable.drops().forEach((drop, chance) -> { @@ -74,9 +49,36 @@ index 18898e16ec42f6b694b06e09d9174b60d62450d7..20f33b77b4a9494be227456bc742a029 - return InteractionResult.sidedSuccess(level.isClientSide); + return InteractionResult.SUCCESS; // Purpur - force arm swing - } else { - return InteractionResult.PASS; } + } + +- private Optional evaluateNewBlockState(Level world, BlockPos pos, @Nullable Player player, BlockState state) { +- Optional optional = this.getStripped(state); ++ private Optional evaluateActionable(Level world, BlockPos pos, @Nullable Player player, BlockState state) { // Purpur ++ Optional optional = Optional.ofNullable(world.purpurConfig.axeStrippables.get(state.getBlock())); // Purpur + if (optional.isPresent()) { +- world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); ++ if (!STRIPPABLES.containsKey(state.getBlock())) world.playSound(null, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound + return optional; + } else { +- Optional optional2 = WeatheringCopper.getPrevious(state); ++ Optional optional2 = Optional.ofNullable(world.purpurConfig.axeWeatherables.get(state.getBlock())); // Purpur + if (optional2.isPresent()) { +- world.playSound(player, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); ++ if (!HoneycombItem.WAXABLES.get().containsKey(state.getBlock())) world.playSound(null, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound + world.levelEvent(player, 3005, pos, 0); + return optional2; + } else { +- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(state.getBlock())).map((block) -> { +- return block.withPropertiesOf(state); +- }); ++ Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); // Purpur + if (optional3.isPresent()) { +- world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); ++ if (!HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(state.getBlock())) world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound + world.levelEvent(player, 3004, pos, 0); + return optional3; + } else { diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a925bf00bd4 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java @@ -151,10 +153,10 @@ index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9061a6819cbe7d9da35ff5f8fd8c49bb1128d346..c2bc762175dfab4f64b00c56bbb28ff26b3cad73 100644 +index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c22b1c244e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -507,6 +507,206 @@ public class PurpurWorldConfig { +@@ -503,6 +503,206 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0190-Store-placer-on-Block-when-placed.patch b/patches/server/0187-Store-placer-on-Block-when-placed.patch similarity index 86% rename from patches/server/0190-Store-placer-on-Block-when-placed.patch rename to patches/server/0187-Store-placer-on-Block-when-placed.patch index 4e7310b52..6f6344a52 100644 --- a/patches/server/0190-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0187-Store-placer-on-Block-when-placed.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 43366430f1219dc364f1bf7b8112a232f85c275f..5532e166c7e010add65e5921722b50272c805c03 100644 +index 05f4670df6b45d7d9cd4ff78a0e10587f8be6f12..2b1decf36ff950d9572e3d8790e1f60ff84ce5fa 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -432,6 +432,7 @@ public final class ItemStack { +@@ -453,6 +453,7 @@ public final class ItemStack { world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 for (BlockState blockstate : blocks) { blockstate.update(true, false); @@ -16,7 +16,7 @@ index 43366430f1219dc364f1bf7b8112a232f85c275f..5532e166c7e010add65e5921722b5027 } world.preventPoiUpdated = false; -@@ -463,6 +464,7 @@ public final class ItemStack { +@@ -484,6 +485,7 @@ public final class ItemStack { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, context); // Paper - pass context } @@ -25,10 +25,10 @@ index 43366430f1219dc364f1bf7b8112a232f85c275f..5532e166c7e010add65e5921722b5027 world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index d4cbff18adb62073a1dceb189043789620af6877..f65b54919d19d2ddc7261cc36853babbaef3c822 100644 +index 4d50dd92a7f3187ee1d8edb926e7c273c8156549..39aebcac2ae260d0db2e7bd5ac3fc7255d39349e 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -430,7 +430,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -437,7 +437,17 @@ public class Block extends BlockBehaviour implements ItemLike { } // Paper } diff --git a/patches/server/0191-Summoner-API.patch b/patches/server/0188-Summoner-API.patch similarity index 93% rename from patches/server/0191-Summoner-API.patch rename to patches/server/0188-Summoner-API.patch index 4e875fdf0..126b2b580 100644 --- a/patches/server/0191-Summoner-API.patch +++ b/patches/server/0188-Summoner-API.patch @@ -93,7 +93,7 @@ index a1efde792eaa3f80cd0c7c48e38bbd07e1eb5c9d..20f2fd0edf290d448d06e4772b5947fc } 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 8d882e6ef4e199258866f30f5548a6feae4582da..ff5d08f0cf323606ca2eb8bef3f487c7a86029e2 100644 +index b0d0ed64919a0acea70554b6600cf6ba9566a178..d2640173f3eca484123eb7bc9f6c4f796c9178fb 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 @@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -137,10 +137,10 @@ index 8d882e6ef4e199258866f30f5548a6feae4582da..ff5d08f0cf323606ca2eb8bef3f487c7 } diff --git a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index 23c487e295b3b736d8800f0c884324c9b18a5373..ebeb7caf7fd4f45714bab0856a48b847a544cce7 100644 +index a63733fa01dc58b3c0abb28c1cd88c8b0a456083..75ef899fcd063dd7770aefaca69a6936cccfa620 100644 --- a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java -@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -71,7 +71,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { SnowGolem entitysnowman = (SnowGolem) EntityType.SNOW_GOLEM.create(world); if (entitysnowman != null) { @@ -149,7 +149,7 @@ index 23c487e295b3b736d8800f0c884324c9b18a5373..ebeb7caf7fd4f45714bab0856a48b847 } } else { BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection1 = this.getOrCreateIronGolemFull().find(world, pos); -@@ -74,7 +74,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -81,7 +81,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { if (entityirongolem != null) { entityirongolem.setPlayerCreated(true); @@ -158,7 +158,7 @@ index 23c487e295b3b736d8800f0c884324c9b18a5373..ebeb7caf7fd4f45714bab0856a48b847 } } } -@@ -82,6 +82,16 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -89,6 +89,16 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { } private static void spawnGolemInWorld(Level world, BlockPattern.BlockPatternMatch patternResult, Entity entity, BlockPos pos) { @@ -176,10 +176,10 @@ index 23c487e295b3b736d8800f0c884324c9b18a5373..ebeb7caf7fd4f45714bab0856a48b847 entity.moveTo((double) pos.getX() + 0.5D, (double) pos.getY() + 0.05D, (double) pos.getZ() + 0.5D, 0.0F, 0.0F); // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -index 1aa0e921890d600c9274deb923da04e72b12bcc6..44bd7bee2665a05878fd2df935a700f02cd13a75 100644 +index fb180f0bcd20e51d41cfc924029c0b23d3d26258..688d161cd6725f494366c23668ebd6ff709b1587 100644 --- a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -69,6 +69,7 @@ public class WitherSkullBlock extends SkullBlock { +@@ -76,6 +76,7 @@ public class WitherSkullBlock extends SkullBlock { entitywither.moveTo((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.55D, (double) blockposition1.getZ() + 0.5D, shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F, 0.0F); entitywither.yBodyRot = shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; entitywither.makeInvulnerable(); @@ -188,7 +188,7 @@ index 1aa0e921890d600c9274deb923da04e72b12bcc6..44bd7bee2665a05878fd2df935a700f0 if (!world.addFreshEntity(entitywither, SpawnReason.BUILD_WITHER)) { return; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -index 75d10b5322eb0a62bce2855c04a5151eb857d7de..208018981a2a5666c455eb34614b03f617354165 100644 +index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..966587c2788b5c93be83259ddc962a89cde7cbaa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java @@ -27,4 +27,17 @@ public class CraftIronGolem extends CraftGolem implements IronGolem { @@ -210,7 +210,7 @@ index 75d10b5322eb0a62bce2855c04a5151eb857d7de..208018981a2a5666c455eb34614b03f6 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -index e4a14cdfeb91a3d32e622d27d612605b1bca08e2..898d934aafd6066df45f02fe3406fa83f79b745c 100644 +index 4ce2373ff71c3c1b8951646e057587a3ab09e145..4f7f6cf6ca24406570d2d29dc63dc89401119961 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java @@ -28,4 +28,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok @@ -232,7 +232,7 @@ index e4a14cdfeb91a3d32e622d27d612605b1bca08e2..898d934aafd6066df45f02fe3406fa83 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -index 5a97c92f9b044d8ab7bd3346ceb464455a09046e..e30d8b80734f04b1fa89e8a3cef666116fd7366c 100644 +index 7a8ce6956db56061af93ba9761f5d1057a90bc49..6d286b23806666f7b00ac88c5922144649f8a041 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java @@ -99,4 +99,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok diff --git a/patches/server/0192-Customizable-sleeping-actionbar-messages.patch b/patches/server/0189-Customizable-sleeping-actionbar-messages.patch similarity index 94% rename from patches/server/0192-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0189-Customizable-sleeping-actionbar-messages.patch index 3b1e397ce..f9e767850 100644 --- a/patches/server/0192-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0189-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 81c7fc2cb4c49745b45ecaaa20d91bab457272d5..331985ee26b9491b7ff71c6a104fafd08f983554 100644 +index 67d343ddfd665164219f5645e8a912134170d386..36f3a94499deb1344c3b7628c08adf6e49be26a8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1219,11 +1219,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1226,11 +1226,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -38,10 +38,10 @@ index 81c7fc2cb4c49745b45ecaaa20d91bab457272d5..331985ee26b9491b7ff71c6a104fafd0 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 934838dc695b708d0672d787887726587dc5762c..f149c4149bf3c19e87c15cbea0078c95283a4d84 100644 +index 3c6331f703acc59f1764f7ef474b242cfeeb63aa..95853c833ba47a2c136ba6d237dcdcee09fb8de8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1464,7 +1464,19 @@ public class ServerPlayer extends Player { +@@ -1468,7 +1468,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 96% rename from patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch index 9b6506fad..0df1df0a8 100644 --- a/patches/server/0193-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,7 +19,7 @@ index efdf56044396b4ce486948d2c993971f99174a5e..21916ab9bde38ef8383e746f2ce597b0 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad40281464ef651b01520f5662d315ed2f84304b..943fcd97ff515fbcc8508344f5094180ba181978 100644 +index 5f69a74b53880bf7c58fc64402ed99c22b1c244e..f540ecafbcc509ad5f6404ffc0d2047f8cd3d79f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -221,6 +221,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0194-Big-dripleaf-tilt-delay.patch b/patches/server/0191-Big-dripleaf-tilt-delay.patch similarity index 89% rename from patches/server/0194-Big-dripleaf-tilt-delay.patch rename to patches/server/0191-Big-dripleaf-tilt-delay.patch index 78c6e8fa2..94f51606e 100644 --- a/patches/server/0194-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0191-Big-dripleaf-tilt-delay.patch @@ -11,10 +11,10 @@ PARTIAL: big_dripleaf with PARTIAL tilt will change to FULL tilt after 10 ticks UNSTABLE: big_dripleaf with FULL tilt will change back to no tilt after 100 ticks diff --git a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -index 54cf35b0c48d96ecfb27ff13cd685c16a1cd616b..1822ea0c72cc1685aab86a44f75c791bc5c595fa 100644 +index 8e4a6a1188b2ce2825dc5750505212c72efb5c7b..c7f78ccb228d261984ac360f2ca6ae9478786184 100644 --- a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -236,7 +236,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone +@@ -243,7 +243,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone BigDripleafBlock.playTiltSound(world, blockposition, soundeffect); } @@ -24,10 +24,10 @@ index 54cf35b0c48d96ecfb27ff13cd685c16a1cd616b..1822ea0c72cc1685aab86a44f75c791b if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a6b73793bab42e683e22a54d8b801d65baf5fe5..5909f27cf58efdfdb4a86909a86bf396ad9c740b 100644 +index f540ecafbcc509ad5f6404ffc0d2047f8cd3d79f..e9069b48d19779ba9fda5ea736117b6f092b3efd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -748,6 +748,22 @@ public class PurpurWorldConfig { +@@ -744,6 +744,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0195-Player-ridable-in-water-option.patch b/patches/server/0192-Player-ridable-in-water-option.patch similarity index 71% rename from patches/server/0195-Player-ridable-in-water-option.patch rename to patches/server/0192-Player-ridable-in-water-option.patch index 2120e4a3c..22b58cae1 100644 --- a/patches/server/0195-Player-ridable-in-water-option.patch +++ b/patches/server/0192-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 05c089d6e89cf017998bfab88aa9b2d124bf7f86..52b4ffc17ac913bf64cf6a6b7a37ae6e5af9bd87 100644 +index 952bf54a96f3ee84059f13c5821af2cfafa05c60..fd67cefb971b394042c0fdd845c20cf55d8efc2f 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2110,6 +2110,11 @@ public abstract class Player extends LivingEntity { +@@ -2025,6 +2025,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } @@ -21,21 +21,21 @@ index 05c089d6e89cf017998bfab88aa9b2d124bf7f86..52b4ffc17ac913bf64cf6a6b7a37ae6e if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5909f27cf58efdfdb4a86909a86bf396ad9c740b..d0098fc7906ab1b6be5e720978540380e479a02f 100644 +index e9069b48d19779ba9fda5ea736117b6f092b3efd..e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,6 +396,7 @@ public class PurpurWorldConfig { +@@ -394,6 +394,7 @@ public class PurpurWorldConfig { + public double playerCriticalDamageMultiplier = 1.5D; + public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; - public int playerPortalWaitTime = 80; - public int playerCreativePortalWaitTime = 1; + public boolean playerRidableInWater = false; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -420,6 +421,7 @@ public class PurpurWorldConfig { +@@ -416,6 +417,7 @@ public class PurpurWorldConfig { + playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); + playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); - playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); - playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); + playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); } diff --git a/patches/server/0196-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 86% rename from patches/server/0196-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index cc1023896..efb92c6c9 100644 --- a/patches/server/0196-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit 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 db05006ca159a91165a7392cb57d0905e3732fe1..463a01305cc76ffd8018d2227f5f6dc1ecf24c5f 100644 +index 6519fb56a7c6fd2e9ce3f4a0504053ed05eb0e14..3583d0c01410987584a53bb6e717d5636e2c9f69 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -455,6 +455,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -449,6 +449,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { flag1 = flag && this.hurtWithCleanWater(source, (ThrownPotion) source.getDirectEntity(), amount); @@ -17,10 +17,10 @@ index db05006ca159a91165a7392cb57d0905e3732fe1..463a01305cc76ffd8018d2227f5f6dc1 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0098fc7906ab1b6be5e720978540380e479a02f..0319fa5cb86e40520228bbdbd41e51c38cb4ffd6 100644 +index e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3..602f8111576de65d6059704cf5d81cba38172236 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1369,6 +1369,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index d0098fc7906ab1b6be5e720978540380e479a02f..0319fa5cb86e40520228bbdbd41e51c3 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1391,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1382,6 +1383,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0197-Add-compass-command.patch b/patches/server/0194-Add-compass-command.patch similarity index 95% rename from patches/server/0197-Add-compass-command.patch rename to patches/server/0194-Add-compass-command.patch index 7528ba3de..3f2789d0b 100644 --- a/patches/server/0197-Add-compass-command.patch +++ b/patches/server/0194-Add-compass-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index e254f7c498c5a1608afe130b2dd4d3d037069f25..af712f089e7919fa0bd3946866fd3486fab19f76 100644 +index bf51f5e414ab45e33efa4057ab251120290b43e1..428dd75450bdd5daf902a1fbaca7031a9bc585a8 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -235,6 +235,7 @@ public class Commands { +@@ -255,6 +255,7 @@ public class Commands { org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index e254f7c498c5a1608afe130b2dd4d3d037069f25..af712f089e7919fa0bd3946866fd3486 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f149c4149bf3c19e87c15cbea0078c95283a4d84..1cca542c33510a01fb59631e68b1aa212d8230a5 100644 +index 95853c833ba47a2c136ba6d237dcdcee09fb8de8..074e718e4081d3e37f774613e6929224f28a3e26 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -276,6 +276,7 @@ public class ServerPlayer extends Player { +@@ -283,6 +283,7 @@ public class ServerPlayer extends Player { public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur @@ -28,7 +28,7 @@ index f149c4149bf3c19e87c15cbea0078c95283a4d84..1cca542c33510a01fb59631e68b1aa21 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -564,6 +565,7 @@ public class ServerPlayer extends Player { +@@ -571,6 +572,7 @@ public class ServerPlayer extends Player { } if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur @@ -36,7 +36,7 @@ index f149c4149bf3c19e87c15cbea0078c95283a4d84..1cca542c33510a01fb59631e68b1aa21 } @Override -@@ -631,6 +633,7 @@ public class ServerPlayer extends Player { +@@ -638,6 +640,7 @@ public class ServerPlayer extends Player { this.getBukkitEntity().setExtraData(nbt); // CraftBukkit nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur @@ -44,7 +44,7 @@ index f149c4149bf3c19e87c15cbea0078c95283a4d84..1cca542c33510a01fb59631e68b1aa21 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2800,5 +2803,13 @@ public class ServerPlayer extends Player { +@@ -2901,5 +2904,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -89,7 +89,7 @@ index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c40 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d26630c3a5d34b51f2104fe135d5a11a87e4e974..5f48af20f046bf516ecaf0dfd9fd2b0fc209c1ad 100644 +index 602f8111576de65d6059704cf5d81cba38172236..78381e82ddbfc78ed458908053752f48fee034b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Toggle-for-kinetic-damage.patch b/patches/server/0195-Toggle-for-kinetic-damage.patch similarity index 89% rename from patches/server/0198-Toggle-for-kinetic-damage.patch rename to patches/server/0195-Toggle-for-kinetic-damage.patch index 05453045e..7e9f7bb3e 100644 --- a/patches/server/0198-Toggle-for-kinetic-damage.patch +++ b/patches/server/0195-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a75f8b72632cab7b9f2c5c6e0cacebe8fe572691..47b9bc6ae22243c523dc3a72c13dc335a17999b9 100644 +index 36d4d360c1f60d884f067391b7790e001010b45d..cbf14a9f6c4059ac2246d840ff901113fb03f8cc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2934,6 +2934,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2905,6 +2905,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index a75f8b72632cab7b9f2c5c6e0cacebe8fe572691..47b9bc6ae22243c523dc3a72c13dc335 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f48af20f046bf516ecaf0dfd9fd2b0fc209c1ad..19563349b4dab54b840a1d089521d1b5b21353ef 100644 +index 78381e82ddbfc78ed458908053752f48fee034b0..46c1ace4cce14e11ab957df1077625657ea3798b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0199-Add-Option-for-disable-observer-clocks.patch b/patches/server/0196-Add-Option-for-disable-observer-clocks.patch similarity index 88% rename from patches/server/0199-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0196-Add-Option-for-disable-observer-clocks.patch index 282f377d3..8092e1228 100644 --- a/patches/server/0199-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0196-Add-Option-for-disable-observer-clocks.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add Option for disable observer clocks Allow to disable observer clocks: https://www.spigotmc.org/attachments/observerclock-gif.365936/ diff --git a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java -index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46ac37c468 100644 +index 713352b68f82d4c4a19a712d5207de0f99456713..d056e80c98973e9ba64adc5a8554acc8a5f3eac9 100644 --- a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java -@@ -64,6 +64,7 @@ public class ObserverBlock extends DirectionalBlock { +@@ -71,6 +71,7 @@ public class ObserverBlock extends DirectionalBlock { @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { if (state.getValue(ObserverBlock.FACING) == direction && !(Boolean) state.getValue(ObserverBlock.POWERED)) { @@ -18,7 +18,7 @@ index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45b89ffe9b7a61d9c4d0508d533131d54e363549..8cece9543a87ac86a8320fef4a23b39dbc76ab5c 100644 +index 46c1ace4cce14e11ab957df1077625657ea3798b..6c5fc242df9b0bf4d79a091105b7b113d801bf05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -369,6 +369,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch similarity index 92% rename from patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch index 36a60560d..cb0b0629f 100644 --- a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 135ce8822ed7e3d6182755deca37a2c0531960c6..6a85de8af9b260e92b4ccffa2ae3503c return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b74734549b55ac08f67496b455b62bf65ae21ffa..78b57bf24e0ec6a4e5e4e1f56deb62480e8fd467 100644 +index 6c5fc242df9b0bf4d79a091105b7b113d801bf05..3c6a1dfe949d8c7347ad4990a5e148b74445a8d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2774,6 +2774,8 @@ public class PurpurWorldConfig { +@@ -2765,6 +2765,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index b74734549b55ac08f67496b455b62bf65ae21ffa..78b57bf24e0ec6a4e5e4e1f56deb6248 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2789,6 +2791,8 @@ public class PurpurWorldConfig { +@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0201-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 87% rename from patches/server/0201-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch index c7286491c..723276f7f 100644 --- a/patches/server/0201-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Option for sponges to work on lava and mud Co-authored by: granny diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8..cc1ac862526377b2ac7b66bc20f428dc1aed6e78 100644 +index 6469f5e25673b4e20cf0b520b28b14b2eda9130c..9e4146ecd36ff2698ee951660ed88290c80fd8f7 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -70,7 +70,7 @@ public class SpongeBlock extends Block { +@@ -77,7 +77,7 @@ public class SpongeBlock extends Block { FluidState fluid = blockList.getFluidState(blockposition1); // CraftBukkit end @@ -18,7 +18,7 @@ index e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8..cc1ac862526377b2ac7b66bc20f428dc return false; } else { Block block = iblockdata.getBlock(); -@@ -85,6 +85,10 @@ public class SpongeBlock extends Block { +@@ -92,6 +92,10 @@ public class SpongeBlock extends Block { if (iblockdata.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockposition1, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit @@ -30,10 +30,10 @@ index e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8..cc1ac862526377b2ac7b66bc20f428dc if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2f365ab51b56a83ed7ea67c921c163c3511b834..13aa8ae8f33834793adf18c12541c2ecd2d0699f 100644 +index 3c6a1dfe949d8c7347ad4990a5e148b74445a8d2..b96a936a584c21832a7890716743f1c918f2264d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -949,9 +949,13 @@ public class PurpurWorldConfig { +@@ -940,9 +940,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch similarity index 85% rename from patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch index ba9f0efda..7cfeab39c 100644 --- a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound 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 ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0edd445294 100644 +index d2640173f3eca484123eb7bc9f6c4f796c9178fb..73c967330cc793acc029c17f037d985e6ba919de 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 -@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -418,7 +418,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end @@ -18,10 +18,10 @@ index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0e // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a1b71bf2d33ba979dbfbc17b178cf6f40755ea5..06566fb9555c34718dad810b06c53d1020671f82 100644 +index b96a936a584c21832a7890716743f1c918f2264d..70b2bce9096d2e5486ee7932bada442a02b460a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2619,6 +2619,7 @@ public class PurpurWorldConfig { +@@ -2610,6 +2610,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 9a1b71bf2d33ba979dbfbc17b178cf6f40755ea5..06566fb9555c34718dad810b06c53d10 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2640,6 +2641,7 @@ public class PurpurWorldConfig { +@@ -2631,6 +2632,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0203-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch similarity index 84% rename from patches/server/0203-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch index 9a219962e..a37028a2c 100644 --- a/patches/server/0203-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cactus breaks from solid neighbors config diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index 0003fb51ae3a6575575e10b4c86719f3061e2577..c2ca3432a47124d02e1aaf8ffb621f9a2c7d7a62 100644 +index a9629a102c4fa4e5720e63fcf4590e9231426c62..89c0006c06098e0d09a259ea8415d55b997367aa 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -@@ -107,7 +107,7 @@ public class CactusBlock extends Block { +@@ -114,7 +114,7 @@ public class CactusBlock extends Block { enumdirection = (Direction) iterator.next(); iblockdata1 = world.getBlockState(pos.relative(enumdirection)); @@ -18,10 +18,10 @@ index 0003fb51ae3a6575575e10b4c86719f3061e2577..c2ca3432a47124d02e1aaf8ffb621f9a return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7670e4e1291e8c48b960ee44977d4850b470a81e..2951c05d64f7c1667343dd781800816b7fae5cb9 100644 +index 70b2bce9096d2e5486ee7932bada442a02b460a4..80f13907f068fc6c52595ea3cf93c1a4d5d03b69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -775,6 +775,11 @@ public class PurpurWorldConfig { +@@ -771,6 +771,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0204-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 62% rename from patches/server/0204-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch index a14b3f56c..88d1a0b17 100644 --- a/patches/server/0204-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch @@ -5,41 +5,33 @@ Subject: [PATCH] Config to remove curse of binding with weakness diff --git a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java -index b399903e8f11ec6c12fe7e724b7d9c8292acd573..a4afa946cd47238eb0fed297a27b24013d5ba77c 100644 +index 9af1da3858d6cf79b8bfaf99dde1370ccc50d023..1acb41fab25bdbc4109913b111dbe3b0e106af3f 100644 --- a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java +++ b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java -@@ -4,6 +4,7 @@ import com.mojang.datafixers.util.Pair; - import net.minecraft.network.chat.Component; - import net.minecraft.resources.ResourceLocation; - import net.minecraft.world.Container; -+import net.minecraft.world.effect.MobEffects; - import net.minecraft.world.entity.EquipmentSlot; - import net.minecraft.world.entity.Mob; - import net.minecraft.world.entity.player.Inventory; -@@ -95,7 +96,7 @@ public class InventoryMenu extends RecipeBookMenu { +@@ -95,7 +95,7 @@ public class InventoryMenu extends RecipeBookMenu { public boolean mayPickup(Player playerEntity) { ItemStack itemstack = this.getItem(); - return !itemstack.isEmpty() && !playerEntity.isCreative() && EnchantmentHelper.hasBindingCurse(itemstack) ? false : super.mayPickup(playerEntity); -+ return !itemstack.isEmpty() && !playerEntity.isCreative() && EnchantmentHelper.hasBindingCurse(itemstack) ? playerEntity.level().purpurConfig.playerRemoveBindingWithWeakness && playerEntity.hasEffect(MobEffects.WEAKNESS) : super.mayPickup(playerEntity); // Purpur ++ return !itemstack.isEmpty() && !playerEntity.isCreative() && EnchantmentHelper.hasBindingCurse(itemstack) ? playerEntity.level().purpurConfig.playerRemoveBindingWithWeakness && playerEntity.hasEffect(net.minecraft.world.effect.MobEffects.WEAKNESS) : super.mayPickup(playerEntity); // Purpur } @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2951c05d64f7c1667343dd781800816b7fae5cb9..f64c758f51134e8102ca4092bc313eefd346d211 100644 +index 80f13907f068fc6c52595ea3cf93c1a4d5d03b69..073bd3a0c0d06269738b406b8de08db99e914f8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -406,6 +406,7 @@ public class PurpurWorldConfig { - public int playerPortalWaitTime = 80; - public int playerCreativePortalWaitTime = 1; +@@ -404,6 +404,7 @@ public class PurpurWorldConfig { + public int playerBurpDelay = 10; + public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; + public boolean playerRemoveBindingWithWeakness = false; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -431,6 +432,7 @@ public class PurpurWorldConfig { - playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); - playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); +@@ -427,6 +428,7 @@ public class PurpurWorldConfig { + playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); + playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); + playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); } diff --git a/patches/server/0205-Conduit-behavior-configuration.patch b/patches/server/0202-Conduit-behavior-configuration.patch similarity index 97% rename from patches/server/0205-Conduit-behavior-configuration.patch rename to patches/server/0202-Conduit-behavior-configuration.patch index 6add5b67a..f7f2ad4a0 100644 --- a/patches/server/0205-Conduit-behavior-configuration.patch +++ b/patches/server/0202-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1de902f3efaa1b685e6a38eff2b5838f7ff32f8c..a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974 100644 +index 073bd3a0c0d06269738b406b8de08db99e914f8d..029b938936289db6e2b202e1e307cf8d0fa56ec1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2840,4 +2840,27 @@ public class PurpurWorldConfig { +@@ -2831,4 +2831,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0206-Cauldron-fill-chances.patch b/patches/server/0203-Cauldron-fill-chances.patch similarity index 87% rename from patches/server/0206-Cauldron-fill-chances.patch rename to patches/server/0203-Cauldron-fill-chances.patch index b82984265..40d319d81 100644 --- a/patches/server/0206-Cauldron-fill-chances.patch +++ b/patches/server/0203-Cauldron-fill-chances.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cauldron fill chances diff --git a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java -index 2f85b893dd0abc39fcedec65acc89e1567faf6f0..3ee012a9ef8cada0b2203e53b2f731f60f697cb1 100644 +index a821a981adbebdcf22997731b9bbea3d033cd2b1..028419d45c098baf5eab5d6e7a73189cb3e86622 100644 --- a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java -@@ -29,7 +29,7 @@ public class CauldronBlock extends AbstractCauldronBlock { +@@ -36,7 +36,7 @@ public class CauldronBlock extends AbstractCauldronBlock { } protected static boolean shouldHandlePrecipitation(Level world, Biome.Precipitation precipitation) { @@ -18,10 +18,10 @@ index 2f85b893dd0abc39fcedec65acc89e1567faf6f0..3ee012a9ef8cada0b2203e53b2f731f6 @Override diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java -index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d99159bf4 100644 +index bd22d3fdecbc992b11073a74d854b7d1b43c3f6a..0a3b97f18abcc9b385c9efd5a30f3e2ce5e4bd59 100644 --- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -186,7 +186,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -195,7 +195,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel world, BlockPos pos, float dripChance) { @@ -30,7 +30,7 @@ index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d if (PointedDripstoneBlock.isStalactiteStartPos(state, world, pos)) { Optional optional = PointedDripstoneBlock.getFluidAboveStalactite(world, pos, state); -@@ -195,13 +195,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -204,13 +204,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate float f1; if (fluidtype == Fluids.WATER) { @@ -47,10 +47,10 @@ index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974..86306d03a4212bca0dbe990cf9f6a3854c1f55e5 100644 +index 029b938936289db6e2b202e1e307cf8d0fa56ec1..b27849dbddadf4388e5909b8fe74bcdab20c552f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2863,4 +2863,15 @@ public class PurpurWorldConfig { +@@ -2854,4 +2854,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0207-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 94% rename from patches/server/0207-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch index 40cf268ee..1e95c8846 100644 --- a/patches/server/0207-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 3583fcf5284bc5883308876dbd9886664b391e28..d976a6df54c1e817def2d588692abe25a03ee0fa 100644 +index 2aca9b193db5dadc4fb90b8d7548277b698924aa..7702cd386247c1a850bb22ccf8c0724d5bec1020 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java @@ -241,7 +241,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { @@ -18,7 +18,7 @@ index 3583fcf5284bc5883308876dbd9886664b391e28..d976a6df54c1e817def2d588692abe25 if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 909e6bb2781637e5f4c2525371de2ad0b5524afe..8ae2e7f81d1d6a09d9b733ae27ad6c99a58aeb2e 100644 +index b27849dbddadf4388e5909b8fe74bcdab20c552f..46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -138,6 +138,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0208-Shulker-change-color-with-dye.patch b/patches/server/0205-Shulker-change-color-with-dye.patch similarity index 92% rename from patches/server/0208-Shulker-change-color-with-dye.patch rename to patches/server/0205-Shulker-change-color-with-dye.patch index edf3fe483..ab7480489 100644 --- a/patches/server/0208-Shulker-change-color-with-dye.patch +++ b/patches/server/0205-Shulker-change-color-with-dye.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shulker change color with dye diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 786fe41cc743817f2ed613969c7eeec9fc001b4b..40f4a53cf244549e9cf392f4286bdec1a6852574 100644 +index bf3c02e78df66ca57773d667350197220df5d2d1..47abc81aa04774abeb97c912cd118bbab3b51e86 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -47,10 +47,10 @@ index 786fe41cc743817f2ed613969c7eeec9fc001b4b..40f4a53cf244549e9cf392f4286bdec1 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ae2e7f81d1d6a09d9b733ae27ad6c99a58aeb2e..a8cddd10832e6be2704569b6c1fb995bd9caf0b9 100644 +index 46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034..a0ba55821e2d2a0c78c06e5756d8a591af85a536 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2179,6 +2179,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2170,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 8ae2e7f81d1d6a09d9b733ae27ad6c99a58aeb2e..a8cddd10832e6be2704569b6c1fb995b private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2195,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2186,6 +2187,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0209-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch similarity index 98% rename from patches/server/0209-Extended-OfflinePlayer-API.patch rename to patches/server/0206-Extended-OfflinePlayer-API.patch index 4276e685b..a290e9e2b 100644 --- a/patches/server/0209-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..d0e3b531392738679894a989293ae49e + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a4aed376b8c66dc251cdbaa98a067c26694c4b8d..63f7023a7f20f0133c03904ea48c15346a8963b8 100644 +index 6413d01dbdabb2f9d9507403dca92391e9dc08bc..0df4d72d82a4f047c6272af664ad61ee0117cf67 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2527,6 +2527,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2547,6 +2547,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch b/patches/server/0207-Added-the-ability-to-add-combustible-items.patch similarity index 96% rename from patches/server/0210-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0207-Added-the-ability-to-add-combustible-items.patch index e2d462abc..1af2e497a 100644 --- a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0207-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6ab05085b4ba01ae1d6e4decc38cff56a571e20b..dd6d5ed8beb6d090c2aaafc540fa857a4815558f 100644 +index aa84152e8198dfeed0465877d38216f8892f55f7..d974846dda57755cfa33beba76794391beb9b4f3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1540,6 +1540,19 @@ public final class CraftServer implements Server { +@@ -1567,6 +1567,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 88% rename from patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 5d2e91e3a..39fce7cd6 100644 --- a/patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f7d9398c9a73c8a02a2515b9d43b49433e5f883c..492a50f3b619753f8a353c739a3f10c44dfa7861 100644 +index 36f3a94499deb1344c3b7628c08adf6e49be26a8..5db8e4c8879d355843c196b17b8f39e9fe5d9a6a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1378,6 +1378,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - - private void resetWeatherCycle() { +@@ -1386,6 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + @VisibleForTesting + public void resetWeatherCycle() { // CraftBukkit start + if (this.purpurConfig.rainStopsAfterSleep) // Purpur this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1385,6 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1393,6 +1394,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index f7d9398c9a73c8a02a2515b9d43b49433e5f883c..492a50f3b619753f8a353c739a3f10c4 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a8cddd10832e6be2704569b6c1fb995bd9caf0b9..1da30e052c08c27370755cae3e1890a397a2f323 100644 +index a0ba55821e2d2a0c78c06e5756d8a591af85a536..8fe41200b26c0a17b6b65178aa858a74494471a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 89% rename from patches/server/0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index abbd59590..ebc7deca6 100644 --- a/patches/server/0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -index 087f3b3cc180e16195efdc0b402701fd9f5d78b4..aa4e13f1c77f10221128569483497668cd2eb7d3 100644 +index 3ecc92439fc85d224ff52f41c5e34079e042a5e6..2336fea8c65d64a77a1afa4b8b976fb0d7da00eb 100644 --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -@@ -43,6 +43,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { +@@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @Override public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { @@ -26,14 +26,14 @@ index 087f3b3cc180e16195efdc0b402701fd9f5d78b4..aa4e13f1c77f10221128569483497668 + + private void growTree(ServerLevel world, RandomSource random, BlockPos pos, net.minecraft.world.level.block.state.BlockState state) { + // Purpur end - TREE_GROWER.growTree(world, world.getChunkSource().getGenerator(), pos, state, random); + TreeGrower.AZALEA.growTree(world, world.getChunkSource().getGenerator(), pos, state, random); } diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index b49e02ac7b3db9a5b79ce3f106ead19af4e7cfa6..6425bc42bb8024aa7936b841d6c2ee2c892eb329 100644 +index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a8f74a009 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1094,8 +1094,8 @@ public class Blocks { +@@ -1145,8 +1145,8 @@ public class Blocks { public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM).pushReaction(PushReaction.DESTROY))); @@ -45,10 +45,10 @@ index b49e02ac7b3db9a5b79ce3f106ead19af4e7cfa6..6425bc42bb8024aa7936b841d6c2ee2c public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1da30e052c08c27370755cae3e1890a397a2f323..a3a5decf6586569c347d36f4416cf3cb3b0bef78 100644 +index 8fe41200b26c0a17b6b65178aa858a74494471a6..0be19b3fc5fa6af23a3930a63e62199dffd538ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -735,6 +735,11 @@ public class PurpurWorldConfig { +@@ -731,6 +731,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index 1da30e052c08c27370755cae3e1890a397a2f323..a3a5decf6586569c347d36f4416cf3cb public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -872,6 +877,11 @@ public class PurpurWorldConfig { +@@ -868,6 +873,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch similarity index 87% rename from patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch index 93b94235a..819e0908a 100644 --- a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index dce9f57806052337c9256d45e95b4b84a88bf852..6f8d990cbc15c3fa11acdf59fc1ec1fa583f60ec 100644 +index 5de06447de2ab2c45debf314aecd39722d4a7af6..3a50342ff3e8b9685b5595bf78c05bfe8e251e58 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -517,6 +517,7 @@ public class ServerPlayerGameMode { @@ -36,10 +36,10 @@ index dce9f57806052337c9256d45e95b4b84a88bf852..6f8d990cbc15c3fa11acdf59fc1ec1fa + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a541c642ef5132ec41dedac770fd31d96401806c..2152abc4ea04515a688af1dca8174f96a629f2fb 100644 +index 0b5c6557afa83fb018bf3843f2f290e3d1925487..ab20edfc54b37e06d5a775ec8e98f4875513bcae 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2024,6 +2024,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2050,6 +2050,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,19 +48,19 @@ index a541c642ef5132ec41dedac770fd31d96401806c..2152abc4ea04515a688af1dca8174f96 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e3c83c9cd122fb4917f1292d3623a5a902562579..1147ae92fb688d57cf4e831bd43be203064a0e88 100644 +index 0be19b3fc5fa6af23a3930a63e62199dffd538ea..c06d51200346d524a81e2d7a735db668da16c580 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -413,6 +413,7 @@ public class PurpurWorldConfig { - public int playerCreativePortalWaitTime = 1; +@@ -411,6 +411,7 @@ public class PurpurWorldConfig { + public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; + public int shiftRightClickRepairsMendingPoints = 0; private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -439,6 +440,7 @@ public class PurpurWorldConfig { - playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); +@@ -435,6 +436,7 @@ public class PurpurWorldConfig { + playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); + shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0214-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 91% rename from patches/server/0214-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch index ec76f54a5..f07fdbbe2 100644 --- a/patches/server/0214-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance 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 77746eeffdc612793a6c907f222753bce5cd0ed4..b6342637f1b42b6368dcda17eea4b39a22ec3b79 100644 +index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d82929842f240ea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -82,6 +82,7 @@ public class Dolphin extends WaterAnimal { @@ -24,7 +24,7 @@ index 77746eeffdc612793a6c907f222753bce5cd0ed4..b6342637f1b42b6368dcda17eea4b39a return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } -@@ -242,6 +244,7 @@ public class Dolphin extends WaterAnimal { +@@ -237,6 +239,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -32,7 +32,7 @@ index 77746eeffdc612793a6c907f222753bce5cd0ed4..b6342637f1b42b6368dcda17eea4b39a this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); -@@ -249,12 +252,13 @@ public class Dolphin extends WaterAnimal { +@@ -244,12 +247,13 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); @@ -48,10 +48,10 @@ index 77746eeffdc612793a6c907f222753bce5cd0ed4..b6342637f1b42b6368dcda17eea4b39a public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e658c5e81b85fa4fa36b9e18a02bd0634e42554..c146356aa04126f2cd74aabf50c1436fa111aa6a 100644 +index c06d51200346d524a81e2d7a735db668da16c580..30761aaa2afe239f9233d5afee0252f53cf07086 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1277,6 +1277,7 @@ public class PurpurWorldConfig { +@@ -1268,6 +1268,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 8e658c5e81b85fa4fa36b9e18a02bd0634e42554..c146356aa04126f2cd74aabf50c1436f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1291,6 +1292,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1283,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0215-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch similarity index 96% rename from patches/server/0215-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch index 054fdd923..b8d9187e6 100644 --- a/patches/server/0215-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch @@ -57,10 +57,10 @@ index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f717 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c146356aa04126f2cd74aabf50c1436fa111aa6a..e752c2050b696a0f1db12c5301fbe940488d87d1 100644 +index 30761aaa2afe239f9233d5afee0252f53cf07086..3c4b6fed063a7ffcdf8f982e42c4599a129fb406 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1226,7 +1226,14 @@ public class PurpurWorldConfig { +@@ -1217,7 +1217,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index c146356aa04126f2cd74aabf50c1436fa111aa6a..e752c2050b696a0f1db12c5301fbe940 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1239,6 +1246,8 @@ public class PurpurWorldConfig { +@@ -1230,6 +1237,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 86% rename from patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch index cb62f99ce..d8d351f8d 100644 --- a/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 28d940393f387387fa0a2b0dea8de24324e2e55e..6146f3e52eb1d8f47b5a41eff634d2c7cc24c26f 100644 +index 29916aa09d867ef3fa4dc8248b174bf8f97853b7..f78c41833169264fabc76d13bb4b9a89169aa0fe 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1110,6 +1110,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1108,6 +1108,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,10 +22,10 @@ index 28d940393f387387fa0a2b0dea8de24324e2e55e..6146f3e52eb1d8f47b5a41eff634d2c7 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e752c2050b696a0f1db12c5301fbe940488d87d1..dae834b637164fabea2b17d2d752a04df31ee88a 100644 +index 3c4b6fed063a7ffcdf8f982e42c4599a129fb406..db9cb3292814b188abac8b1b9fdce1e5d7c4620a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -754,6 +754,7 @@ public class PurpurWorldConfig { +@@ -750,6 +750,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index e752c2050b696a0f1db12c5301fbe940488d87d1..dae834b637164fabea2b17d2d752a04d public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -764,6 +765,7 @@ public class PurpurWorldConfig { +@@ -760,6 +761,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0217-Halloween-options-and-optimizations.patch b/patches/server/0214-Halloween-options-and-optimizations.patch similarity index 87% rename from patches/server/0217-Halloween-options-and-optimizations.patch rename to patches/server/0214-Halloween-options-and-optimizations.patch index 4df7eb178..b8c741a19 100644 --- a/patches/server/0217-Halloween-options-and-optimizations.patch +++ b/patches/server/0214-Halloween-options-and-optimizations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a667edd2a 100644 +index 0ed3d4f4cb9e2d11391c39633267becfd457102d..7d540fce81885776b417d6348dfffb6eb515beb5 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -300,7 +300,7 @@ public class Bat extends AmbientCreature { +@@ -304,7 +304,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -18,13 +18,13 @@ index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a } else if (random.nextBoolean()) { return false; @@ -314,6 +314,7 @@ public class Bat extends AmbientCreature { - private static boolean isSpookySeason = false; - private static final int ONE_HOUR = 20 * 60 * 60; - private static int lastSpookyCheck = -ONE_HOUR; + } + } + + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur private static boolean isHalloween() { - if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) { LocalDate localdate = LocalDate.now(); + int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java index f35637a105d5aa12fb57c2456f2b2a7db12a49f0..f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -43,7 +43,7 @@ index f35637a105d5aa12fb57c2456f2b2a7db12a49f0..f3e1fa62d9f067c0fe8aacb88bf30b01 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } 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 15baaf9c358019b1ce2152086e8d16591eec7dbb..79f791188a14a319a19b55674c891384fcb750c9 100644 +index 9b1ae2fa1681f1212b6a09d5b10b16634ce65470..728f4f2d7c37e253b0dab752f627a7b6c4e8339c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -586,11 +586,7 @@ public class Zombie extends Monster { @@ -60,10 +60,10 @@ index 15baaf9c358019b1ce2152086e8d16591eec7dbb..79f791188a14a319a19b55674c891384 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dae834b637164fabea2b17d2d752a04df31ee88a..9f3fe0265904da5a4be55fd3bc0ed1d283d241a9 100644 +index db9cb3292814b188abac8b1b9fdce1e5d7c4620a..9c2fc6c8d044c1f064010d856fac1b55626d96cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1619,6 +1619,13 @@ public class PurpurWorldConfig { +@@ -1610,6 +1610,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0218-Config-for-grindstones.patch b/patches/server/0215-Config-for-grindstones.patch similarity index 98% rename from patches/server/0218-Config-for-grindstones.patch rename to patches/server/0215-Config-for-grindstones.patch index 65da4266d..39bb5e3d8 100644 --- a/patches/server/0218-Config-for-grindstones.patch +++ b/patches/server/0215-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index a21eadcdfbdc4be803c5793bc97996db3e706071..132a07e226ae3ac6b5abc6f53c62345e2ab2f31f 100644 +index 076c2b2938c9b88b7e71dbc2aa9d8c7e90d4fe75..c79e87fde9de55dbfe8c3deaf725e2a73dc2af38 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0219-UPnP-Port-Forwarding.patch b/patches/server/0216-UPnP-Port-Forwarding.patch similarity index 91% rename from patches/server/0219-UPnP-Port-Forwarding.patch rename to patches/server/0216-UPnP-Port-Forwarding.patch index a6ed332a2..4d3b7849d 100644 --- a/patches/server/0219-UPnP-Port-Forwarding.patch +++ b/patches/server/0216-UPnP-Port-Forwarding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 615de0c4baf7797d03c43e5e164b198ebb70b341..ef25e6f4a36e98279061a8f066b37be956b92d49 100644 +index b2690db071a9ae26218406de09e37150a9d3eb66..bd89b6f3570998a6e9c9bb5cdf3b22e052269d89 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop CODEC = simpleCodec(Block::new); +@@ -320,7 +327,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { @@ -63,7 +63,7 @@ index f65b54919d19d2ddc7261cc36853babbaef3c822..cee9e07a250ed61570cf9787236308f9 }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -329,7 +336,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -336,7 +343,7 @@ public class Block extends BlockBehaviour implements ItemLike { io.papermc.paper.event.block.BlockBreakBlockEvent event = new io.papermc.paper.event.block.BlockBreakBlockEvent(org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), org.bukkit.craftbukkit.block.CraftBlock.at(world, source), items); event.callEvent(); for (var drop : event.getDrops()) { @@ -72,7 +72,7 @@ index f65b54919d19d2ddc7261cc36853babbaef3c822..cee9e07a250ed61570cf9787236308f9 } state.spawnAfterBreak(world.getMinecraftWorld(), pos, ItemStack.EMPTY, true); } -@@ -340,13 +347,53 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -347,13 +354,53 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { @@ -195,7 +195,7 @@ index 370a25d2deb54f10a35ee24d9e7e92fbfde60edf..2f19f6ac5de454845f5d13a3ebb93af6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48b21a71c25974668600cee9437cc8214f47b906..df79037cb06d06d716d0615ec89792ec30e5c18c 100644 +index 061e619a0c9a60a57faf1fe53a2533d73912e927..d2129e850a60b6606a1444f16e40e5baea449c93 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0224-Signs-allow-color-codes.patch b/patches/server/0221-Signs-allow-color-codes.patch similarity index 90% rename from patches/server/0224-Signs-allow-color-codes.patch rename to patches/server/0221-Signs-allow-color-codes.patch index 27aba3cdc..b6bc6dcf4 100644 --- a/patches/server/0224-Signs-allow-color-codes.patch +++ b/patches/server/0221-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1cca542c33510a01fb59631e68b1aa212d8230a5..e91f5203478623a6b50ad28236e265bd599ce999 100644 +index 074e718e4081d3e37f774613e6929224f28a3e26..1093ef4e97d3bc84802d4fc96a6f95a5a24624b9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1576,6 +1576,7 @@ public class ServerPlayer extends Player { +@@ -1588,6 +1588,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -17,10 +17,10 @@ index 1cca542c33510a01fb59631e68b1aa212d8230a5..e91f5203478623a6b50ad28236e265bd this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index 38cde466714e5663cd416b6afd5d2558e139ec09..2d625f18f2ba42ee5a1ebeea78ca395ad6f88b37 100644 +index bc01970c5ef9cde4a75394d6977837e924a38463..642e81d7ce763e3f983c83c967f7204164d260be 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -202,16 +202,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -200,16 +200,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C return this.setText((SignText) textChanger.apply(signtext), front); } @@ -54,7 +54,7 @@ index 38cde466714e5663cd416b6afd5d2558e139ec09..2d625f18f2ba42ee5a1ebeea78ca395a } } -@@ -351,6 +366,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -349,6 +364,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C return ClientboundBlockEntityDataPacket.create(this); } @@ -84,11 +84,11 @@ index 38cde466714e5663cd416b6afd5d2558e139ec09..2d625f18f2ba42ee5a1ebeea78ca395a public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df79037cb06d06d716d0615ec89792ec30e5c18c..504225c5b6085ca25a816d4a6259de36ed68941c 100644 +index d2129e850a60b6606a1444f16e40e5baea449c93..db741a6bdcba63c6f716c6093d3ddbc8e2533587 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -977,6 +977,11 @@ public class PurpurWorldConfig { - shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks); +@@ -968,6 +968,11 @@ public class PurpurWorldConfig { + fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } + public boolean signAllowColors = false; diff --git a/patches/server/0225-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 89% rename from patches/server/0225-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index 4873329c8..8b6096bae 100644 --- a/patches/server/0225-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Kelp, cave, weeping, and twisting vines configurable max diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java -index ead7b37122c76d43af2cdd17af7f0da8014efb26..1acc2dcda68ec8e462d51927f2ea985e7952a830 100644 +index 54916c80720f219bf747250a2ff9a875f180c7a2..cae6d33728a39de9db908e1e24fdc3ad987d0542 100644 --- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -88,4 +88,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl +@@ -94,4 +94,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { world.setBlock(pos, state.setValue(BERRIES, Boolean.valueOf(true)), 2); } @@ -22,10 +22,10 @@ index ead7b37122c76d43af2cdd17af7f0da8014efb26..1acc2dcda68ec8e462d51927f2ea985e + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a522304f28178 100644 +index 4ebdc4918131a15a1c91b45e8ceb1392bca20a81..2537f99baca6213618865d60f84e96b8a4849307 100644 --- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -@@ -30,12 +30,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public BlockState getStateForPlacement(LevelAccessor world) { @@ -40,7 +40,7 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a5223 } @Override -@@ -51,7 +51,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -55,7 +55,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } else { modifier = world.spigotConfig.caveVinesModifier; } @@ -49,7 +49,7 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a5223 // Spigot end BlockPos blockposition1 = pos.relative(this.growthDirection); -@@ -73,11 +73,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -77,11 +77,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } public BlockState getMaxAgeState(BlockState state) { @@ -63,7 +63,7 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a5223 } protected BlockState updateBodyAfterConvertedFromHead(BlockState from, BlockState to) { -@@ -119,13 +119,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -123,13 +123,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockposition1 = pos.relative(this.growthDirection); @@ -79,7 +79,7 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a5223 } } -@@ -138,4 +138,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -142,4 +142,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements protected GrowingPlantHeadBlock getHeadBlock() { return this; } @@ -87,10 +87,10 @@ index b325fdec8eb99ce57152a5c0fefa5059685276e4..c93e60b01dd46e7de6a6b5a5149a5223 + public abstract int getMaxGrowthAge(); // Purpur } diff --git a/src/main/java/net/minecraft/world/level/block/KelpBlock.java b/src/main/java/net/minecraft/world/level/block/KelpBlock.java -index ff30a93f4160e8e22b40c7a7033c14fa15839160..bf043e1b9f0ec5876a2fa2d0597ec3c60b32b2c0 100644 +index 4dbacee1930bc3955ce431e1d32353588b47afc9..a53c6ab63fd10ac94292836120152f54f23c1e13 100644 --- a/src/main/java/net/minecraft/world/level/block/KelpBlock.java +++ b/src/main/java/net/minecraft/world/level/block/KelpBlock.java -@@ -65,4 +65,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta +@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta public FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } @@ -103,10 +103,10 @@ index ff30a93f4160e8e22b40c7a7033c14fa15839160..bf043e1b9f0ec5876a2fa2d0597ec3c6 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java b/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java -index 6866605c7ef5361b21130a19a59c3fa3660dfb19..dee5d76d29da13f8639ab5d392cd0143201e71ba 100644 +index b4f75d034fbaea8ca68c1b5c5715773e0b8a9036..d05939c4b2ae42a09ee9e97431e83babfc8ed76c 100644 --- a/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java -@@ -27,4 +27,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +34,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } @@ -119,10 +119,10 @@ index 6866605c7ef5361b21130a19a59c3fa3660dfb19..dee5d76d29da13f8639ab5d392cd0143 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java b/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java -index e5c135ec059746b75fe58516809584221285cdbe..713c7e6e31a3e1097b612c77a4fce147c9252e0b 100644 +index 98e62d2cd3c106753c3be4a217e9107397d388ab..6a1fd51423c17cd1498cb313fa52314daaca0a29 100644 --- a/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java -@@ -27,4 +27,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +34,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/patches/server/0226-Mobs-always-drop-experience.patch b/patches/server/0223-Mobs-always-drop-experience.patch similarity index 91% rename from patches/server/0226-Mobs-always-drop-experience.patch rename to patches/server/0223-Mobs-always-drop-experience.patch index 74bcf2133..e628a8a3d 100644 --- a/patches/server/0226-Mobs-always-drop-experience.patch +++ b/patches/server/0223-Mobs-always-drop-experience.patch @@ -21,10 +21,10 @@ index d04e48d6a0a6dc7825a3e3d4cf854e294a75d19c..b18cbe85330e26de6f6cbfcc3d51a741 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index c103c3da165ec4a9717400fdf278de2a667edd2a..1eab1393a2636c4a247f25dae317cea60cc7021c 100644 +index 7d540fce81885776b417d6348dfffb6eb515beb5..fc3393d1f5fa637d63c8f614bad3f25155d0342e 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -281,6 +281,11 @@ public class Bat extends AmbientCreature { +@@ -285,6 +285,11 @@ public class Bat extends AmbientCreature { return this.level().purpurConfig.batTakeDamageFromWater; } @@ -37,10 +37,10 @@ index c103c3da165ec4a9717400fdf278de2a667edd2a..1eab1393a2636c4a247f25dae317cea6 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 d969a4bb3522faa5f88cae92fcd0bad375b7b0f2..1ddd4ad531e1c536bc3769dc84007d3a3c0350df 100644 +index a4c6ea94be1c1a610c6141328192a29052b9f157..6d7b8c9f9bfe296263f1752f485dcf8f53af8142 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -486,6 +486,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -493,6 +493,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeTakeDamageFromWater; } @@ -117,7 +117,7 @@ index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 9a1e9a69adf97ab92d9df817716750b7da6e6742..1807c7bac6f5012da8130dd41edeb9dd4df32a47 100644 +index 0453ba99a640855c6e13cb1e1d82929842f240ea..ed2769d8049bb304c1ee3b8e162046855951a624 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -169,6 +169,11 @@ public class Dolphin extends WaterAnimal { @@ -133,7 +133,7 @@ index 9a1e9a69adf97ab92d9df817716750b7da6e6742..1807c7bac6f5012da8130dd41edeb9dd @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index a1f13c54b7ded4b10fb4e6bd82a384d13446b62f..075554f28dab5809d0f2d346bad40efc16b38371 100644 +index c8efa4029136d0cd54a5f73f003e022511cc7c8b..77d40aad6e336cac7ee4e4adef159571181ba44a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { @@ -165,7 +165,7 @@ index c2817324ff57860ea2628dc4ac8e78b76cf67a5a..64aba511e615983988cdb6a0fd45b7d9 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 6b635c997a8052f6ea9b6dc39bef70000edbd782..ab5b150b379598861666ad32906e1fe454437063 100644 +index 1e51eee2c4e425c7ac0152b55a1d1376a5a5708e..c49d25eae4b9d2cdd15022b32947a94364ea2791 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -95,6 +95,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 26062173d137e26abdc452f7b2e0be0ee6dddfa3..fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2 100644 +index b41509e26808a025bc247fa209d3b9df10368013..5ac471fdc1acfd04a8cdf3e044949e48a6df208d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -119,6 +119,11 @@ public class Goat extends Animal { @@ -501,10 +501,10 @@ index 53546e904948d03882e5f5b0a8d4256c72698afb..42dcdbec69b052679e590a1ff932c619 protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 1a988e2abb7c5f7dafa325f2a9d92a99be06681f..6e3af90f4cb4f7722bd1601a515fd9a377459d1b 100644 +index 688c87743446bdf5a9e2b830b8a47655d80f3284..64f0f486e29e0b63b024dd5c06738e12d0fb5b9a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -63,6 +63,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -67,6 +67,11 @@ public class SkeletonHorse extends AbstractHorse { return this.level().purpurConfig.skeletonHorseTakeDamageFromWater; } @@ -533,10 +533,10 @@ index 17648925f97110f2439890388f4bfbbff0917c61..02e3adc9a55fa9cd2a418094eb206970 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 9dcc47b0680227d1ada06366ca2a334535d18425..9e4a1c3ea8ce9ef438f958498cce4b04ec70dba9 100644 +index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293d99c7e36 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -@@ -59,6 +59,11 @@ public class ZombieHorse extends AbstractHorse { +@@ -63,6 +63,11 @@ public class ZombieHorse extends AbstractHorse { return this.level().purpurConfig.zombieHorseTakeDamageFromWater; } @@ -549,7 +549,7 @@ index 9dcc47b0680227d1ada06366ca2a334535d18425..9e4a1c3ea8ce9ef438f958498cce4b04 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } 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 5bf7a6ecd58612c8502ed747263b6c0edd445294..c94a1b75593ad01e7f79fdc84818ea8ec269e124 100644 +index 73c967330cc793acc029c17f037d985e6ba919de..8f8a3e03eec72cd48b10649778ec2f26016c419a 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 @@ -132,6 +132,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -613,7 +613,7 @@ index a8bc27c858c6ddec2ff2f84b5c1dc51c3b1b04b0..304ea7fdcd410a7c88ec61143364e14d protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 9346d634dd2b8cb3d89aa7ccf12fec6ff79bbe2f..63a1cf5604c14025171d7be7434e2d6b64c98107 100644 +index 6e6d7f68cf1c1c224b67a9d674fdcaa67ea00359..034bb2d1292dde6276885c3ea71d886c3894311c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -116,6 +116,11 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -645,7 +645,7 @@ index cd1f830bf28b1c68e2b9cc7daa77f696234a22c9..df8d1b34078031001c50325b8cf5bfa9 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 02998e2f3d912d47641e7c9199467b5301de1e4c..4c9ffa8e1ab97d8156ead0ed189c769ffd9b4aae 100644 +index 3583d0c01410987584a53bb6e717d5636e2c9f69..c0180f3d7ef4f22bf967b2acc3dde3925283415d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -120,6 +120,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -677,10 +677,10 @@ index c0c3ab5dbf5987e543e6cdd1a814d2ec3ec17939..20ca96baf8f73fd5835422c6551f515a protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 1ef547285cfb8e74404e4108a1403c8fda43cb1f..4095f03ccd1712335baffe858603618100aed99c 100644 +index db3a49a979a9d84f29228ae975133c46216bfb75..daee6c4c0c2d43b65cdfd691bbbdc72465702dfe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -77,6 +77,11 @@ public class Evoker extends SpellcasterIllager { +@@ -78,6 +78,11 @@ public class Evoker extends SpellcasterIllager { return this.level().purpurConfig.evokerTakeDamageFromWater; } @@ -725,7 +725,7 @@ index ecaccb4697bf2acaa6dc9034486fcf97c184aa71..d13eed85d5399cd6991b3ad90f05a580 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 93cd1129003b360ca40ad50fe849bd834a5f2a9b..54113957c9cfab2ad3be25dbc05b8c29d1a064d5 100644 +index c696ffd7f4454ca79933cef04bf2b89e2a65b8cf..01c558673f0bb5034bca9df0e473375e7b7e724e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -104,6 +104,11 @@ public class Guardian extends Monster { @@ -741,7 +741,7 @@ index 93cd1129003b360ca40ad50fe849bd834a5f2a9b..54113957c9cfab2ad3be25dbc05b8c29 protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 481a6cf3dfc2948d80071920b905b488de8737e5..473f28e86a0e5157264b83d9c3c4a18c72216da3 100644 +index 5ac87650e357f3ac48e37713b9b0b18ad4d6feb6..06a5106a94a44c1d21537410d801cdd945503d69 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -72,6 +72,11 @@ public class Husk extends Zombie { @@ -754,7 +754,7 @@ index 481a6cf3dfc2948d80071920b905b488de8737e5..473f28e86a0e5157264b83d9c3c4a18c + } + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); + return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index 91294d87521c884c402485b923691f9fd8985353..f9cddf46d1dbcabc738842ba039daa76bb6f3eb5 100644 @@ -837,7 +837,7 @@ index 5e717433ef29d02669ee2e95454c69c36cbafc24..c9c21c87e3bd1c404fbef6768761bcb5 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 40f4a53cf244549e9cf392f4286bdec1a6852574..81caa18fca658f70846ba437ac02906f5e9653b9 100644 +index 47abc81aa04774abeb97c912cd118bbab3b51e86..22669a188c1961783341b22551325e19aaeb8088 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -141,6 +141,11 @@ public class Shulker extends AbstractGolem implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index c95d76c696d9ee39e284e7798bf624d339c98799..1be1bfb831198b68d8e20bf5ff922edff8832114 100644 +index 728f4f2d7c37e253b0dab752f627a7b6c4e8339c..f6dd5fd56926215830ccebbd46098d4bc08e17e4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,11 @@ public class Zombie extends Monster { @@ -1077,7 +1077,7 @@ index 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dc public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9f3dd4d14 100644 +index d1501c1048417defdf1766366b572f2c98989cc9..a3a21f0c102cadcbe5882de716e90272fddd7f8c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1093,7 +1093,7 @@ index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index e506dcf390ecb5cce8ae6993df7ec91b3ebc125e..9ca1618ab945ad834c5fc221ada49058f806e79c 100644 +index f9e03dc7178c76ea70e45f265d9b42f9d2fe960d..7612a361645018a4f81c374c523bb191e0ff40f0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1125,10 +1125,10 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 6146f3e52eb1d8f47b5a41eff634d2c7cc24c26f..093b10bec1212d47f05e1270302436290cbd282e 100644 +index f78c41833169264fabc76d13bb4b9a89169aa0fe..9eaa0908a9251a53e9d0434a6bf5105033b6fcd2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } @@ -1157,10 +1157,10 @@ index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f8176 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637151f81b1 100644 +index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce17971030e3a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1044,12 +1044,14 @@ public class PurpurWorldConfig { +@@ -1035,12 +1035,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean batRidable = false; -@@ -1065,6 +1067,7 @@ public class PurpurWorldConfig { +@@ -1056,6 +1058,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1084,6 +1087,7 @@ public class PurpurWorldConfig { +@@ -1075,6 +1078,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean beeRidable = false; -@@ -1095,6 +1099,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1090,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1110,6 +1115,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1106,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean blazeRidable = false; -@@ -1118,6 +1124,7 @@ public class PurpurWorldConfig { +@@ -1109,6 +1115,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1130,6 +1137,7 @@ public class PurpurWorldConfig { +@@ -1121,6 +1128,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean camelRidableInWater = false; -@@ -1161,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1152,6 +1160,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1181,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1172,6 +1181,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean caveSpiderRidable = false; -@@ -1188,6 +1198,7 @@ public class PurpurWorldConfig { +@@ -1179,6 +1189,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1199,6 +1210,7 @@ public class PurpurWorldConfig { +@@ -1190,6 +1201,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean chickenRidable = false; -@@ -1208,6 +1220,7 @@ public class PurpurWorldConfig { +@@ -1199,6 +1211,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1221,12 +1234,14 @@ public class PurpurWorldConfig { +@@ -1212,12 +1225,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1237,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1228,6 +1243,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean cowRidable = false; -@@ -1248,6 +1264,7 @@ public class PurpurWorldConfig { +@@ -1239,6 +1255,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1268,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1276,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean creeperRidable = false; -@@ -1280,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1271,6 +1289,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1296,6 +1315,7 @@ public class PurpurWorldConfig { +@@ -1287,6 +1306,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean dolphinRidable = false; -@@ -1307,6 +1327,7 @@ public class PurpurWorldConfig { +@@ -1298,6 +1318,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1322,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1334,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean donkeyRidableInWater = false; -@@ -1333,6 +1355,7 @@ public class PurpurWorldConfig { +@@ -1324,6 +1346,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1350,6 +1373,7 @@ public class PurpurWorldConfig { +@@ -1341,6 +1364,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean drownedRidable = false; -@@ -1362,6 +1386,7 @@ public class PurpurWorldConfig { +@@ -1353,6 +1377,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1378,12 +1403,14 @@ public class PurpurWorldConfig { +@@ -1369,12 +1394,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1394,6 +1421,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1412,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean enderDragonRidable = false; -@@ -1439,6 +1467,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1458,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1462,6 +1491,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1482,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean endermiteRidable = false; -@@ -1469,6 +1499,7 @@ public class PurpurWorldConfig { +@@ -1460,6 +1490,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1480,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1471,6 +1502,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean evokerRidable = false; -@@ -1488,6 +1520,7 @@ public class PurpurWorldConfig { +@@ -1479,6 +1511,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1500,6 +1533,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1524,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean foxRidable = false; -@@ -1510,6 +1544,7 @@ public class PurpurWorldConfig { +@@ -1501,6 +1535,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1524,6 +1559,7 @@ public class PurpurWorldConfig { +@@ -1515,6 +1550,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean frogRidable = false; -@@ -1545,6 +1581,7 @@ public class PurpurWorldConfig { +@@ -1536,6 +1572,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1557,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1548,6 +1585,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean giantRidable = false; -@@ -1570,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1599,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1591,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1582,6 +1621,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean glowSquidRidable = false; -@@ -1598,12 +1638,14 @@ public class PurpurWorldConfig { +@@ -1589,12 +1629,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean goatRidable = false; -@@ -1612,6 +1654,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1645,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1619,12 +1662,14 @@ public class PurpurWorldConfig { +@@ -1610,12 +1653,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1635,6 +1680,7 @@ public class PurpurWorldConfig { +@@ -1626,6 +1671,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean forceHalloweenSeason = false; -@@ -1650,6 +1696,7 @@ public class PurpurWorldConfig { +@@ -1641,6 +1687,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1662,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1653,6 +1700,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean horseRidableInWater = false; -@@ -1673,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1664,6 +1712,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1690,6 +1739,7 @@ public class PurpurWorldConfig { +@@ -1681,6 +1730,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean huskRidable = false; -@@ -1701,6 +1751,7 @@ public class PurpurWorldConfig { +@@ -1692,6 +1742,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1716,6 +1767,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1758,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean illusionerRidable = false; -@@ -1725,6 +1777,7 @@ public class PurpurWorldConfig { +@@ -1716,6 +1768,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1742,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1786,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean ironGolemRidable = false; -@@ -1752,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1743,6 +1797,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1766,6 +1821,7 @@ public class PurpurWorldConfig { +@@ -1757,6 +1812,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean llamaRidable = false; -@@ -1780,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1771,6 +1827,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1800,6 +1857,7 @@ public class PurpurWorldConfig { +@@ -1791,6 +1848,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean magmaCubeRidable = false; -@@ -1810,6 +1868,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1859,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1824,6 +1883,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1874,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean mooshroomRidable = false; -@@ -1832,6 +1892,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1883,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1844,6 +1905,7 @@ public class PurpurWorldConfig { +@@ -1835,6 +1896,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean muleRidableInWater = false; -@@ -1855,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1908,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1872,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1863,6 +1926,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean ocelotRidable = false; -@@ -1880,6 +1944,7 @@ public class PurpurWorldConfig { +@@ -1871,6 +1935,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1892,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1948,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean pandaRidable = false; -@@ -1900,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1891,6 +1957,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1912,6 +1979,7 @@ public class PurpurWorldConfig { +@@ -1903,6 +1970,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean parrotRidable = false; -@@ -1921,6 +1989,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +1980,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1934,6 +2003,7 @@ public class PurpurWorldConfig { +@@ -1925,6 +1994,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean phantomRidable = false; -@@ -1961,6 +2031,7 @@ public class PurpurWorldConfig { +@@ -1952,6 +2022,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1996,6 +2067,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2058,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean pigRidable = false; -@@ -2005,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -1996,6 +2068,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2018,6 +2091,7 @@ public class PurpurWorldConfig { +@@ -2009,6 +2082,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean piglinRidable = false; -@@ -2027,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2092,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2040,6 +2115,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2106,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean piglinBruteRidable = false; -@@ -2047,6 +2123,7 @@ public class PurpurWorldConfig { +@@ -2038,6 +2114,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2058,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2126,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean pillagerRidable = false; -@@ -2066,6 +2144,7 @@ public class PurpurWorldConfig { +@@ -2057,6 +2135,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2078,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2148,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean polarBearRidable = false; -@@ -2088,6 +2168,7 @@ public class PurpurWorldConfig { +@@ -2079,6 +2159,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2103,12 +2184,14 @@ public class PurpurWorldConfig { +@@ -2094,12 +2175,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2119,6 +2202,7 @@ public class PurpurWorldConfig { +@@ -2110,6 +2193,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean rabbitRidable = false; -@@ -2130,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2205,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2145,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2136,6 +2221,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean ravagerRidable = false; -@@ -2154,6 +2240,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2231,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2183,12 +2270,14 @@ public class PurpurWorldConfig { +@@ -2174,12 +2261,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2199,6 +2288,7 @@ public class PurpurWorldConfig { +@@ -2190,6 +2279,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean sheepRidable = false; -@@ -2208,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2199,6 +2289,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2221,6 +2312,7 @@ public class PurpurWorldConfig { +@@ -2212,6 +2303,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean shulkerRidable = false; -@@ -2234,6 +2326,7 @@ public class PurpurWorldConfig { +@@ -2225,6 +2317,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2251,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2242,6 +2335,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean silverfishRidable = false; -@@ -2259,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2250,6 +2344,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2271,6 +2366,7 @@ public class PurpurWorldConfig { +@@ -2262,6 +2357,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean skeletonRidable = false; -@@ -2278,6 +2374,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2365,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2289,6 +2386,7 @@ public class PurpurWorldConfig { +@@ -2280,6 +2377,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean skeletonHorseRidable = false; -@@ -2301,6 +2399,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2390,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2318,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2309,6 +2408,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean slimeRidable = false; -@@ -2328,6 +2428,7 @@ public class PurpurWorldConfig { +@@ -2319,6 +2419,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2342,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2333,6 +2434,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean snowGolemRidable = false; -@@ -2357,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2450,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2376,6 +2479,7 @@ public class PurpurWorldConfig { +@@ -2367,6 +2470,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean snifferRidable = false; -@@ -2398,6 +2502,7 @@ public class PurpurWorldConfig { +@@ -2389,6 +2493,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2411,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2402,6 +2507,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean spiderRidable = false; -@@ -2418,6 +2524,7 @@ public class PurpurWorldConfig { +@@ -2409,6 +2515,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2429,6 +2536,7 @@ public class PurpurWorldConfig { +@@ -2420,6 +2527,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean strayRidable = false; -@@ -2436,6 +2544,7 @@ public class PurpurWorldConfig { +@@ -2427,6 +2535,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2447,6 +2556,7 @@ public class PurpurWorldConfig { +@@ -2438,6 +2547,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean striderRidable = false; -@@ -2456,6 +2566,7 @@ public class PurpurWorldConfig { +@@ -2447,6 +2557,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2469,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2460,6 +2571,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean tadpoleRidable = false; -@@ -2491,6 +2603,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2594,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2510,12 +2623,14 @@ public class PurpurWorldConfig { +@@ -2501,12 +2614,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2526,6 +2641,7 @@ public class PurpurWorldConfig { +@@ -2517,6 +2632,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean turtleRidable = false; -@@ -2534,6 +2650,7 @@ public class PurpurWorldConfig { +@@ -2525,6 +2641,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2546,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2537,6 +2654,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean vexRidable = false; -@@ -2554,6 +2672,7 @@ public class PurpurWorldConfig { +@@ -2545,6 +2663,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2566,6 +2685,7 @@ public class PurpurWorldConfig { +@@ -2557,6 +2676,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean villagerRidable = false; -@@ -2581,6 +2701,7 @@ public class PurpurWorldConfig { +@@ -2572,6 +2692,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2600,6 +2721,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2712,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean vindicatorRidable = false; -@@ -2608,6 +2730,7 @@ public class PurpurWorldConfig { +@@ -2599,6 +2721,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2620,6 +2743,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2734,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean wanderingTraderRidable = false; -@@ -2630,6 +2754,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2745,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2644,6 +2769,7 @@ public class PurpurWorldConfig { +@@ -2635,6 +2760,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean wardenRidable = false; -@@ -2660,6 +2786,7 @@ public class PurpurWorldConfig { +@@ -2651,6 +2777,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2671,6 +2798,7 @@ public class PurpurWorldConfig { +@@ -2662,6 +2789,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean witherRidable = false; -@@ -2685,6 +2813,7 @@ public class PurpurWorldConfig { +@@ -2676,6 +2804,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2707,6 +2836,7 @@ public class PurpurWorldConfig { +@@ -2698,6 +2827,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean witherSkeletonRidable = false; -@@ -2714,6 +2844,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2835,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2725,6 +2856,7 @@ public class PurpurWorldConfig { +@@ -2716,6 +2847,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean wolfRidable = false; -@@ -2736,6 +2868,7 @@ public class PurpurWorldConfig { +@@ -2727,6 +2859,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2755,6 +2888,7 @@ public class PurpurWorldConfig { +@@ -2746,6 +2879,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean zoglinRidable = false; -@@ -2762,6 +2896,7 @@ public class PurpurWorldConfig { +@@ -2753,6 +2887,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2773,6 +2908,7 @@ public class PurpurWorldConfig { +@@ -2764,6 +2899,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean zombieRidable = false; -@@ -2786,6 +2922,7 @@ public class PurpurWorldConfig { +@@ -2777,6 +2913,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2803,6 +2940,7 @@ public class PurpurWorldConfig { +@@ -2794,6 +2931,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean zombieHorseRidable = false; -@@ -2816,6 +2954,7 @@ public class PurpurWorldConfig { +@@ -2807,6 +2945,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2834,6 +2973,7 @@ public class PurpurWorldConfig { +@@ -2825,6 +2964,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean zombieVillagerRidable = false; -@@ -2848,6 +2988,7 @@ public class PurpurWorldConfig { +@@ -2839,6 +2979,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2866,6 +3007,7 @@ public class PurpurWorldConfig { +@@ -2857,6 +2998,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 } public boolean zombifiedPiglinRidable = false; -@@ -2878,6 +3020,7 @@ public class PurpurWorldConfig { +@@ -2869,6 +3011,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2894,6 +3037,7 @@ public class PurpurWorldConfig { +@@ -2885,6 +3028,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0227-Potion-NamespacedKey.patch b/patches/server/0224-Potion-NamespacedKey.patch similarity index 98% rename from patches/server/0227-Potion-NamespacedKey.patch rename to patches/server/0224-Potion-NamespacedKey.patch index 4af9f074a..01a1d677b 100644 --- a/patches/server/0227-Potion-NamespacedKey.patch +++ b/patches/server/0224-Potion-NamespacedKey.patch @@ -160,10 +160,10 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 7feff1402b3034d0f387440f28ee7a71e4ff4acf..3741993bfdf6b356619d04296c16cf2d2018e091 100644 +index ea91da46779b177d3457e4683a76cedea8bc684d..026e420b561afea5b3daa0f6bcf2cdfce6fb9e9a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -466,7 +466,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @Override public boolean addPotionEffect(PotionEffect effect, boolean force) { org.spigotmc.AsyncCatcher.catchOp("effect add"); // Paper diff --git a/patches/server/0228-Grindstone-API.patch b/patches/server/0225-Grindstone-API.patch similarity index 95% rename from patches/server/0228-Grindstone-API.patch rename to patches/server/0225-Grindstone-API.patch index 62b41be83..3b9493d3c 100644 --- a/patches/server/0228-Grindstone-API.patch +++ b/patches/server/0225-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 132a07e226ae3ac6b5abc6f53c62345e2ab2f31f..3b721092a7a73472756064e0eb91d3220fdc4bc8 100644 +index c79e87fde9de55dbfe8c3deaf725e2a73dc2af38..b1eacb9691b320a10de3420fae3632bb9d5b7ae3 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 88% rename from patches/server/0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 21996dc6f..394f50e73 100644 --- a/patches/server/0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ability for hoe to replant crops and nether warts diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java -index 03fde6e47c4a347c62fe9b4a3351769aedf874f6..ca906b0250e5332f7ececf1419ca6d2c1d385adc 100644 +index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff9900072ad36 100644 --- a/src/main/java/net/minecraft/world/level/block/BushBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BushBlock.java -@@ -48,4 +48,24 @@ public class BushBlock extends Block { +@@ -52,4 +52,24 @@ public abstract class BushBlock extends Block { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, world, pos, type); } @@ -34,10 +34,10 @@ index 03fde6e47c4a347c62fe9b4a3351769aedf874f6..ca906b0250e5332f7ececf1419ca6d2c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 3f429f083f45d34effc273ccaa5db4da089f7355..61d051f42d8c3d1f039b97fdc7a61b54f57ee86a 100644 +index 0e06958657201806f425990ac01a5f8acc540f3e..32b121fc8b92ce6ff202b967b7d08f77a9a332f4 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java -@@ -207,4 +207,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { +@@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(CropBlock.AGE); } @@ -54,10 +54,10 @@ index 3f429f083f45d34effc273ccaa5db4da089f7355..61d051f42d8c3d1f039b97fdc7a61b54 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index e55720c4d2fbdf6aae526910e87a67c29cf906fd..74fedd3e401c6d58c03c0579f4b919114404fd78 100644 +index 0fc333f240d6918e841a9221be42973839408802..7328764abb0790b389d396179db32f4a63bfe98a 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -@@ -60,4 +60,15 @@ public class NetherWartBlock extends BushBlock { +@@ -68,4 +68,15 @@ public class NetherWartBlock extends BushBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(NetherWartBlock.AGE); } @@ -74,10 +74,10 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..74fedd3e401c6d58c03c0579f4b91911 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41b856485bbb6872cc49cfdc460303e465c3143e..bda73dd90c7d5e72996efca0a41e7f4785c6f548 100644 +index 788cbfb4fddbede2788604bdd8ce17971030e3a2..1b556e774e5a2ddf1741ec6826638ed66f67523f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -543,6 +543,8 @@ public class PurpurWorldConfig { +@@ -539,6 +539,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 41b856485bbb6872cc49cfdc460303e465c3143e..bda73dd90c7d5e72996efca0a41e7f47 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -736,6 +738,8 @@ public class PurpurWorldConfig { +@@ -732,6 +734,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0230-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch similarity index 92% rename from patches/server/0230-Shearing-jeb-produces-random-color-wool.patch rename to patches/server/0227-Shearing-jeb-produces-random-color-wool.patch index 94433ce00..1ce31283f 100644 --- a/patches/server/0230-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index f2d0c67709e38209a8a02e98f4392b9e0a53c211..fb477c3c594bb81e92ae0c606635c309 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bda73dd90c7d5e72996efca0a41e7f4785c6f548..fad281ec8314d4431126abbcea997932401ea95e 100644 +index 1b556e774e5a2ddf1741ec6826638ed66f67523f..f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2303,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2294,6 +2294,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index bda73dd90c7d5e72996efca0a41e7f4785c6f548..fad281ec8314d4431126abbcea997932 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2317,6 +2318,7 @@ public class PurpurWorldConfig { +@@ -2308,6 +2309,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0231-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch similarity index 86% rename from patches/server/0231-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch index 78b87573e..e16f3b802 100644 --- a/patches/server/0231-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 9c834e3deed07eb70e6a57df2db732c1e2334737..8e975daca6a50c95d7fb620f2756b8bb2b7c7d6b 100644 +index 44bb9930313cae9d150cc08cbdcced10a35bd07d..9756c84e073d9e99ade0ee94c586b8e0fa426138 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -162,7 +162,7 @@ public class TurtleEggBlock extends Block { +@@ -169,7 +169,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level world) { float f = world.getTimeOfDay(1.0F); @@ -18,10 +18,10 @@ index 9c834e3deed07eb70e6a57df2db732c1e2334737..8e975daca6a50c95d7fb620f2756b8bb @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fad281ec8314d4431126abbcea997932401ea95e..c300838d83652a36389694e7afbec5feff11cd8a 100644 +index f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9..f607d41ffa51c00cb9edc70545e3d55fdf56f8db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1011,11 +1011,13 @@ public class PurpurWorldConfig { +@@ -1002,11 +1002,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0232-Mob-head-visibility-percent.patch b/patches/server/0229-Mob-head-visibility-percent.patch similarity index 90% rename from patches/server/0232-Mob-head-visibility-percent.patch rename to patches/server/0229-Mob-head-visibility-percent.patch index 7073f012e..1cc1608e6 100644 --- a/patches/server/0232-Mob-head-visibility-percent.patch +++ b/patches/server/0229-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 619a475f7a7869ddde87c47950c0dfbe7048d9d6..73fed7fb7cc9e38ebf111a365d25ee91657668e1 100644 +index cbf14a9f6c4059ac2246d840ff901113fb03f8cc..ccf94ec8c0fcff5d75365274f662ff24b3ade75d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index 619a475f7a7869ddde87c47950c0dfbe7048d9d6..73fed7fb7cc9e38ebf111a365d25ee91 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e2fb28133 100644 +index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9ea9aa4c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1305,6 +1305,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1296,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1322,6 +1323,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1314,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e } public boolean dolphinRidable = false; -@@ -2108,6 +2110,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2101,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2122,6 +2125,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2116,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e } public boolean piglinBruteRidable = false; -@@ -2383,6 +2387,7 @@ public class PurpurWorldConfig { +@@ -2374,6 +2378,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2395,6 +2400,7 @@ public class PurpurWorldConfig { +@@ -2386,6 +2391,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e } public boolean skeletonHorseRidable = false; -@@ -2931,6 +2937,7 @@ public class PurpurWorldConfig { +@@ -2922,6 +2928,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2949,6 +2956,7 @@ public class PurpurWorldConfig { +@@ -2940,6 +2947,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0233-Configurable-valid-characters-for-usernames.patch b/patches/server/0230-Configurable-valid-characters-for-usernames.patch similarity index 64% rename from patches/server/0233-Configurable-valid-characters-for-usernames.patch rename to patches/server/0230-Configurable-valid-characters-for-usernames.patch index d32428a81..3e98b0367 100644 --- a/patches/server/0233-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0230-Configurable-valid-characters-for-usernames.patch @@ -4,19 +4,18 @@ Date: Sat, 1 Jan 2022 18:38:58 -0600 Subject: [PATCH] Configurable valid characters for usernames -diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index e615e417627840d645db259bc9640a0471a52b05..f0bbc48e2df1da42e4bf9f7113451738b986fbbf 100644 ---- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -141,6 +141,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java +index fd67cefb971b394042c0fdd845c20cf55d8efc2f..fab644c79287a444fd58c43547beba3e06e9e7ff 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -2404,6 +2404,7 @@ public abstract class Player extends LivingEntity { + } + + public static boolean isValidUsername(String name) { ++ if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(name).matches(); // Purpur + // Paper start + if (name == null || name.isEmpty() || name.length() > 16) { return false; - } - -+ if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(in).matches(); // Purpur -+ - for (int i = 0, len = in.length(); i < len; ++i) { - char c = in.charAt(i); - diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index f562729f543ef2b5998c6c38c0a08b3ae4dab1bf..d56c2776d08306245618dca04cd39891bb61c1bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0234-Shears-can-have-looting-enchantment.patch b/patches/server/0231-Shears-can-have-looting-enchantment.patch similarity index 99% rename from patches/server/0234-Shears-can-have-looting-enchantment.patch rename to patches/server/0231-Shears-can-have-looting-enchantment.patch index 01fadb23a..daa85ac1a 100644 --- a/patches/server/0234-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0231-Shears-can-have-looting-enchantment.patch @@ -37,7 +37,7 @@ index 5e8cc5cfac8888628c6d513148f41be09ca65a2c..a089fc61ec09be6b7490375489178dc6 boolean readyForShearing(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index ab5b150b379598861666ad32906e1fe454437063..59ef1070c6c1ac876e097cd23835e4ed8b6e732f 100644 +index c49d25eae4b9d2cdd15022b32947a94364ea2791..6ce116dc3173d17b19c4c03fe9cf494dd022f0d5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -163,7 +163,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 84107011175b6e58b463d5d1b716a3262be0db77..856099241737c43b8213ccc203ef6bb7b7667b1f 100644 +index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d51d25cfb 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -103,7 +103,7 @@ public class FarmBlock extends Block { +@@ -110,7 +110,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -35,10 +35,10 @@ index 84107011175b6e58b463d5d1b716a3262be0db77..856099241737c43b8213ccc203ef6bb7 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 04bccaa4fe7e81a8f82f567bfb2a9bb838961ff4..4c4c5c853eb8a840e76af9aacd73a26e83aaf6f4 100644 +index 9b6309d247b88a73e26b66a65412af5407fcd640..13b1957f4338cc6bb406370e91ee58d7d4002148 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -889,6 +889,7 @@ public class PurpurWorldConfig { +@@ -885,6 +885,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 04bccaa4fe7e81a8f82f567bfb2a9bb838961ff4..4c4c5c853eb8a840e76af9aacd73a26e private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -896,6 +897,7 @@ public class PurpurWorldConfig { +@@ -892,6 +893,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0238-Configurable-player-pickup-exp-delay.patch b/patches/server/0235-Configurable-player-pickup-exp-delay.patch similarity index 89% rename from patches/server/0238-Configurable-player-pickup-exp-delay.patch rename to patches/server/0235-Configurable-player-pickup-exp-delay.patch index 5d9cec27e..c13022a37 100644 --- a/patches/server/0238-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0235-Configurable-player-pickup-exp-delay.patch @@ -9,7 +9,7 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 2bd576849403bc2cfae298c2210616192ddc38db..b2233635b6acc35ea3668c36c56e57f15420ac62 100644 +index 5450058d23f1ab20689183bd284b01fc93628db5..a3ef8e6a698df4c78e0494da48063ddd29caf62f 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -313,7 +313,7 @@ public class ExperienceOrb extends Entity { @@ -22,10 +22,10 @@ index 2bd576849403bc2cfae298c2210616192ddc38db..b2233635b6acc35ea3668c36c56e57f1 int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 52b4ffc17ac913bf64cf6a6b7a37ae6e5af9bd87..20c3d3c9d2150574e9b4761dc1bda11cee04862f 100644 +index fab644c79287a444fd58c43547beba3e06e9e7ff..f1fe8a0c1ff1514d9a158e18dc6d234d54388573 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -636,7 +636,7 @@ public abstract class Player extends LivingEntity { +@@ -631,7 +631,7 @@ public abstract class Player extends LivingEntity { while (iterator.hasNext()) { Entity entity = (Entity) iterator.next(); @@ -35,10 +35,10 @@ index 52b4ffc17ac913bf64cf6a6b7a37ae6e5af9bd87..20c3d3c9d2150574e9b4761dc1bda11c } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d1107d954d8dd040895908ddadf2c11c437a9ef..f0f83c4570c79ed88275631ee35aa20e5ef27748 100644 +index 13b1957f4338cc6bb406370e91ee58d7d4002148..99540c1866ee7f36edb7f29273d44f6a6013d879 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -422,6 +422,7 @@ public class PurpurWorldConfig { +@@ -420,6 +420,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 3d1107d954d8dd040895908ddadf2c11c437a9ef..f0f83c4570c79ed88275631ee35aa20e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -449,6 +450,7 @@ public class PurpurWorldConfig { +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0239-Allow-void-trading.patch b/patches/server/0236-Allow-void-trading.patch similarity index 87% rename from patches/server/0239-Allow-void-trading.patch rename to patches/server/0236-Allow-void-trading.patch index 7d1e315f4..e23a7dff5 100644 --- a/patches/server/0239-Allow-void-trading.patch +++ b/patches/server/0236-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 492a50f3b619753f8a353c739a3f10c44dfa7861..3c8585976bbfcb33c26ee5fde8448805e0f97e1a 100644 +index 5db8e4c8879d355843c196b17b8f39e9fe5d9a6a..cc45c828775ac8551fb1efa208f8acc9a79e7f49 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2878,7 +2878,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2902,7 +2902,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start @@ -18,10 +18,10 @@ index 492a50f3b619753f8a353c739a3f10c44dfa7861..3c8585976bbfcb33c26ee5fde8448805 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0f83c4570c79ed88275631ee35aa20e5ef27748..6008732a98759ac23daab766ea986162b816945f 100644 +index 99540c1866ee7f36edb7f29273d44f6a6013d879..17d12dceec818dfbfb9bccf263295840e2c6bc04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -423,6 +423,7 @@ public class PurpurWorldConfig { +@@ -421,6 +421,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index f0f83c4570c79ed88275631ee35aa20e5ef27748..6008732a98759ac23daab766ea986162 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -451,6 +452,7 @@ public class PurpurWorldConfig { +@@ -447,6 +448,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0240-Configurable-phantom-size.patch b/patches/server/0237-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0240-Configurable-phantom-size.patch rename to patches/server/0237-Configurable-phantom-size.patch index 54fe29305..5461c23e2 100644 --- a/patches/server/0240-Configurable-phantom-size.patch +++ b/patches/server/0237-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6008732a98759ac23daab766ea986162b816945f..807ca55a5734fccb10b1aae2d99e0b37aeffc614 100644 +index 17d12dceec818dfbfb9bccf263295840e2c6bc04..599b52cdbccd3b58d0e33d726590b38dece45f96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2048,6 +2048,8 @@ public class PurpurWorldConfig { +@@ -2039,6 +2039,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 6008732a98759ac23daab766ea986162b816945f..807ca55a5734fccb10b1aae2d99e0b37 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2084,6 +2086,13 @@ public class PurpurWorldConfig { +@@ -2075,6 +2077,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0241-Configurable-food-attributes.patch b/patches/server/0238-Configurable-food-attributes.patch similarity index 98% rename from patches/server/0241-Configurable-food-attributes.patch rename to patches/server/0238-Configurable-food-attributes.patch index f13cde73e..8fe5ba4f5 100644 --- a/patches/server/0241-Configurable-food-attributes.patch +++ b/patches/server/0238-Configurable-food-attributes.patch @@ -51,10 +51,10 @@ index b16d9e2eaa589f19c563ee70b1a56d67dbcdecb0..71beab673f04cd051c46ea37f8c84731 public static final FoodProperties BAKED_POTATO = (new FoodProperties.Builder()).nutrition(5).saturationMod(0.6F).build(); public static final FoodProperties BEEF = (new FoodProperties.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 31f5ed9dd1727eee24804a384817d2b76a45676b..5fbb13ebef0ca66419f3e5006d19e4a5918a038a 100644 +index e83ea53da012f3dcaa1f53bf6082a17a69e6ee13..cf68dca4096556b0c2594c76fcf113419e56dae0 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1309,6 +1309,13 @@ public class Items { +@@ -1367,6 +1367,13 @@ public class Items { ((BlockItem)item).registerBlocks(Item.BY_BLOCK, item); } diff --git a/patches/server/0242-Max-joins-per-second.patch b/patches/server/0239-Max-joins-per-second.patch similarity index 100% rename from patches/server/0242-Max-joins-per-second.patch rename to patches/server/0239-Max-joins-per-second.patch diff --git a/patches/server/0243-Configurable-minimum-demand-for-trades.patch b/patches/server/0240-Configurable-minimum-demand-for-trades.patch similarity index 89% rename from patches/server/0243-Configurable-minimum-demand-for-trades.patch rename to patches/server/0240-Configurable-minimum-demand-for-trades.patch index 993d75613..4920a4a88 100644 --- a/patches/server/0243-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0240-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. 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 093b10bec1212d47f05e1270302436290cbd282e..b2aa0ff2f07590e8832098d6dea027f1d3d20026 100644 +index 9eaa0908a9251a53e9d0434a6bf5105033b6fcd2..7b685f44109c44d7779a1fbf0152031193175bec 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -546,7 +546,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -544,7 +544,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65a2db407937c887f00bdc7cc8a84b5eba8e0df5..8517c0b219ccd3cbeb457d8d244534efec89c9a1 100644 +index 599b52cdbccd3b58d0e33d726590b38dece45f96..5f57614f37c63e967ee1866bb11de79a1ccc9e24 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2733,6 +2733,7 @@ public class PurpurWorldConfig { +@@ -2724,6 +2724,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 65a2db407937c887f00bdc7cc8a84b5eba8e0df5..8517c0b219ccd3cbeb457d8d244534ef private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2753,6 +2754,7 @@ public class PurpurWorldConfig { +@@ -2744,6 +2745,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0244-Lobotomize-stuck-villagers.patch b/patches/server/0241-Lobotomize-stuck-villagers.patch similarity index 83% rename from patches/server/0244-Lobotomize-stuck-villagers.patch rename to patches/server/0241-Lobotomize-stuck-villagers.patch index 477fe7a60..74b630a13 100644 --- a/patches/server/0244-Lobotomize-stuck-villagers.patch +++ b/patches/server/0241-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers 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 b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287adffc11b 100644 +index 7b685f44109c44d7779a1fbf0152031193175bec..52650c912b72de99a23eebf04c9a63945f04359c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -15,9 +15,9 @@ index b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287 + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private int notLobotomizedCount = 0; // Purpur - public long nextGolemPanic = -1; // Pufferfish - -@@ -200,6 +202,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + public Villager(EntityType entityType, Level world) { + this(entityType, world, VillagerType.PLAINS); +@@ -198,6 +200,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -65,7 +65,7 @@ index b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -297,14 +340,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -294,14 +337,20 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -73,25 +73,21 @@ index b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287 + protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end this.level().getProfiler().push("villagerBrain"); -- // Pufferfish start -- if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider -- this.getBrain().tick((ServerLevel) this.level(), this); // Paper -+ // Purpur start + // Purpur start + if (this.level().purpurConfig.villagerLobotomizeEnabled) { + // treat as inactive if lobotomized + inactive = inactive || checkLobotomized(); + } else { -+ // clean up state for API + this.isLobotomized = false; - } -- // Pufferfish end -+ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Purpur - only use brain if no rider -+ this.getBrain().tick((ServerLevel) this.level(), this); // Paper -+ else if (this.isLobotomized && shouldRestock()) restock(); -+ // Purpur end ++ } + // if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if (!inactive && (getRider() == null || !this.isControllable())) { // Purpur - only use brain if no rider + this.getBrain().tick((ServerLevel) this.level(), this); // Paper +- } ++ } else if (this.isLobotomized && shouldRestock()) restock(); + // Purpur end this.level().getProfiler().pop(); if (this.assignProfessionWhenSpawned) { - this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -109,10 +105,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8517c0b219ccd3cbeb457d8d244534efec89c9a1..b123c0505ab3924258aa7ed32262c0b6e99d0ec0 100644 +index 5f57614f37c63e967ee1866bb11de79a1ccc9e24..7f8851967625d9d3fd94d09af72888999a807668 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2734,6 +2734,8 @@ public class PurpurWorldConfig { +@@ -2725,6 +2725,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -121,7 +117,7 @@ index 8517c0b219ccd3cbeb457d8d244534efec89c9a1..b123c0505ab3924258aa7ed32262c0b6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2755,6 +2757,17 @@ public class PurpurWorldConfig { +@@ -2746,6 +2748,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0245-Option-for-villager-display-trade-item.patch b/patches/server/0242-Option-for-villager-display-trade-item.patch similarity index 91% rename from patches/server/0245-Option-for-villager-display-trade-item.patch rename to patches/server/0242-Option-for-villager-display-trade-item.patch index c0108782f..c7e5db8e2 100644 --- a/patches/server/0245-Option-for-villager-display-trade-item.patch +++ b/patches/server/0242-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b123c0505ab3924258aa7ed32262c0b6e99d0ec0..0786e51fa84f0b4e8661c1ea9c76b0a7c00648dc 100644 +index 7f8851967625d9d3fd94d09af72888999a807668..00fde25fb74499e83039a812c6f525ceaecde0b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2736,6 +2736,7 @@ public class PurpurWorldConfig { +@@ -2727,6 +2727,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index b123c0505ab3924258aa7ed32262c0b6e99d0ec0..0786e51fa84f0b4e8661c1ea9c76b0a7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2768,6 +2769,7 @@ public class PurpurWorldConfig { +@@ -2759,6 +2760,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 85% rename from patches/server/0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 9b6db0573..4f2afdd21 100644 --- a/patches/server/0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index cd2ce5bcb8c30e4657cd0e340d80544c7e805905..c8c6fed3f93903bb5c6145930538d415f6f59738 100644 +index 827912174ee08cd19249797d351887149b25c880..5b02848ea9f14060353014cada2d55397609e5ac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -82,6 +82,6 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -77,6 +77,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end @@ -17,10 +17,10 @@ index cd2ce5bcb8c30e4657cd0e340d80544c7e805905..c8c6fed3f93903bb5c6145930538d415 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38d13eb230cfb33a450b8a9a1a3c6aa2efe5b053..db1e6276243ee849757bed15f8308474afe56790 100644 +index 00fde25fb74499e83039a812c6f525ceaecde0b0..3cdfee20a6521c056d20a95b2bf08a7b351245e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -998,8 +998,10 @@ public class PurpurWorldConfig { +@@ -989,8 +989,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch similarity index 89% rename from patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch index f4e3e022a..b692d41ff 100644 --- a/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 03e446851e90f38a3e61db3fbecc9ff256cc0ae2..c8dc1d1f67474a06f82385d6ab7d893e3cb115ef 100644 +index ccf94ec8c0fcff5d75365274f662ff24b3ade75d..0061b6214f87f61f0bb4ddeffed8f719554a6b43 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1546,13 +1546,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1533,13 +1533,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,10 +25,10 @@ index 03e446851e90f38a3e61db3fbecc9ff256cc0ae2..c8dc1d1f67474a06f82385d6ab7d893e if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 796c1b9725bdc2499c80da6f2f0024727ea028d0..9c94fd78cbd0d3ef0c4dd3678262126b6ed2847b 100644 +index 026e420b561afea5b3daa0f6bcf2cdfce6fb9e9a..5a3fce46328661965480ebcbc381de33b65cdb66 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -454,7 +454,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; @@ -38,7 +38,7 @@ index 796c1b9725bdc2499c80da6f2f0024727ea028d0..9c94fd78cbd0d3ef0c4dd3678262126b // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1dffbf68af69545c6de09eec0c34d160daa895a9..115d9870e89d3efc56d4c6da4cf282e695c47fba 100644 +index 3cdfee20a6521c056d20a95b2bf08a7b351245e6..0f39c1b722924bb1d8a3a6faaa1000391f36036f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0248-Anvil-repair-damage-options.patch b/patches/server/0245-Anvil-repair-damage-options.patch similarity index 94% rename from patches/server/0248-Anvil-repair-damage-options.patch rename to patches/server/0245-Anvil-repair-damage-options.patch index e6cd11410..737b3bc18 100644 --- a/patches/server/0248-Anvil-repair-damage-options.patch +++ b/patches/server/0245-Anvil-repair-damage-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548fd90f8b0d 100644 +index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76a538d903 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -@@ -55,6 +55,54 @@ public class AnvilBlock extends FallingBlock { +@@ -62,6 +62,54 @@ public class AnvilBlock extends FallingBlock { @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { @@ -64,10 +64,10 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5e9e56c86de0ae3b8053367dac777c94a990a30..6ae50abd3d1bb4e5ff6f8865ca6f4303c8144b0e 100644 +index 0f39c1b722924bb1d8a3a6faaa1000391f36036f..ccf92e6d5374003b590f578a7168b09c61824720 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -750,9 +750,13 @@ public class PurpurWorldConfig { +@@ -746,9 +746,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 89% rename from patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 7889c0c86..d8b41af08 100644 --- a/patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 8e975daca6a50c95d7fb620f2756b8bb2b7c7d6b..e23b920be6702ef6faf97b42fb8a87442707d6be 100644 +index 9756c84e073d9e99ade0ee94c586b8e0fa426138..2c0dcfc916f0845dc830a7ac9ffc828df20f27d0 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -211,7 +211,13 @@ public class TurtleEggBlock extends Block { +@@ -218,7 +218,13 @@ public class TurtleEggBlock extends Block { if (!(entity instanceof LivingEntity)) { return false; } @@ -24,10 +24,10 @@ index 8e975daca6a50c95d7fb620f2756b8bb2b7c7d6b..e23b920be6702ef6faf97b42fb8a8744 return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ae50abd3d1bb4e5ff6f8865ca6f4303c8144b0e..ce4f8f9661c6c0d09fa517861aae80559859f09f 100644 +index ccf92e6d5374003b590f578a7168b09c61824720..0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1026,12 +1026,14 @@ public class PurpurWorldConfig { +@@ -1017,12 +1017,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0247-Add-toggle-for-enchant-level-clamping.patch similarity index 95% rename from patches/server/0250-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0247-Add-toggle-for-enchant-level-clamping.patch index 57cc0984b..685312949 100644 --- a/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0247-Add-toggle-for-enchant-level-clamping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 5532e166c7e010add65e5921722b50272c805c03..2776b124dd15e4c84edcfbf98ba44d53ef149e43 100644 +index 2b1decf36ff950d9572e3d8790e1f60ff84ce5fa..0505969be72d080c00733615ef5619fa2f4a36d4 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1209,7 +1209,7 @@ public final class ItemStack { +@@ -1234,7 +1234,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); diff --git a/patches/server/0251-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0248-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0251-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0248-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch similarity index 87% rename from patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch index 0aa265a28..48f8aa53a 100644 --- a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 3ec73049c8b681d2ff7f63623037e287adffc11b..c889e5e0ba42eac860d25c76e5956471eb29be7e 100644 +index 52650c912b72de99a23eebf04c9a63945f04359c..a46fc13b3072b65dc9284ece6cbf63a743b5c1a7 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1101,6 +1101,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1098,6 +1098,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,10 +18,10 @@ index 3ec73049c8b681d2ff7f63623037e287adffc11b..c889e5e0ba42eac860d25c76e5956471 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ecda4d9dcfb38189bb579b93f67047d5d0d00ae1..40bda43c2acbf41eb55cd358307dfd4c3e2c281a 100644 +index 0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c..3d94ddfe64251d7a154747cd3ab3fc7d703e0c05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2747,6 +2747,8 @@ public class PurpurWorldConfig { +@@ -2738,6 +2738,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index ecda4d9dcfb38189bb579b93f67047d5d0d00ae1..40bda43c2acbf41eb55cd358307dfd4c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { +@@ -2771,6 +2773,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0253-Stonecutter-damage.patch b/patches/server/0250-Stonecutter-damage.patch similarity index 92% rename from patches/server/0253-Stonecutter-damage.patch rename to patches/server/0250-Stonecutter-damage.patch index 41ac75f17..59f9b20ae 100644 --- a/patches/server/0253-Stonecutter-damage.patch +++ b/patches/server/0250-Stonecutter-damage.patch @@ -47,10 +47,10 @@ index 813916852774d6482791989252ecb67b945a8f84..4a5d2e263d2bbee96bde7012d3385fa3 // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..0882e67c5cf876e0fc58a4ca4accb4be40418983 100644 +index 77ae7b8ab24935d046cce1f8f7f476310876f9df..b683f3c2fcd37b17a732802738cd14be87065e54 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -@@ -92,4 +92,16 @@ public class StonecutterBlock extends Block { +@@ -99,4 +99,16 @@ public class StonecutterBlock extends Block { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -68,10 +68,10 @@ index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..0882e67c5cf876e0fc58a4ca4accb4be + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index d976a6df54c1e817def2d588692abe25a03ee0fa..ba57accc272958da4714896baeadb52c99383561 100644 +index 7702cd386247c1a850bb22ccf8c0724d5bec1020..29ec2f9a35dd73e8a6adf2e4edcfe543270520d8 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -465,7 +465,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -471,7 +471,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.BLOCKED; } else { // Paper end @@ -80,7 +80,7 @@ index d976a6df54c1e817def2d588692abe25a03ee0fa..ba57accc272958da4714896baeadb52c return BlockPathTypes.DANGER_OTHER; } -@@ -498,7 +498,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -504,7 +504,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { } else if (!blockState.is(BlockTags.TRAPDOORS) && !blockState.is(Blocks.LILY_PAD) && !blockState.is(Blocks.BIG_DRIPLEAF)) { if (blockState.is(Blocks.POWDER_SNOW)) { return BlockPathTypes.POWDER_SNOW; @@ -105,10 +105,10 @@ index 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc1 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b964bad8d599e093ad312a9dedf1a33856ce9ec1..417322e7cf09eb56acf5fc398ce2319b54c4477a 100644 +index 3d94ddfe64251d7a154747cd3ab3fc7d703e0c05..6d8b078aba1296ec4b51352a367d80550b5ee1bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1021,6 +1021,11 @@ public class PurpurWorldConfig { +@@ -1012,6 +1012,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch similarity index 88% rename from patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch index 027a8ae10..1e5e78cd5 100644 --- a/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786072f2953 100644 +index 10f5ffacc72a5e0116e2599ca83ee57a5b1ce0eb..31e6468f639de3ed0b25c3bc4ee09333c2150e1b 100644 --- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -@@ -22,7 +22,7 @@ public class MagmaBlock extends Block { +@@ -29,7 +29,7 @@ public class MagmaBlock extends Block { @Override public void stepOn(Level world, BlockPos pos, BlockState state, Entity entity) { @@ -18,10 +18,10 @@ index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 417322e7cf09eb56acf5fc398ce2319b54c4477a..93e601cad7c26024fe195ee5217c8d65c1b083e4 100644 +index 6d8b078aba1296ec4b51352a367d80550b5ee1bf..dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -952,6 +952,13 @@ public class PurpurWorldConfig { +@@ -948,6 +948,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0255-Add-config-for-snow-on-blue-ice.patch b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch similarity index 86% rename from patches/server/0255-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0252-Add-config-for-snow-on-blue-ice.patch index 102753e6d..b96e811a4 100644 --- a/patches/server/0255-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for snow on blue ice diff --git a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java -index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a120a4786c 100644 +index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db91aaaee22 100644 --- a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -81,6 +81,12 @@ public class SnowLayerBlock extends Block { +@@ -88,6 +88,12 @@ public class SnowLayerBlock extends Block { public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { BlockState iblockdata1 = world.getBlockState(pos.below()); @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93e601cad7c26024fe195ee5217c8d65c1b083e4..ea082eed28b9d63514291a094ebd99b8670e7910 100644 +index dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b..4b4a2646264b558c56bf91e70a110133fb0997bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -933,9 +933,11 @@ public class PurpurWorldConfig { +@@ -929,9 +929,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0256-Skeletons-eat-wither-roses.patch b/patches/server/0253-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0256-Skeletons-eat-wither-roses.patch rename to patches/server/0253-Skeletons-eat-wither-roses.patch index e53b7b39a..23605e916 100644 --- a/patches/server/0256-Skeletons-eat-wither-roses.patch +++ b/patches/server/0253-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4076b32e2e35165634b6d328ffa3ab692f8c854f..9ee1258955e99fa0adacfdc56b8621a2dfee064b 100644 +index 4b4a2646264b558c56bf91e70a110133fb0997bb..f36c75217028eea8503c15df710e4cabb8fdd741 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2429,6 +2429,7 @@ public class PurpurWorldConfig { +@@ -2420,6 +2420,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 4076b32e2e35165634b6d328ffa3ab692f8c854f..9ee1258955e99fa0adacfdc56b8621a2 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2442,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2434,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0257-Enchantment-Table-Persists-Lapis.patch b/patches/server/0254-Enchantment-Table-Persists-Lapis.patch similarity index 93% rename from patches/server/0257-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0254-Enchantment-Table-Persists-Lapis.patch index ba2f7c030..24ba68ad3 100644 --- a/patches/server/0257-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0254-Enchantment-Table-Persists-Lapis.patch @@ -71,10 +71,10 @@ index c5c509fbb915c60dfa95aac8510684d0b9f8b0ff..d604b7ec46f08993647979ed220a8484 }); } diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index 839b7bc9392906dca384003468746963631fe095..286f34eef22a85be3fe9747dc3c3f9a7d51f437c 100644 +index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770da38d6971 100644 --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -@@ -29,6 +29,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; +@@ -30,6 +30,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -82,8 +82,8 @@ index 839b7bc9392906dca384003468746963631fe095..286f34eef22a85be3fe9747dc3c3f9a7 +import net.minecraft.world.item.Items; // Purpur public class EnchantmentTableBlock extends BaseEntityBlock { - protected static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 12.0D, 16.0D); -@@ -121,4 +123,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { + public static final MapCodec CODEC = simpleCodec(EnchantmentTableBlock::new); +@@ -128,4 +130,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -146,10 +146,10 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 40f127476d96b39ac107cb1d18dd08798612c952..9c90c8f1c6697a98049bf044ac061bb93e1a4363 100644 +index f36c75217028eea8503c15df710e4cabb8fdd741..c11fe39f7ae131eb2950b618aa9ac8900c916aa3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1464,6 +1464,11 @@ public class PurpurWorldConfig { +@@ -1455,6 +1455,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0258-Spark-Profiler.patch b/patches/server/0255-Spark-Profiler.patch similarity index 100% rename from patches/server/0258-Spark-Profiler.patch rename to patches/server/0255-Spark-Profiler.patch diff --git a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 82% rename from patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch index fb285b384..16a157569 100644 --- a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2152abc4ea04515a688af1dca8174f96a629f2fb..33944e586b8547a29ed5377a22b4c51067714d11 100644 +index ab20edfc54b37e06d5a775ec8e98f4875513bcae..70c8b4ac1d1a06af280dcecafa6ccf4093b69c13 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2342,7 +2342,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1715,7 +1715,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + do { - instant1 = (Instant) this.lastChatTimeStamp.get(); - if (timestamp.isBefore(instant1)) { + if (!iterator.hasNext()) { - return false; + return !org.purpurmc.purpur.PurpurConfig.kickForOutOfOrderChat; // Purpur } - } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); + voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index e78e809cc7644d5007b149d5940f8cc164a76975..ed9b2f0b55229848894d9d6b401d050cb031b893 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch similarity index 75% rename from patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch index bd840ee3f..383d93854 100644 --- a/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for sculk shrieker can_summon state diff --git a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java -index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315dbf40b9e 100644 +index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd471cf05bf 100644 --- a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -130,7 +130,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo +@@ -137,7 +137,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { @@ -18,10 +18,10 @@ index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c90c8f1c6697a98049bf044ac061bb93e1a4363..2f7a5fd20ace3f27edc79c0f4a7bb4e4a772b3f8 100644 +index c11fe39f7ae131eb2950b618aa9ac8900c916aa3..5c5681d74c272ab81370dc5daae485e0e9101adf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -997,6 +997,11 @@ public class PurpurWorldConfig { +@@ -993,6 +993,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } @@ -30,6 +30,6 @@ index 9c90c8f1c6697a98049bf044ac061bb93e1a4363..2f7a5fd20ace3f27edc79c0f4a7bb4e4 + sculkShriekerCanSummonDefault = getBoolean("blocks.sculk_shrieker.can-summon-default", sculkShriekerCanSummonDefault); + } + - public boolean shulkerBoxAllowOversizedStacks = false; - private void shulkerBoxSettings() { - shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks); + public boolean signAllowColors = false; + private void signSettings() { + signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors); diff --git a/patches/server/0261-Config-to-not-let-coral-die.patch b/patches/server/0258-Config-to-not-let-coral-die.patch similarity index 81% rename from patches/server/0261-Config-to-not-let-coral-die.patch rename to patches/server/0258-Config-to-not-let-coral-die.patch index 9a3a983e5..e13af0fc3 100644 --- a/patches/server/0261-Config-to-not-let-coral-die.patch +++ b/patches/server/0258-Config-to-not-let-coral-die.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to not let coral die diff --git a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index 3d2b34c5a7c9b00c1164b4f89c2cbff81fc460eb..b5505e926e5cdb447de68e8eb8e46c97eb988e27 100644 +index 2a65c7b859b1126dbac9819a01ca2652e20498a9..3192edee23b899107b17e354ddfb3159ac2ef429 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -35,6 +35,7 @@ public class BaseCoralPlantTypeBlock extends Block implements SimpleWaterloggedB +@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat } protected static boolean scanForWater(BlockState state, BlockGetter world, BlockPos pos) { @@ -17,10 +17,10 @@ index 3d2b34c5a7c9b00c1164b4f89c2cbff81fc460eb..b5505e926e5cdb447de68e8eb8e46c97 return true; } else { diff --git a/src/main/java/net/minecraft/world/level/block/CoralBlock.java b/src/main/java/net/minecraft/world/level/block/CoralBlock.java -index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4f0746edf 100644 +index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633c864fc13 100644 --- a/src/main/java/net/minecraft/world/level/block/CoralBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CoralBlock.java -@@ -45,6 +45,7 @@ public class CoralBlock extends Block { +@@ -59,6 +59,7 @@ public class CoralBlock extends Block { } protected boolean scanForWater(BlockGetter world, BlockPos pos) { @@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f7a5fd20ace3f27edc79c0f4a7bb4e4a772b3f8..4351793923ea16e3c3fe7ed547c1236cae0e952a 100644 +index 5c5681d74c272ab81370dc5daae485e0e9101adf..601452f16c7f41b609cc13026386d6f5d06ac92e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -834,6 +834,11 @@ public class PurpurWorldConfig { +@@ -830,6 +830,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0259-Add-local-difficulty-api.patch similarity index 85% rename from patches/server/0262-Add-local-difficulty-api.patch rename to patches/server/0259-Add-local-difficulty-api.patch index 6555f6ab4..0ac1d7118 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0259-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 90c76ddcb8af13409490b8976263d27a71954668..99df34c7efb003d63142a1cd191d863c5315b4cb 100644 +index e1fad381b861471a17529c246bb8a4a9c7646420..648be304b99793fcec850ee6f3965baf1cd679d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2354,6 +2354,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2360,6 +2360,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch b/patches/server/0260-Add-toggle-for-RNG-manipulation.patch similarity index 90% rename from patches/server/0263-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0260-Add-toggle-for-RNG-manipulation.patch index 59575ff50..8e300d86b 100644 --- a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0260-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bf48e496f4988f45ea8c92eb45544f44753e5738..af06a919673f2e4f41d1cd712caa5b002d12ae71 100644 +index c9dafb8ca9267bea2449bb92ab5808af453ad2b1..61aaf79bb631c37680d04168519a4e2e6af1ccc0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -594,7 +594,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -593,7 +593,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -33,7 +33,7 @@ index 88c238e492b1081d1a64a3b6f05d7baa17e5d8c9..dd7f2beabf0edad4143ac2365ac04a22 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4351793923ea16e3c3fe7ed547c1236cae0e952a..07b8826509d158e60ee6c3c847f7855b7469325f 100644 +index 601452f16c7f41b609cc13026386d6f5d06ac92e..4e8c250a1c41c82dbfbae69e8d48b4604d63139b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Send-client-custom-name-of-BE.patch b/patches/server/0261-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0264-Send-client-custom-name-of-BE.patch rename to patches/server/0261-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0265-Allow-custom-ChatDecorators.patch b/patches/server/0262-Allow-custom-ChatDecorators.patch similarity index 90% rename from patches/server/0265-Allow-custom-ChatDecorators.patch rename to patches/server/0262-Allow-custom-ChatDecorators.patch index 7ff5882b7..67db06b22 100644 --- a/patches/server/0265-Allow-custom-ChatDecorators.patch +++ b/patches/server/0262-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7951d617accb093e650d0ca30e2088b5a795d2a2..219f4c9ca2dfa1f55d7c5f4443dab9844ebec4b9 100644 +index c3e3f70b560206b42b4b5eac4fa47540a899706d..a751b8dce17aae891fe0400f52ecdb6e3784ee0a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2671,6 +2671,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -111,7 +129,7 @@ index cd319d1bddbe5f02e998c961905bcba777492371..bf5cc18304f464aec59f3982311a0a99 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1512,21 +1512,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return ichunkaccess1; -@@ -450,17 +450,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -445,17 +445,17 @@ public class ServerChunkCache extends ChunkSource { public void save(boolean flush) { this.runDistanceManagerUpdates(); @@ -370,7 +357,7 @@ index 5d26364c0f4ed03bd9994077683c93b9883e5327..03bde9d1c765700c872cc592fe414eb8 } // Paper end -@@ -490,22 +490,22 @@ public class ServerChunkCache extends ChunkSource { +@@ -485,23 +485,23 @@ public class ServerChunkCache extends ChunkSource { @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -388,6 +375,7 @@ index 5d26364c0f4ed03bd9994077683c93b9883e5327..03bde9d1c765700c872cc592fe414eb8 this.tickChunks(); - this.level.timings.chunks.stopTiming(); // Paper - timings + //this.level.timings.chunks.stopTiming(); // Paper - timings // Purpur + this.chunkMap.tick(); } - this.level.timings.doChunkUnload.startTiming(); // Spigot @@ -399,44 +387,48 @@ index 5d26364c0f4ed03bd9994077683c93b9883e5327..03bde9d1c765700c872cc592fe414eb8 this.level.getProfiler().pop(); this.clearCache(); } -@@ -529,7 +529,7 @@ public class ServerChunkCache extends ChunkSource { - boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit +@@ -516,7 +516,7 @@ public class ServerChunkCache extends ChunkSource { - gameprofilerfiller.push("naturalSpawnCount"); -- this.level.timings.countNaturalMobs.startTiming(); // Paper - timings -+ //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur - int l = this.distanceManager.getNaturalSpawnChunkCount(); - // Paper start - per player mob spawning - NaturalSpawner.SpawnState spawnercreature_d; // moved down -@@ -560,13 +560,13 @@ public class ServerChunkCache extends ChunkSource { - // Pufferfish end - } - // Paper end -- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings -+ //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur + gameprofilerfiller.push("pollingChunks"); + gameprofilerfiller.push("filteringLoadedChunks"); +- if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper ++ // if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously - gameprofilerfiller.popPush("filteringLoadedChunks"); - // Paper - optimise chunk tick iteration - // Paper - optimise chunk tick iteration -- this.level.timings.chunkTicks.startTiming(); // Paper -+ //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur + // Paper start - optimise chunk tick iteration + ChunkMap playerChunkMap = this.chunkMap; +@@ -556,7 +556,7 @@ public class ServerChunkCache extends ChunkSource { - // Paper - optimise chunk tick iteration - -@@ -672,17 +672,17 @@ public class ServerChunkCache extends ChunkSource { + if (this.level.getServer().tickRateManager().runsNormally()) { + gameprofilerfiller.popPush("naturalSpawnCount"); +- this.level.timings.countNaturalMobs.startTiming(); // Paper - timings ++ //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur + int k = this.distanceManager.getNaturalSpawnChunkCount(); + // Paper start - per player mob spawning + int naturalSpawnChunkCount = k; +@@ -581,7 +581,7 @@ public class ServerChunkCache extends ChunkSource { + spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); + } + // Paper end +- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings ++ // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur + + this.lastSpawnState = spawnercreature_d; + gameprofilerfiller.popPush("spawnAndTick"); +@@ -688,19 +688,19 @@ public class ServerChunkCache extends ChunkSource { + } + } + // Paper end - optimise chunk tick iteration +- this.level.timings.chunkTicks.stopTiming(); // Paper ++ // this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur + + gameprofilerfiller.popPush("customSpawners"); + if (flag) { +- try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings ++ //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur + this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); +- } // Paper - timings ++ //} // Paper - timings // Purpur } - } - // Paper end - optimise chunk tick iteration -- this.level.timings.chunkTicks.stopTiming(); // Paper -+ //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur - gameprofilerfiller.popPush("customSpawners"); - if (flag2) { -- try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings -+ //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur - this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -- } // Paper - timings -+ //} // Paper - timings // Purpur } gameprofilerfiller.popPush("broadcast"); @@ -446,7 +438,7 @@ index 5d26364c0f4ed03bd9994077683c93b9883e5327..03bde9d1c765700c872cc592fe414eb8 // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -696,7 +696,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -714,7 +714,7 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -456,19 +448,19 @@ index 5d26364c0f4ed03bd9994077683c93b9883e5327..03bde9d1c765700c872cc592fe414eb8 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55b6668038 100644 +index cc45c828775ac8551fb1efa208f8acc9a79e7f49..7673c3be73a5e6527f04333047839edbaa778e8c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -856,7 +856,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - this.updateSkyBrightness(); - this.tickTime(); +@@ -867,7 +867,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + } + gameprofilerfiller.popPush("tickPending"); - this.timings.scheduledBlocks.startTiming(); // Paper + //this.timings.scheduledBlocks.startTiming(); // Paper // Purpur - if (!this.isDebug()) { + if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -865,20 +865,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -876,24 +876,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -476,11 +468,14 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 + //this.timings.scheduledBlocks.stopTiming(); // Paper // Purpur gameprofilerfiller.popPush("raid"); -- this.timings.raids.startTiming(); // Paper - timings -+ //this.timings.raids.startTiming(); // Paper - timings // Purpur - this.raids.tick(); -- this.timings.raids.stopTiming(); // Paper - timings -+ //this.timings.raids.stopTiming(); // Paper - timings // Purpur + if (flag) { +- this.timings.raids.startTiming(); // Paper - timings ++ // this.timings.raids.startTiming(); // Paper - timings // Purpur + this.raids.tick(); +- this.timings.raids.stopTiming(); // Paper - timings ++ // this.timings.raids.stopTiming(); // Paper - timings // Purpur + } + gameprofilerfiller.popPush("chunkSource"); - this.timings.chunkProviderTick.startTiming(); // Paper - timings + //this.timings.chunkProviderTick.startTiming(); // Paper - timings // Purpur @@ -488,33 +483,34 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 - this.timings.chunkProviderTick.stopTiming(); // Paper - timings + //this.timings.chunkProviderTick.stopTiming(); // Paper - timings // Purpur gameprofilerfiller.popPush("blockEvents"); -- this.timings.doSounds.startTiming(); // Spigot -+ //this.timings.doSounds.startTiming(); // Spigot // Purpur - this.runBlockEvents(); -- this.timings.doSounds.stopTiming(); // Spigot -+ //this.timings.doSounds.stopTiming(); // Spigot // Purpur - this.handlingTick = false; - gameprofilerfiller.pop(); - boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -889,7 +889,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (flag) { +- this.timings.doSounds.startTiming(); // Spigot ++ // this.timings.doSounds.startTiming(); // Spigot // Purpur + this.runBlockEvents(); +- this.timings.doSounds.stopTiming(); // Spigot ++ // this.timings.doSounds.stopTiming(); // Spigot // Purpur + } - if (flag || this.emptyTime++ < 300) { + this.handlingTick = false; +@@ -906,7 +906,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + + if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); - this.timings.tickEntities.startTiming(); // Spigot + //this.timings.tickEntities.startTiming(); // Spigot // Purpur - if (this.dragonFight != null) { + if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -914,7 +914,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot - this.timings.entityTick.startTiming(); // Spigot + //this.timings.entityTick.startTiming(); // Spigot // Purpur this.entityTickList.forEach((entity) -> { - entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -938,8 +938,8 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed +@@ -941,8 +941,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -525,16 +521,16 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -1082,7 +1082,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1084,7 +1084,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + } // Paper - // Paper start - optimise random block ticking gameprofilerfiller.popPush("tickBlocks"); - timings.chunkTicksBlocks.startTiming(); // Paper + //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { + // Paper start - optimize random block ticking LevelChunkSection[] sections = chunk.getSections(); - final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -1115,7 +1115,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1118,7 +1118,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking @@ -543,7 +539,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 gameprofilerfiller.pop(); } -@@ -1454,8 +1454,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1462,8 +1462,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -554,7 +550,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1471,7 +1471,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1479,7 +1479,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -563,7 +559,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1494,8 +1494,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1502,8 +1502,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -574,7 +570,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1525,7 +1525,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1533,7 +1533,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -583,7 +579,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } } else { passenger.stopRiding(); -@@ -1545,14 +1545,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1553,14 +1553,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -601,7 +597,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1564,7 +1564,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1572,7 +1572,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -610,7 +606,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } // Paper end -@@ -1578,7 +1578,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1586,7 +1586,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -619,7 +615,7 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1588,11 +1588,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1596,11 +1596,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -635,10 +631,10 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 33944e586b8547a29ed5377a22b4c51067714d11..4fa1b9a46566fcfbf9ca080bdecd2e912c01ac4f 100644 +index 70c8b4ac1d1a06af280dcecafa6ccf4093b69c13..7865288eee0950c346801cc20aea9071a31fc6dc 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2458,7 +2458,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -647,7 +643,7 @@ index 33944e586b8547a29ed5377a22b4c51067714d11..4fa1b9a46566fcfbf9ca080bdecd2e91 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2462,7 +2462,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2468,7 +2468,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -656,7 +652,7 @@ index 33944e586b8547a29ed5377a22b4c51067714d11..4fa1b9a46566fcfbf9ca080bdecd2e91 return; } -@@ -2475,7 +2475,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2481,7 +2481,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -666,10 +662,10 @@ index 33944e586b8547a29ed5377a22b4c51067714d11..4fa1b9a46566fcfbf9ca080bdecd2e91 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cdb5ebf7ed24cdf0ab8e06a92bc2dd21f85008d9..182acaad79e14e5e120094916a0d295a4584de7a 100644 +index 0d75ccbf6c5cacd9ce2355d4dca2b1290a8da39f..2e3a43b92fb86e55a75a557663bc465e604c4156 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1270,7 +1270,7 @@ public abstract class PlayerList { +@@ -1268,7 +1268,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -678,7 +674,7 @@ index cdb5ebf7ed24cdf0ab8e06a92bc2dd21f85008d9..182acaad79e14e5e120094916a0d295a int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1281,7 +1281,7 @@ public abstract class PlayerList { +@@ -1279,7 +1279,7 @@ public abstract class PlayerList { } // Paper end } @@ -737,10 +733,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 80b4d8d1283c03681106853fd83bf6df0392c230..8b537022638648c11396c0ee638750c712a6230b 100644 +index aec194669dbb13563a83abb64df2f0b64cc64cc7..214a18320d450fc318593b147e0010c42977d421 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1304,15 +1304,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1311,15 +1311,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -757,9 +753,9 @@ index 80b4d8d1283c03681106853fd83bf6df0392c230..8b537022638648c11396c0ee638750c7 - this.timings.tileEntityTick.startTiming(); // Spigot + //this.timings.tileEntityTick.startTiming(); // Spigot // Purpur // Spigot start - // Iterator iterator = this.blockEntityTickers.iterator(); - int tilesThisCycle = 0; -@@ -1345,7 +1345,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + // Iterator iterator = this.blockEntityTickers.iterator(); + boolean flag = this.tickRateManager().runsNormally(); +@@ -1354,7 +1354,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -769,7 +765,7 @@ index 80b4d8d1283c03681106853fd83bf6df0392c230..8b537022638648c11396c0ee638750c7 co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf3de2ac5b 100644 +index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde84744083392 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -133,7 +133,7 @@ public final class NaturalSpawner { @@ -791,10 +787,10 @@ index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d64717a422 100644 +index fa170cc1ce7011d201295b89718292d696c7fc24..5e91f70a994ffa92e3aa794b52441790766cd774 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -800,7 +800,7 @@ public class LevelChunk extends ChunkAccess { +@@ -786,7 +786,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -803,7 +799,7 @@ index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d6 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -820,7 +820,7 @@ public class LevelChunk extends ChunkAccess { +@@ -806,7 +806,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -812,7 +808,7 @@ index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d6 } } } -@@ -1178,7 +1178,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1164,7 +1164,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -821,7 +817,7 @@ index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d6 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1200,7 +1200,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1186,7 +1186,7 @@ public class LevelChunk extends ChunkAccess { // Paper end // Spigot start } finally { @@ -831,7 +827,7 @@ index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d6 } } diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index e5b8466fb2f8c98bdc81839d9c01cece42c39081..247b233978728d8a0007b494e1d1e0aee29f68c6 100644 +index d1b1bc4845fc9519fc892e962c3e7d89da3f14de..7902c649a54fccbb13531c01e052df87ec4a424a 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -513,10 +513,10 @@ public class CraftScheduler implements BukkitScheduler { @@ -886,11 +882,11 @@ index ea26d9464644b5217879b8c21b4da28e57708dcb..5835dc236b3f5291a804f7fb14a12eb4 long getCreatedAt() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 891f850ea99dac1433f3e395e26be14c8abf2bfb..280ed3a3b61b3eadbb6f253cd4e058641e2c3d2e 100644 +index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c7d5fd552 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { - public void getScoreboardScores(ObjectiveCriteria criteria, String name, Consumer consumer) { + public void forAllObjectives(ObjectiveCriteria criteria, ScoreHolder holder, Consumer consumer) { // Paper start - add timings for scoreboard search // plugins leaking scoreboards will make this very expensive, let server owners debug it easily - co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.startTimingIfSync(); @@ -899,7 +895,7 @@ index 891f850ea99dac1433f3e395e26be14c8abf2bfb..280ed3a3b61b3eadbb6f253cd4e05864 // Paper end - add timings for scoreboard search for (CraftScoreboard scoreboard : this.scoreboards) { @@ -123,7 +123,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { - board.forAllObjectives(criteria, name, (score) -> consumer.accept(score)); + board.forAllObjectives(criteria, holder, (score) -> consumer.accept(score)); } } finally { // Paper start - add timings for scoreboard search - co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.stopTimingIfSync(); @@ -908,10 +904,10 @@ index 891f850ea99dac1433f3e395e26be14c8abf2bfb..280ed3a3b61b3eadbb6f253cd4e05864 // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438daccf0e4f5fa 100644 +index 3fb2ae23bcbf0c397e91a958796f13a2dfedd152..a828dbdd755368b74501cc0bab2e38e7fde6f2bd 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -170,7 +170,7 @@ public class ActivationRange +@@ -166,7 +166,7 @@ public class ActivationRange */ public static void activateEntities(Level world) { @@ -920,7 +916,7 @@ index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438dacc final int miscActivationRange = world.spigotConfig.miscActivationRange; final int raiderActivationRange = world.spigotConfig.raiderActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -250,7 +250,7 @@ public class ActivationRange +@@ -227,7 +227,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch similarity index 80% rename from patches/server/0267-Remove-Mojang-Profiler.patch rename to patches/server/0264-Remove-Mojang-Profiler.patch index fabd4e667..244cd67f4 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Mojang Profiler diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7bd83ed53 100644 +index 428dd75450bdd5daf902a1fbaca7031a9bc585a8..c1202a56b560269e132eafd8bb12383473d4d33e 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -152,7 +152,7 @@ public class Commands { +@@ -165,7 +165,7 @@ public class Commands { DamageCommand.register(this.dispatcher, commandRegistryAccess); DataCommands.register(this.dispatcher); DataPackCommand.register(this.dispatcher); @@ -17,8 +17,8 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7 DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -323,9 +323,9 @@ public class Commands { - public int performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit +@@ -341,9 +341,9 @@ public class Commands { + public void performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); - commandlistenerwrapper.getServer().getProfiler().push(() -> { @@ -26,23 +26,23 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7 return "/" + s; - }); + });*/ // Purpur + ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - make finishParsing not static - byte b0; - -@@ -408,7 +408,7 @@ public class Commands { - b0 = 0; + try { +@@ -372,7 +372,7 @@ public class Commands { + Commands.LOGGER.error("'/{}' threw an exception", s, exception); } } finally { - commandlistenerwrapper.getServer().getProfiler().pop(); + //commandlistenerwrapper.getServer().getProfiler().pop(); // Purpur } - return b0; + } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index bf5cc18304f464aec59f3982311a0a99d9a9706b..926ba816e7bccec0d1b34c2f8fc3300be84df4c2 100644 +index f1037c50605f1bf0f5dad383e245d93a8bcf6f8b..e764ad7096852d8905422e8d0f140ed16c5b4498 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -338,13 +338,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + return false; + } : this::haveTime); - this.profiler.popPush("nextTickWait"); + //this.profiler.popPush("nextTickWait"); // Purpur this.mayHaveDelayedTasks = true; - // Purpur start - tps catchup - if (org.purpurmc.purpur.PurpurConfig.tpsCatchup) { -@@ -1185,8 +1185,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1429,7 +1429,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur @@ -192,7 +194,7 @@ index bf5cc18304f464aec59f3982311a0a99d9a9706b..926ba816e7bccec0d1b34c2f8fc3300b try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1595,17 +1595,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2550,40 +2550,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop functions, ResourceLocation label) { + private void executeTagFunctions(Collection> functions, ResourceLocation label) { - ProfilerFiller gameprofilerfiller = this.server.getProfiler(); + //ProfilerFiller gameprofilerfiller = this.server.getProfiler(); // Purpur @@ -366,39 +367,37 @@ index a6a1b57b4327f5710e9ec5ebca35a47c11751d11..097ac55028d66ef9ab430ff5dd103db6 Iterator iterator = functions.iterator(); while (iterator.hasNext()) { -@@ -72,7 +72,7 @@ public class ServerFunctionManager { - this.execute(customfunction, this.getGameLoopSender()); +@@ -65,15 +65,15 @@ public class ServerFunctionManager { + this.execute(commandfunction, this.getGameLoopSender()); } - this.server.getProfiler().pop(); + //this.server.getProfiler().pop(); // Purpur } - public int execute(CommandFunction function, CommandSourceStack source) { -@@ -195,10 +195,10 @@ public class ServerFunctionManager { + public void execute(CommandFunction function, CommandSourceStack source) { +- ProfilerFiller gameprofilerfiller = this.server.getProfiler(); ++ // ProfilerFiller gameprofilerfiller = this.server.getProfiler(); // Purpur - try { - ServerFunctionManager.QueuedCommand customfunctiondata_queuedcommand = (ServerFunctionManager.QueuedCommand) this.commandQueue.removeFirst(); -- ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); // Purpur +- gameprofilerfiller.push(() -> { ++ /*gameprofilerfiller.push(() -> { // Purpur + return "function " + function.id(); +- }); ++ });*/ // Purpur - Objects.requireNonNull(customfunctiondata_queuedcommand); -- gameprofilerfiller.push(customfunctiondata_queuedcommand::toString); -+ //gameprofilerfiller.push(customfunctiondata_queuedcommand::toString); // Purpur - this.depth = customfunctiondata_queuedcommand.depth; - customfunctiondata_queuedcommand.execute(ServerFunctionManager.this, this.commandQueue, i, this.tracer); - if (this.abortCurrentDepth) { -@@ -217,7 +217,7 @@ public class ServerFunctionManager { + try { + InstantiatedFunction instantiatedfunction = function.instantiate((CompoundTag) null, this.getDispatcher(), source); +@@ -86,7 +86,7 @@ public class ServerFunctionManager { + } catch (Exception exception) { + ServerFunctionManager.LOGGER.warn("Failed to execute function {}", function.id(), exception); + } finally { +- gameprofilerfiller.pop(); ++ // gameprofilerfiller.pop(); // Purpur + } - this.nestedCalls.clear(); - } finally { -- ServerFunctionManager.this.server.getProfiler().pop(); -+ //ServerFunctionManager.this.server.getProfiler().pop(); // Purpur - } - - ++j; + } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index a428df846cc6f4b2168d0c3ffdba34b42734bea3..3771caa73b0b41428f3d629aca1f562df7bcfaff 100644 +index c5a4a6a61c160e1cc29ee3c7d03debc0f51ce204..710156f616afd0a9666b3eede98fb19c0f30e777 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -546,20 +546,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -427,10 +426,10 @@ index a428df846cc6f4b2168d0c3ffdba34b42734bea3..3771caa73b0b41428f3d629aca1f562d public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93b1959ffc 100644 +index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238d6a7ec22 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -279,16 +279,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -274,16 +274,16 @@ public class ServerChunkCache extends ChunkSource { return ifLoaded; } // Paper end @@ -450,7 +449,7 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; -@@ -477,24 +477,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -472,24 +472,24 @@ public class ServerChunkCache extends ChunkSource { // CraftBukkit start - modelled on below public void purgeUnload() { if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system @@ -480,7 +479,7 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes -@@ -503,10 +503,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -499,10 +499,10 @@ public class ServerChunkCache extends ChunkSource { } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -493,51 +492,49 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 this.clearCache(); } -@@ -521,14 +521,14 @@ public class ServerChunkCache extends ChunkSource { - this.chunkMap.tick(); - } else { - LevelData worlddata = this.level.getLevelData(); +@@ -512,10 +512,10 @@ public class ServerChunkCache extends ChunkSource { + + this.lastInhabitedUpdate = i; + if (!this.level.isDebug()) { - ProfilerFiller gameprofilerfiller = this.level.getProfiler(); + //ProfilerFiller gameprofilerfiller = this.level.getProfiler(); // Purpur - gameprofilerfiller.push("pollingChunks"); +- gameprofilerfiller.push("filteringLoadedChunks"); + //gameprofilerfiller.push("pollingChunks"); // Purpur - this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random - int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); - boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit - -- gameprofilerfiller.push("naturalSpawnCount"); -+ //gameprofilerfiller.push("naturalSpawnCount"); // Purpur - //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur - int l = this.distanceManager.getNaturalSpawnChunkCount(); - // Paper start - per player mob spawning -@@ -563,14 +563,14 @@ public class ServerChunkCache extends ChunkSource { - //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - - //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously -- gameprofilerfiller.popPush("filteringLoadedChunks"); -+ //gameprofilerfiller.popPush("filteringLoadedChunks"); // Purpur - // Paper - optimise chunk tick iteration - // Paper - optimise chunk tick iteration - //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - - // Paper - optimise chunk tick iteration - -- gameprofilerfiller.popPush("spawnAndTick"); -+ //gameprofilerfiller.popPush("spawnAndTick"); // Purpur - boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit ++ //gameprofilerfiller.push("filteringLoadedChunks"); // Purpur + // if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur // Paper start - optimise chunk tick iteration -@@ -673,14 +673,14 @@ public class ServerChunkCache extends ChunkSource { - } +@@ -555,7 +555,7 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration - //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur -- gameprofilerfiller.popPush("customSpawners"); -+ //gameprofilerfiller.popPush("customSpawners"); // Purpur - if (flag2) { - //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur - this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); - //} // Paper - timings // Purpur + + if (this.level.getServer().tickRateManager().runsNormally()) { +- gameprofilerfiller.popPush("naturalSpawnCount"); ++ // gameprofilerfiller.popPush("naturalSpawnCount"); // Purpur + //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur + int k = this.distanceManager.getNaturalSpawnChunkCount(); + // Paper start - per player mob spawning +@@ -584,7 +584,7 @@ public class ServerChunkCache extends ChunkSource { + // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur + + this.lastSpawnState = spawnercreature_d; +- gameprofilerfiller.popPush("spawnAndTick"); ++ //gameprofilerfiller.popPush("spawnAndTick"); // Purpur + boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit + + // Paper start - optimise chunk tick iteration +@@ -690,7 +690,7 @@ public class ServerChunkCache extends ChunkSource { + // Paper end - optimise chunk tick iteration + // this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur + +- gameprofilerfiller.popPush("customSpawners"); ++ //gameprofilerfiller.popPush("customSpawners"); // Purpur + if (flag) { + //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur + this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); +@@ -698,7 +698,7 @@ public class ServerChunkCache extends ChunkSource { + } } - gameprofilerfiller.popPush("broadcast"); @@ -545,7 +542,7 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 // Paper - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur // Paper start - optimise chunk tick iteration -@@ -698,8 +698,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -716,8 +716,8 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur // Paper - optimise chunk tick iteration @@ -553,10 +550,10 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur + //gameprofilerfiller.pop(); // Purpur - this.chunkMap.tick(); } - -@@ -906,7 +906,7 @@ public class ServerChunkCache extends ChunkSource { + } + +@@ -889,7 +889,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -566,10 +563,10 @@ index 03bde9d1c765700c872cc592fe414eb815956e47..43a46feb5fb4bf23d71bc4f6c08caa93 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442b7a6df83 100644 +index 7673c3be73a5e6527f04333047839edbaa778e8c..124868caa3c809875571f2c4a2ad0b7051dfd457 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -823,12 +823,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -825,16 +825,16 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -577,22 +574,26 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 + //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur this.handlingTick = true; -- gameprofilerfiller.push("world border"); -+ //gameprofilerfiller.push("world border"); // Purpur - this.getWorldBorder().tick(); -- gameprofilerfiller.popPush("weather"); -+ //gameprofilerfiller.popPush("weather"); // Purpur - this.advanceWeatherCycle(); - int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); - long j; -@@ -855,32 +855,32 @@ public class ServerLevel extends Level implements WorldGenLevel { + TickRateManager tickratemanager = this.tickRateManager(); + boolean flag = tickratemanager.runsNormally(); + + if (flag) { +- gameprofilerfiller.push("world border"); ++ // gameprofilerfiller.push("world border"); // Purpur + this.getWorldBorder().tick(); +- gameprofilerfiller.popPush("weather"); ++ // gameprofilerfiller.popPush("weather"); // Purpur + this.advanceWeatherCycle(); + } + +@@ -866,30 +866,30 @@ public class ServerLevel extends Level implements WorldGenLevel { + this.tickTime(); + } - this.updateSkyBrightness(); - this.tickTime(); - gameprofilerfiller.popPush("tickPending"); + //gameprofilerfiller.popPush("tickPending"); // Purpur //this.timings.scheduledBlocks.startTiming(); // Paper // Purpur - if (!this.isDebug()) { + if (!this.isDebug() && flag) { j = this.getGameTime(); - gameprofilerfiller.push("blockTicks"); + //gameprofilerfiller.push("blockTicks"); // Purpur @@ -607,9 +608,12 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 - gameprofilerfiller.popPush("raid"); + //gameprofilerfiller.popPush("raid"); // Purpur - //this.timings.raids.startTiming(); // Paper - timings // Purpur - this.raids.tick(); - //this.timings.raids.stopTiming(); // Paper - timings // Purpur + if (flag) { + // this.timings.raids.startTiming(); // Paper - timings // Purpur + this.raids.tick(); + // this.timings.raids.stopTiming(); // Paper - timings // Purpur + } + - gameprofilerfiller.popPush("chunkSource"); + //gameprofilerfiller.popPush("chunkSource"); // Purpur //this.timings.chunkProviderTick.startTiming(); // Paper - timings // Purpur @@ -617,23 +621,26 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 //this.timings.chunkProviderTick.stopTiming(); // Paper - timings // Purpur - gameprofilerfiller.popPush("blockEvents"); + //gameprofilerfiller.popPush("blockEvents"); // Purpur - //this.timings.doSounds.startTiming(); // Spigot // Purpur - this.runBlockEvents(); - //this.timings.doSounds.stopTiming(); // Spigot // Purpur + if (flag) { + // this.timings.doSounds.startTiming(); // Spigot // Purpur + this.runBlockEvents(); +@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + } + this.handlingTick = false; - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur - boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players + boolean flag1 = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players - if (flag) { -@@ -888,12 +888,12 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (flag1) { +@@ -905,12 +905,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } - if (flag || this.emptyTime++ < 300) { + if (flag1 || this.emptyTime++ < 300) { - gameprofilerfiller.push("entities"); + //gameprofilerfiller.push("entities"); // Purpur //this.timings.tickEntities.startTiming(); // Spigot // Purpur - if (this.dragonFight != null) { + if (this.dragonFight != null && flag) { - gameprofilerfiller.push("dragonFight"); + //gameprofilerfiller.push("dragonFight"); // Purpur this.dragonFight.tick(); @@ -642,10 +649,10 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -904,9 +904,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -920,9 +920,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); - } else { + } else if (!tickratemanager.isEntityFrozen(entity)) { - gameprofilerfiller.push("checkDespawn"); + //gameprofilerfiller.push("checkDespawn"); // Purpur entity.checkDespawn(); @@ -654,19 +661,13 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -918,7 +918,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -934,22 +934,21 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } - gameprofilerfiller.push("tick"); + //gameprofilerfiller.push("tick"); // Purpur - // Pufferfish start - copied from this.guardEntityTick - try { - this.tickNonPassenger(entity); // Pufferfish - changed -@@ -933,20 +933,19 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - } - // Pufferfish end + this.guardEntityTick(this::tickNonPassenger, entity); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -687,7 +688,7 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 } @Override -@@ -1028,9 +1027,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1029,9 +1028,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -698,8 +699,8 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 + //gameprofilerfiller.push("thunder"); // Purpur final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -1069,7 +1068,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder +@@ -1070,7 +1069,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -708,16 +709,16 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1081,7 +1080,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1083,7 +1082,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + } } // Paper - // Paper start - optimise random block ticking - gameprofilerfiller.popPush("tickBlocks"); + //gameprofilerfiller.popPush("tickBlocks"); // Purpur //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { - LevelChunkSection[] sections = chunk.getSections(); -@@ -1116,7 +1115,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + // Paper start - optimize random block ticking +@@ -1119,7 +1118,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -725,8 +726,8 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 + //gameprofilerfiller.pop(); // Purpur } - private void tickIceAndSnow(boolean raining, BlockPos.MutableBlockPos blockposition1, final LevelChunk chunk) { // Paper - optimise chunk ticking -@@ -1458,19 +1457,19 @@ public class ServerLevel extends Level implements WorldGenLevel { + @VisibleForTesting +@@ -1466,19 +1465,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -751,7 +752,7 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1499,12 +1498,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1507,12 +1506,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -768,7 +769,7 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1516,7 +1515,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1524,7 +1523,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -778,10 +779,10 @@ index ac28e6fecabe74fc0207ad4832ef166d5fc0b59b..1c8724fb56e790922c7e8fc73bc97442 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e91f5203478623a6b50ad28236e265bd599ce999..70d952fedba4b9bab44e0e6de94d60b894538ce7 100644 +index 1093ef4e97d3bc84802d4fc96a6f95a5a24624b9..adbce4f4334c8857f0ab2fec910ba3883582256b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1235,7 +1235,7 @@ public class ServerPlayer extends Player { +@@ -1239,7 +1239,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -790,7 +791,7 @@ index e91f5203478623a6b50ad28236e265bd599ce999..70d952fedba4b9bab44e0e6de94d60b8 worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1258,8 +1258,8 @@ public class ServerPlayer extends Player { +@@ -1262,8 +1262,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -801,7 +802,7 @@ index e91f5203478623a6b50ad28236e265bd599ce999..70d952fedba4b9bab44e0e6de94d60b8 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1277,7 +1277,7 @@ public class ServerPlayer extends Player { +@@ -1281,7 +1281,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -811,7 +812,7 @@ index e91f5203478623a6b50ad28236e265bd599ce999..70d952fedba4b9bab44e0e6de94d60b8 this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 61e794f63c6ec9b19ff0e75924470ea9a1db442e..b19c59a87d4136da583a0b687f6b27fef3456f09 100644 +index 04b9f56134a24385468c16c61cf84327263dcb88..83b79a93acb8387d6d432f8e816acf50bfb89832 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -209,7 +209,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -1037,10 +1038,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b540f8159 100644 +index 61aaf79bb631c37680d04168519a4e2e6af1ccc0..82f649715a566a5bbbbc175877bd344d96e41a2d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -842,7 +842,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -835,7 +835,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { @@ -1049,7 +1050,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -903,7 +903,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -896,7 +896,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1058,7 +1059,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b } public void setSharedFlagOnFire(boolean onFire) { -@@ -1122,7 +1122,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1115,7 +1115,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1067,7 +1068,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1131,7 +1131,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1124,7 +1124,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1076,7 +1077,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b return; } // Paper end -@@ -1152,8 +1152,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1145,8 +1145,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1087,7 +1088,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1172,7 +1172,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1165,7 +1165,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1096,7 +1097,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1310,7 +1310,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1303,7 +1303,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1105,7 +1106,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b } } // Paper start - detailed watchdog information -@@ -3163,7 +3163,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3180,7 +3180,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1114,7 +1115,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3181,7 +3181,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3198,7 +3198,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper // CraftBukkit end @@ -1123,7 +1124,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b } this.isInsidePortal = false; -@@ -3656,14 +3656,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3673,14 +3673,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1140,7 +1141,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3702,7 +3702,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3719,7 +3719,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1149,7 +1150,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3725,10 +3725,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3746,10 +3746,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); @@ -1163,7 +1164,7 @@ index 1edc85fd226df294e4c6880dc26591a298c8789b..c8e410dd79a61865eb7610bd038af17b } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0998f230b 100644 +index 0061b6214f87f61f0bb4ddeffed8f719554a6b43..3af72be980ed6cab704eedadeb9a9577aca25fc1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1184,7 +1185,7 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 } public boolean canSpawnSoulSpeedParticle() { -@@ -3167,10 +3167,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3138,10 +3138,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1198,7 +1199,7 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3182,7 +3182,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3153,7 +3153,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1207,7 +1208,7 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3472,19 +3472,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3448,19 +3448,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1232,7 +1233,7 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3511,8 +3511,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3487,8 +3487,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1243,7 +1244,7 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3539,8 +3539,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3515,8 +3515,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1251,10 +1252,10 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 - this.level().getProfiler().push("freezing"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("freezing"); // Purpur - if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API + if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3557,15 +3557,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3533,15 +3533,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1274,10 +1275,10 @@ index 8ef2540b295a6cb9a3b79b3481336bfd59d1dbba..f3ae27e860a5cb0c622b7c419a70b2c0 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c57a05fd4 100644 +index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab26a305ea 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -366,13 +366,13 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -365,13 +365,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void baseTick() { super.baseTick(); @@ -1293,7 +1294,7 @@ index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c incrementTicksSinceLastInteraction(); // Purpur } -@@ -703,7 +703,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -702,7 +702,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void aiStep() { super.aiStep(); @@ -1302,7 +1303,7 @@ index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -723,7 +723,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -722,7 +722,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } } @@ -1311,7 +1312,7 @@ index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c } protected Vec3i getPickupReach() { -@@ -935,46 +935,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -934,42 +934,42 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end @@ -1325,26 +1326,22 @@ index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c if (i % 2 != 0 && this.tickCount > 1) { - this.level().getProfiler().push("targetSelector"); + //this.level().getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur } else { - this.level().getProfiler().push("targetSelector"); + //this.level().getProfiler().push("targetSelector"); - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tick(); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tick(); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1379,10 +1376,10 @@ index 3a86686789ca77301e43bb9810f9b2b311d7763d..80c03bd4e5d7e20bb8a4e14af5620f5c } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f82c249c2 100644 +index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f2899438715886 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -105,8 +105,8 @@ public class GoalSelector { +@@ -102,8 +102,8 @@ public class GoalSelector { } public void tick() { @@ -1393,7 +1390,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -123,8 +123,8 @@ public class GoalSelector { +@@ -120,8 +120,8 @@ public class GoalSelector { } } @@ -1404,7 +1401,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -144,13 +144,13 @@ public class GoalSelector { +@@ -141,13 +141,13 @@ public class GoalSelector { } } @@ -1421,7 +1418,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -158,7 +158,7 @@ public class GoalSelector { +@@ -155,7 +155,7 @@ public class GoalSelector { } } @@ -1466,16 +1463,16 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489 this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475 100644 +index 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034bc03913b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -259,13 +259,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - private int behaviorTick = 0; // Pufferfish +@@ -258,13 +258,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + @Override protected void customServerAiStep() { - this.level().getProfiler().push("allayBrain"); + //this.level().getProfiler().push("allayBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("allayActivityUpdate"); @@ -1488,15 +1485,16 @@ index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aeb } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 89e473aadb1ab0bd802e7f74a77cce09578320d7..7369290820f726c28c87bc63dba2a74f415bb126 100644 +index a2664e7961bba5231d81b90f7fc2cf43a116114a..5f3670c02ddbb923a96ba0c6199c49e665d224c4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -320,12 +320,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { - private int behaviorTick = 0; // Pufferfish +@@ -214,13 +214,13 @@ public class Frog extends Animal implements VariantHolder { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("frogBrain"); + //this.level().getProfiler().push("frogBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("frogActivityUpdate"); @@ -1553,17 +1551,16 @@ index 3cef040c0e8869ca2ca2cb83c8f60a0f15582ae8..9417ce67cc231d5bfa6813f78ec27196 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e108188830 100644 +index e46475c2d44923167da7c654cb8af6b6278c7149..1e86f144d6139cff52ccc48f03f3283aa6517736 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -117,13 +117,13 @@ public class Tadpole extends AbstractFish { - private int behaviorTick = 0; // Pufferfish +@@ -116,12 +116,12 @@ public class Tadpole extends AbstractFish { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("tadpoleBrain"); + //this.level().getProfiler().push("tadpoleBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level(), this); + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.level().getProfiler().pop(); - this.level().getProfiler().push("tadpoleActivityUpdate"); + //this.level().getProfiler().pop(); // Purpur @@ -1575,16 +1572,16 @@ index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e1 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2..806b207e5246db7daa03bebabd7aa574d8b0dab7 100644 +index 5ac471fdc1acfd04a8cdf3e044949e48a6df208d..1162318d8d187b8bdb30d28f6f61c430452c41b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -226,13 +226,13 @@ public class Goat extends Animal { - private int behaviorTick = 0; // Pufferfish +@@ -225,13 +225,13 @@ public class Goat extends Animal { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("goatBrain"); + //this.level().getProfiler().push("goatBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goatActivityUpdate"); @@ -1633,16 +1630,16 @@ index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fd } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index e326e753cc6bca1bd00287d16c9796b9f3dd4d14..9d6c4f13c4a444c6c815c6c4f2114142f166b9bb 100644 +index a3a21f0c102cadcbe5882de716e90272fddd7f8c..468351b78af72c5ce998f9179f14d53951e95e46 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -168,10 +168,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - private int behaviorTick; // Pufferfish +@@ -167,10 +167,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("hoglinBrain"); + //this.level().getProfiler().push("hoglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1650,16 +1647,16 @@ index e326e753cc6bca1bd00287d16c9796b9f3dd4d14..9d6c4f13c4a444c6c815c6c4f2114142 if (this.isConverting()) { ++this.timeInOverworld; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 9ca1618ab945ad834c5fc221ada49058f806e79c..8e829d522a6012f409161ad5a9a06721a942d7e4 100644 +index 7612a361645018a4f81c374c523bb191e0ff40f0..2174a583b6db56520fa7523adc3c09e56ed7e85e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -335,10 +335,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - private int behaviorTick; // Pufferfish +@@ -334,10 +334,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + @Override protected void customServerAiStep() { - this.level().getProfiler().push("piglinBrain"); + //this.level().getProfiler().push("piglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1684,16 +1681,15 @@ index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bd PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 250af1ce7a93c2d2897f35c68fae319c9ba7d55d..5e66c2bd3807619cadee5b7081d93d21886e2806 100644 +index 53035057b715401381b4f5438c82a61fe6012a7e..656c4ee100364a3299cb78f7173ee0506d46ff04 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -301,10 +301,10 @@ public class Warden extends Monster implements VibrationSystem { +@@ -301,9 +301,9 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); - worldserver.getProfiler().push("wardenBrain"); + //worldserver.getProfiler().push("wardenBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish this.getBrain().tick(worldserver, this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1701,10 +1697,10 @@ index 250af1ce7a93c2d2897f35c68fae319c9ba7d55d..5e66c2bd3807619cadee5b7081d93d21 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index c889e5e0ba42eac860d25c76e5956471eb29be7e..02df0bf09f2ef91e4dafbdcea590b4634b2abf08 100644 +index a46fc13b3072b65dc9284ece6cbf63a743b5c1a7..fe68013f8efa35e6dfcf658df3b33d9d3df73979 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -342,7 +342,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -339,7 +339,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end @@ -1713,9 +1709,9 @@ index c889e5e0ba42eac860d25c76e5956471eb29be7e..02df0bf09f2ef91e4dafbdcea590b463 // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -355,7 +355,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -352,7 +352,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getBrain().tick((ServerLevel) this.level(), this); // Paper - else if (this.isLobotomized && shouldRestock()) restock(); + } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur end - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1723,32 +1719,32 @@ index c889e5e0ba42eac860d25c76e5956471eb29be7e..02df0bf09f2ef91e4dafbdcea590b463 this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 45243249a561440512ef2a620c60b02e159c80e2..b26cea981a876fd42c9ab91923d507b3c11a0425 100644 +index c790418ff4584af20db006a3e8770f261bab271e..370952a7be8df3ea00c0816235d84927df4ed79d 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -706,7 +706,7 @@ public class Explosion { - if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper - BlockPos blockposition1 = blockposition.immutable(); +@@ -659,7 +659,7 @@ public class Explosion { + } -- this.level.getProfiler().push("explosion_blocks"); -+ //this.level.getProfiler().push("explosion_blocks"); // Purpur - if (block.dropFromExplosion(this)) { - Level world = this.level; + if (flag1) { +- this.level.getProfiler().push("explosion_blocks"); ++ // this.level.getProfiler().push("explosion_blocks"); // Purpur + List> list = new ArrayList(); -@@ -728,7 +728,7 @@ public class Explosion { - - this.level.setBlock(blockposition, Blocks.AIR.defaultBlockState(), 3); - block.wasExploded(this.level, blockposition, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } + Util.shuffle(this.toBlow, this.level.random); +@@ -735,7 +735,7 @@ public class Explosion { + Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } +- this.level.getProfiler().pop(); ++ // this.level.getProfiler().pop(); // Purpur + } + + if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8b537022638648c11396c0ee638750c712a6230b..25540a7f5631acd856726cdb44bace9be7dab401 100644 +index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468a8ef6736 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1301,9 +1301,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1308,9 +1308,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1760,7 +1756,7 @@ index 8b537022638648c11396c0ee638750c712a6230b..25540a7f5631acd856726cdb44bace9b //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1357,7 +1357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1769,7 +1765,7 @@ index 8b537022638648c11396c0ee638750c712a6230b..25540a7f5631acd856726cdb44bace9b this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1551,7 +1551,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1567,7 +1567,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1778,7 +1774,7 @@ index 8b537022638648c11396c0ee638750c712a6230b..25540a7f5631acd856726cdb44bace9b List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1570,7 +1570,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1586,7 +1586,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1787,17 +1783,16 @@ index 8b537022638648c11396c0ee638750c712a6230b..25540a7f5631acd856726cdb44bace9b // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1827,7 +1827,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1845,6 +1845,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { -- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish -+ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur ++ //if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur // Purpur - TODO: Pufferfish return (ProfilerFiller) this.profiler.get(); } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 1e3349690d00c7889a381f7c65a3b5bf3de2ac5b..524301e2438ee2938b59eb2b2e9fc4e0eb727a87 100644 +index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc17e9a0ba 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,7 @@ public final class NaturalSpawner { @@ -1819,10 +1814,10 @@ index 1e3349690d00c7889a381f7c65a3b5bf3de2ac5b..524301e2438ee2938b59eb2b2e9fc4e0 // Paper start diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 88b7f814a1454841b1f1b27e9c7d66d64717a422..66656c4cf157228c9f52b33b358713ef0172f9ff 100644 +index 5e91f70a994ffa92e3aa794b52441790766cd774..5efb3e1d04cc22a8fa37a25e2bef07f9e2842adc 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -457,11 +457,11 @@ public class LevelChunk extends ChunkAccess { +@@ -443,11 +443,11 @@ public class LevelChunk extends ChunkAccess { if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1837,7 +1832,7 @@ index 88b7f814a1454841b1f1b27e9c7d66d64717a422..66656c4cf157228c9f52b33b358713ef } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1175,9 +1175,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1161,9 +1161,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1849,7 +1844,7 @@ index 88b7f814a1454841b1f1b27e9c7d66d64717a422..66656c4cf157228c9f52b33b358713ef //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1189,7 +1189,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1175,7 +1175,7 @@ public class LevelChunk extends ChunkAccess { LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); } diff --git a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 91% rename from patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch index 324a974da..7bbd1d04d 100644 --- a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4fa1b9a46566fcfbf9ca080bdecd2e912c01ac4f..fa586687929ae348d16a6afc81b364aafd2b238f 100644 +index 7865288eee0950c346801cc20aea9071a31fc6dc..d651b8c6254a28fc55f9a9c3f264f83a265bf316 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -739,6 +739,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause @@ -16,7 +16,7 @@ index 4fa1b9a46566fcfbf9ca080bdecd2e912c01ac4f..fa586687929ae348d16a6afc81b364aa return; } -@@ -1328,8 +1329,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1352,8 +1353,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0269-Add-Bee-API.patch b/patches/server/0266-Add-Bee-API.patch similarity index 89% rename from patches/server/0269-Add-Bee-API.patch rename to patches/server/0266-Add-Bee-API.patch index cfd237990..a3f2b0126 100644 --- a/patches/server/0269-Add-Bee-API.patch +++ b/patches/server/0266-Add-Bee-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Bee API 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 02e95af3c18b3da5a6a32a7536e903ca9c426249..38a3dcec138d9233a46e5d523bcc6d64bc7fffd0 100644 +index 0a4ca865d1e41efca0eb8287c833e642e838b01a..bdb78cc701543cfe91a6bafd1786fe2ea0bf1ddc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -807,6 +807,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -814,6 +814,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { if (optional.isPresent()) { Bee.this.savedFlowerPos = (BlockPos) optional.get(); Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D); @@ -16,7 +16,7 @@ index 02e95af3c18b3da5a6a32a7536e903ca9c426249..38a3dcec138d9233a46e5d523bcc6d64 return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -863,6 +864,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -870,6 +871,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -24,7 +24,7 @@ index 02e95af3c18b3da5a6a32a7536e903ca9c426249..38a3dcec138d9233a46e5d523bcc6d64 } @Override -@@ -909,6 +911,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -916,6 +918,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/patches/server/0270-Debug-Marker-API.patch b/patches/server/0267-Debug-Marker-API.patch similarity index 93% rename from patches/server/0270-Debug-Marker-API.patch rename to patches/server/0267-Debug-Marker-API.patch index a5d6c17cb..f796cb495 100644 --- a/patches/server/0270-Debug-Marker-API.patch +++ b/patches/server/0267-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 85546e81f90676df985de1ba6d6aa066aef4762a..ce33562ad91d4fee2c2f41e27c414f3480743485 100644 +index d974846dda57755cfa33beba76794391beb9b4f3..7c35318e65608b29f6ea0c1481c0af8f0dd8ba5f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1551,6 +1551,42 @@ public final class CraftServer implements Server { +@@ -1578,6 +1578,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -52,10 +52,10 @@ index 85546e81f90676df985de1ba6d6aa066aef4762a..ce33562ad91d4fee2c2f41e27c414f34 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 99df34c7efb003d63142a1cd191d863c5315b4cb..bc9a049df648fa5a169219bb009c92a213df9ffd 100644 +index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa96024361b10f131 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2358,6 +2358,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2364,6 +2364,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 99df34c7efb003d63142a1cd191d863c5315b4cb..bc9a049df648fa5a169219bb009c92a2 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 63f7023a7f20f0133c03904ea48c15346a8963b8..a432579ea6fb3f2c1fefe98f16a357450ad5b5ae 100644 +index 0df4d72d82a4f047c6272af664ad61ee0117cf67..ece49c9be55d4f356bf1ea53ec06cd60e02b7eae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3355,5 +3355,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3367,5 +3367,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch index dd1268f05..5c52cd9c3 100644 --- a/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122fd36f05e0 100644 +index f3ff965e641f561dbc1b5194353e75dc17e9a0ba..51a4d0b212278a20363fd0d3cb253f0e3047e961 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -258,7 +258,7 @@ public final class NaturalSpawner { @@ -18,7 +18,7 @@ index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122f if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07b8826509d158e60ee6c3c847f7855b7469325f..71d2da21e1dcf5991f9161b3fcad66247a5a4991 100644 +index 4e8c250a1c41c82dbfbae69e8d48b4604d63139b..52cc678de23f370c411933d3f99c31a7acbe2d9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -377,6 +377,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0272-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0269-Add-skeleton-bow-accuracy-option.patch index 8358207f3..ae98e0eb6 100644 --- a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9df11e164f6aaa13c2ad50717cfc42b8c4c8c6e7..712e9b87442e0eeb05993e6589123d756d875518 100644 +index 52cc678de23f370c411933d3f99c31a7acbe2d9b..2957282e6c19fbe38ddb4f8a30ae2d3404d87385 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2449,6 +2449,8 @@ public class PurpurWorldConfig { +@@ -2440,6 +2440,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 9df11e164f6aaa13c2ad50717cfc42b8c4c8c6e7..712e9b87442e0eeb05993e6589123d75 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2463,6 +2465,18 @@ public class PurpurWorldConfig { +@@ -2454,6 +2456,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0273-Allay-respect-item-NBT.patch b/patches/server/0270-Allay-respect-item-NBT.patch similarity index 89% rename from patches/server/0273-Allay-respect-item-NBT.patch rename to patches/server/0270-Allay-respect-item-NBT.patch index f0b8b115c..6ab6e3e95 100644 --- a/patches/server/0273-Allay-respect-item-NBT.patch +++ b/patches/server/0270-Allay-respect-item-NBT.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f27e01ee8b 100644 +index f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12ad9bc7e7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -406,9 +406,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -405,9 +405,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override public boolean wantsToPickUp(ItemStack stack) { @@ -44,10 +44,10 @@ index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f2 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86340e782bbc125ec672eea855de29f90ac127de..1a8a1a9bca5c2f92b87fb1a21bdff194718caa8e 100644 +index 2957282e6c19fbe38ddb4f8a30ae2d3404d87385..4cd381104a2ab320feb3984b8f77f9630246c7e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1083,10 +1083,13 @@ public class PurpurWorldConfig { +@@ -1074,10 +1074,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0274-Add-death-screen-API.patch b/patches/server/0271-Add-death-screen-API.patch similarity index 87% rename from patches/server/0274-Add-death-screen-API.patch rename to patches/server/0271-Add-death-screen-API.patch index 3dcadc145..72e111531 100644 --- a/patches/server/0274-Add-death-screen-API.patch +++ b/patches/server/0271-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a432579ea6fb3f2c1fefe98f16a357450ad5b5ae..3b3bbeda831f82b6d9b284d85a31a1fff578a64f 100644 +index ece49c9be55d4f356bf1ea53ec06cd60e02b7eae..6f52c5f94a8ac8c04c61c551d2345ad72272942e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3393,5 +3393,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3405,5 +3405,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0276-Implement-ram-and-rambar-commands.patch b/patches/server/0272-Implement-ram-and-rambar-commands.patch similarity index 97% rename from patches/server/0276-Implement-ram-and-rambar-commands.patch rename to patches/server/0272-Implement-ram-and-rambar-commands.patch index 03ad8a8b8..911b0cef1 100644 --- a/patches/server/0276-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0272-Implement-ram-and-rambar-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a4b68fa1c 100644 +index c1202a56b560269e132eafd8bb12383473d4d33e..815af29d1aae935264a400bdb9c3d676e81a841a 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -236,6 +236,8 @@ public class Commands { +@@ -256,6 +256,8 @@ public class Commands { org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur @@ -18,10 +18,10 @@ index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 70d952fedba4b9bab44e0e6de94d60b894538ce7..7b72be8dcaf3fc5c7151c847faa2dfc75ef9eeb7 100644 +index adbce4f4334c8857f0ab2fec910ba3883582256b..07c6e9c5a32ef7155525924d1a0e433943787819 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -277,6 +277,7 @@ public class ServerPlayer extends Player { +@@ -284,6 +284,7 @@ public class ServerPlayer extends Player { public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -29,7 +29,7 @@ index 70d952fedba4b9bab44e0e6de94d60b894538ce7..7b72be8dcaf3fc5c7151c847faa2dfc7 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -564,6 +565,7 @@ public class ServerPlayer extends Player { +@@ -571,6 +572,7 @@ public class ServerPlayer extends Player { } } @@ -37,7 +37,7 @@ index 70d952fedba4b9bab44e0e6de94d60b894538ce7..7b72be8dcaf3fc5c7151c847faa2dfc7 if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur } -@@ -632,6 +634,7 @@ public class ServerPlayer extends Player { +@@ -639,6 +641,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -45,7 +45,7 @@ index 70d952fedba4b9bab44e0e6de94d60b894538ce7..7b72be8dcaf3fc5c7151c847faa2dfc7 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2812,5 +2815,13 @@ public class ServerPlayer extends Player { +@@ -2913,5 +2916,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0277-Add-item-packet-serialize-event.patch b/patches/server/0273-Add-item-packet-serialize-event.patch similarity index 89% rename from patches/server/0277-Add-item-packet-serialize-event.patch rename to patches/server/0273-Add-item-packet-serialize-event.patch index 4c37bfd59..76908d388 100644 --- a/patches/server/0277-Add-item-packet-serialize-event.patch +++ b/patches/server/0273-Add-item-packet-serialize-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add item packet serialize event diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e22859e2cd021 100644 +index ff794499df6a2b65db2ca5956d2b98317592057f..fcfb7eb9b093896f11be4c13d450c522b3c47b15 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -@@ -94,6 +94,8 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -95,6 +95,8 @@ public class FriendlyByteBuf extends ByteBuf { private static final int MAX_PUBLIC_KEY_LENGTH = 512; private static final Gson GSON = new Gson(); @@ -36,10 +36,10 @@ index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e2285 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 926ba816e7bccec0d1b34c2f8fc3300be84df4c2..b61c4d1ebb9c15a7ecd7bec5eb864851c053fb7e 100644 +index e764ad7096852d8905422e8d0f140ed16c5b4498..39ecb12d4296852ee5865dcfa2b8b6c3233a4804 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1549,6 +1549,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop piercedAndKilledEntities; + public ItemStack pickupItemStack; + public int lootingLevel; // Purpur // Spigot Start @Override -@@ -612,6 +613,12 @@ public abstract class AbstractArrow extends Projectile { +@@ -641,6 +642,12 @@ public abstract class AbstractArrow extends Projectile { this.knockback = punch; } @@ -67,7 +67,7 @@ index 0a0f19f73a6a4e5aece7c17089dc4d31ed2a5299..2c51a73ebfd05af21b0f5d731fc9f1df } diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 6d1573161f0d8c7999f84925ba7bbf536ee9583a..c32cbe6065ecb6810f352b8a3598c21e42e60e1d 100644 +index 07695068fafd170ca88ad109d83dea93c387d794..ec5daeef857fdad6c7659130fb42f52cf6eb491f 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -82,6 +82,14 @@ public class TridentItem extends Item implements Vanishable { diff --git a/patches/server/0279-Configurable-block-blast-resistance.patch b/patches/server/0275-Configurable-block-blast-resistance.patch similarity index 93% rename from patches/server/0279-Configurable-block-blast-resistance.patch rename to patches/server/0275-Configurable-block-blast-resistance.patch index bb40058aa..4be9e5d15 100644 --- a/patches/server/0279-Configurable-block-blast-resistance.patch +++ b/patches/server/0275-Configurable-block-blast-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 443bed339884f78ecda8abdbcdc9b57ea9768cc9..e46a097dc134672720bc753ec0da0a9102737d2c 100644 +index 06b07927aba82084bd2996be92b9e340a9bf2ad2..0b6ab25fb59a7dd713a0fa9063f8590cad8414de 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -81,7 +81,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; public final boolean hasCollision; diff --git a/patches/server/0280-Configurable-block-fall-damage-modifiers.patch b/patches/server/0276-Configurable-block-fall-damage-modifiers.patch similarity index 91% rename from patches/server/0280-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0276-Configurable-block-fall-damage-modifiers.patch index 9d2c1cadc..c885da83e 100644 --- a/patches/server/0280-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0276-Configurable-block-fall-damage-modifiers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index e8405a57fb88e63b63baaf00645c417633bdc0f2..2b66ddafaaca17f64d1e7502dfa4d7576e3e032f 100644 +index ab11b017f0795f5ec8161a4831c463c780307eaa..8c6a8ab9e18bfbb015febea55e188ee9882ec5dc 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -173,7 +173,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -183,7 +183,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -18,10 +18,10 @@ index e8405a57fb88e63b63baaf00645c417633bdc0f2..2b66ddafaaca17f64d1e7502dfa4d757 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index cee9e07a250ed61570cf9787236308f91724f02f..65504432a13df45e895cf6ca885627014444563a 100644 +index f70d462a42e5f4b1951cf015234c3b383d90bc9b..9e32ca4a0f94627bbd4d3cedd5be93bfeb8115ee 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -94,6 +94,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -96,6 +96,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -32,7 +32,7 @@ index cee9e07a250ed61570cf9787236308f91724f02f..65504432a13df45e895cf6ca88562701 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -506,7 +510,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -513,7 +517,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -42,10 +42,10 @@ index cee9e07a250ed61570cf9787236308f91724f02f..65504432a13df45e895cf6ca88562701 public void updateEntityAfterFallOn(BlockGetter world, Entity entity) { diff --git a/src/main/java/net/minecraft/world/level/block/HayBlock.java b/src/main/java/net/minecraft/world/level/block/HayBlock.java -index cfbe1dae76db76cf54a4f5d72aca72d5e893859e..74cb10230d459ac9f300a9d59af504d233ac663e 100644 +index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb2551a3a393 100644 --- a/src/main/java/net/minecraft/world/level/block/HayBlock.java +++ b/src/main/java/net/minecraft/world/level/block/HayBlock.java -@@ -15,6 +15,6 @@ public class HayBlock extends RotatedPillarBlock { +@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { diff --git a/patches/server/0281-Language-API.patch b/patches/server/0277-Language-API.patch similarity index 88% rename from patches/server/0281-Language-API.patch rename to patches/server/0277-Language-API.patch index e68b59216..e69bdd237 100644 --- a/patches/server/0281-Language-API.patch +++ b/patches/server/0277-Language-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4563040a258f4379bd717c398a51c2d2cce9e77f..79f00c72d28426095a3f3742d77f2369164b2a9c 100644 +index 7c35318e65608b29f6ea0c1481c0af8f0dd8ba5f..1677e737daa272d7669777a75214170a8e9c7d74 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -401,6 +401,20 @@ public final class CraftServer implements Server { +@@ -402,6 +402,20 @@ public final class CraftServer implements Server { this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); Bukkit.setServer(this); diff --git a/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch similarity index 93% rename from patches/server/0282-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0278-Milk-Keeps-Beneficial-Effects.patch index 554916528..ae4807ae8 100644 --- a/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7a5f51c9585c280c51b4dbe5e6848d7e07fa7386..aa7ef9bcd6caffa9b987ae4ae759f89358e3001d 100644 +index 3af72be980ed6cab704eedadeb9a9577aca25fc1..ac57b2d31019eeb12a0d63266b900c606d90b05e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1124,6 +1124,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,7 +17,7 @@ index 7a5f51c9585c280c51b4dbe5e6848d7e07fa7386..aa7ef9bcd6caffa9b987ae4ae759f893 if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 6986fcbe67e55c4942d13b2af39bd6293bf993a9..d8a4b1aaa180fc0c837bc0d8efab781a578898a5 100644 +index 08320248a6956d41d60681e3d29f81768c80fd3d..237247cb91248eb2d05e967e95cb8ad0a8a63080 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -114,7 +114,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -30,7 +30,7 @@ index 6986fcbe67e55c4942d13b2af39bd6293bf993a9..d8a4b1aaa180fc0c837bc0d8efab781a this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a8a1a9bca5c2f92b87fb1a21bdff194718caa8e..1bec2760e6ae3022dbcef1bb40d7749cf3b0609e 100644 +index 4cd381104a2ab320feb3984b8f77f9630246c7e4..48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0284-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0284-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0280-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0285-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0285-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 4655518ae..342e508ef 100644 --- a/patches/server/0285-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1bec2760e6ae3022dbcef1bb40d7749cf3b0609e..c04befc0e4d97497087bc8961daefe814e199a84 100644 +index 48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f..52108909cbe0ea7faa0032f985898c41084cac10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1357,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1348,6 +1348,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 1bec2760e6ae3022dbcef1bb40d7749cf3b0609e..c04befc0e4d97497087bc8961daefe81 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1375,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1366,6 +1367,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0286-Fire-Immunity-API.patch b/patches/server/0282-Fire-Immunity-API.patch similarity index 78% rename from patches/server/0286-Fire-Immunity-API.patch rename to patches/server/0282-Fire-Immunity-API.patch index 8e400970f..a32b76a9f 100644 --- a/patches/server/0286-Fire-Immunity-API.patch +++ b/patches/server/0282-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5d46d35db653d58ccb850794282e8613b33e2393..1b58e4c4919d6e697533dd2f29f7c91ff5074987 100644 +index 82f649715a566a5bbbbc175877bd344d96e41a2d..9c7a84874df50ba675a6a480086336e0c137424f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -418,6 +418,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -423,6 +423,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean collidingWithWorldBorder; // Paper public boolean fixedPose = false; // Paper @@ -16,7 +16,7 @@ index 5d46d35db653d58ccb850794282e8613b33e2393..1b58e4c4919d6e697533dd2f29f7c91f public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1812,7 +1813,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1805,7 +1806,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean fireImmune() { @@ -25,19 +25,19 @@ index 5d46d35db653d58ccb850794282e8613b33e2393..1b58e4c4919d6e697533dd2f29f7c91f } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2486,6 +2487,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - nbt.putBoolean("Paper.FreezeLock", true); +@@ -2497,6 +2498,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S + nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end + // Purpur start + if (immuneToFire != null) { -+ nbt.putBoolean("Purpur.FireImmune", immuneToFire); ++ nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); + } + // Purpur end - return nbt; + return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2633,6 +2639,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2644,6 +2650,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,10 +50,10 @@ index 5d46d35db653d58ccb850794282e8613b33e2393..1b58e4c4919d6e697533dd2f29f7c91f } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 38ff078ae636218d157d4c885fca19be5666b52a..a18bc175d0a6d55492edd02cdc407a52d58346c1 100644 +index 03b38dd69cd6932c17b9b2d832e67c14628a4918..d2c4ebe74023c96220aae4629abb3a515f1c2a20 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -223,6 +223,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -228,6 +228,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -71,7 +71,7 @@ index 38ff078ae636218d157d4c885fca19be5666b52a..a18bc175d0a6d55492edd02cdc407a52 public boolean isInDaylight() { return getHandle().isSunBurnTick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index b2a28dea0c711331c351d38ac19944ef9f9299dc..f03a6fad31b240722a2b944d91282412cf79d884 100644 +index 14d6ff11c8b8b047ada5d308515e9d214cf77b69..ba33fb0b049a670851004022da18fe744dca27eb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -173,9 +173,14 @@ public class CraftItem extends CraftEntity implements Item { diff --git a/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 88% rename from patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 1f4e95614..82885415c 100644 --- a/patches/server/0287-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1b58e4c4919d6e697533dd2f29f7c91ff5074987..d61d7ae47285d9779221011212f871c4ef7de830 100644 +index 9c7a84874df50ba675a6a480086336e0c137424f..b38b39bbf6560af368780a305559668a9d8f808b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -917,6 +917,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -910,6 +910,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end @@ -17,7 +17,7 @@ index 1b58e4c4919d6e697533dd2f29f7c91ff5074987..d61d7ae47285d9779221011212f871c4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c04befc0e4d97497087bc8961daefe814e199a84..443871290764e6863509acd0847f8c4c8f8566b6 100644 +index 52108909cbe0ea7faa0032f985898c41084cac10..0e25bfd7b345c3ba578191ce6656f041ffb9fd05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig { @@ -28,7 +28,7 @@ index c04befc0e4d97497087bc8961daefe814e199a84..443871290764e6863509acd0847f8c4c public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -446,6 +447,7 @@ public class PurpurWorldConfig { +@@ -444,6 +445,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0288-Added-got-ram-event.patch b/patches/server/0284-Added-got-ram-event.patch similarity index 86% rename from patches/server/0288-Added-got-ram-event.patch rename to patches/server/0284-Added-got-ram-event.patch index b9275a0e9..6512088bd 100644 --- a/patches/server/0288-Added-got-ram-event.patch +++ b/patches/server/0284-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 806b207e5246db7daa03bebabd7aa574d8b0dab7..5d7b20c30bc5e3be8511b300c318d12a1e4a49d0 100644 +index 1162318d8d187b8bdb30d28f6f61c430452c41b5..fd2a6c9def675fa2dd5e78fbc18002794098da26 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -429,6 +429,7 @@ public class Goat extends Animal { +@@ -428,6 +428,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0289-Log-skipped-entity-s-position.patch b/patches/server/0285-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/server/0289-Log-skipped-entity-s-position.patch rename to patches/server/0285-Log-skipped-entity-s-position.patch index eca731a8b..0d909a68e 100644 --- a/patches/server/0289-Log-skipped-entity-s-position.patch +++ b/patches/server/0285-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 5d703e322bd220665c3ce3a41e40129b238ae150..5930e45bae5aa86b3cedb811c4c9bb92099bc1b5 100644 +index ef01a87a77954f19f017129ab186afea9e6389a2..9793a5c9a36201b00ba32f2ac928cfabfbdb98e1 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -613,6 +613,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -615,6 +615,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/server/0290-End-Crystal-Cramming.patch b/patches/server/0286-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0290-End-Crystal-Cramming.patch rename to patches/server/0286-End-Crystal-Cramming.patch index fc7355718..35e687f75 100644 --- a/patches/server/0290-End-Crystal-Cramming.patch +++ b/patches/server/0286-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 564d17bc460e2a04947ff9676fbf4c8b1569659c..440add62fcfa62d483409e1aecfc9159 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 443871290764e6863509acd0847f8c4c8f8566b6..829f3a7542460ef71bd934ff3dea0321168a9fac 100644 +index 0e25bfd7b345c3ba578191ce6656f041ffb9fd05..8a4a51283bfc37e61c6581bf6e2ddd49e79a3122 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -877,6 +877,7 @@ public class PurpurWorldConfig { +@@ -873,6 +873,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 443871290764e6863509acd0847f8c4c8f8566b6..829f3a7542460ef71bd934ff3dea0321 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -904,6 +905,7 @@ public class PurpurWorldConfig { +@@ -900,6 +901,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 2ff083b98..ba5a3cc4b 100644 --- a/patches/server/0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index a5f9747be5503dd24abd98f11cfa8229448ca3bf..99ef8d7e3ee0ee9777d12ad825e728c3 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 829f3a7542460ef71bd934ff3dea0321168a9fac..78e8043f85f65e81db0d4192fbe93df952849490 100644 +index 8a4a51283bfc37e61c6581bf6e2ddd49e79a3122..05b4bd8495451dbd6277946e77737495b58375f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -776,11 +776,13 @@ public class PurpurWorldConfig { +@@ -772,11 +772,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0292-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0292-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0293-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch similarity index 88% rename from patches/server/0293-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0289-Config-to-remove-explosion-radius-clamp.patch index d9f022418..75558571d 100644 --- a/patches/server/0293-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 82d81fd2edff9df0bb4ff116d9274887a316d0a8..823f0e36119079eb827767c08391f18d75b66610 100644 +index d116f6d5c5ca8cc956264ef14f59001a2ff32d49..624dad43a1088e1d6423561e2cf418f329fbca38 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -111,6 +111,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -17,10 +17,10 @@ index 82d81fd2edff9df0bb4ff116d9274887a316d0a8..823f0e36119079eb827767c08391f18d this.growlTime = 100; this.nodes = new Node[24]; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b26cea981a876fd42c9ab91923d507b3c11a0425..b6c8f19a7d919fc56deb3518a28d725e9afbc82b 100644 +index 370952a7be8df3ea00c0816235d84927df4ed79d..b0b8a0391bfd347fea44271b0408de2792d6489b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -87,7 +87,7 @@ public class Explosion { +@@ -97,7 +97,7 @@ public class Explosion { this.hitPlayers = Maps.newHashMap(); this.level = world; this.source = entity; @@ -29,7 +29,7 @@ index b26cea981a876fd42c9ab91923d507b3c11a0425..b6c8f19a7d919fc56deb3518a28d725e this.x = x; this.y = y; this.z = z; -@@ -403,7 +403,7 @@ public class Explosion { +@@ -425,7 +425,7 @@ public class Explosion { public void explode() { // CraftBukkit start @@ -39,7 +39,7 @@ index b26cea981a876fd42c9ab91923d507b3c11a0425..b6c8f19a7d919fc56deb3518a28d725e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 78e8043f85f65e81db0d4192fbe93df952849490..ba7fa9386b494c38e44717529f20c9341e26d9c2 100644 +index 05b4bd8495451dbd6277946e77737495b58375f8..f3571a1a86b7ec9f10b2a5bf4e2c3f7b0bded7d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0294-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 86% rename from patches/server/0294-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch index 8da96d245..2c159a893 100644 --- a/patches/server/0294-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -5,19 +5,19 @@ Subject: [PATCH] bonemealable sugarcane, cactus, and netherwart diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index c2ca3432a47124d02e1aaf8ffb621f9a2c7d7a62..fa6a2fbb8065b1f120750491b7e4b89542a6a891 100644 +index 89c0006c06098e0d09a259ea8415d55b997367aa..a476f9a1eaa99b557962947149b6ee6ea3288d6e 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -@@ -22,7 +22,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; +@@ -23,7 +23,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -public class CactusBlock extends Block { +public class CactusBlock extends Block implements BonemealableBlock { // Purpur + public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; - public static final int MAX_AGE = 15; -@@ -129,4 +129,34 @@ public class CactusBlock extends Block { +@@ -136,4 +136,34 @@ public class CactusBlock extends Block { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -53,19 +53,19 @@ index c2ca3432a47124d02e1aaf8ffb621f9a2c7d7a62..fa6a2fbb8065b1f120750491b7e4b895 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index 74fedd3e401c6d58c03c0579f4b919114404fd78..7d15796e3637c1a865703807c98a22c01315c307 100644 +index 7328764abb0790b389d396179db32f4a63bfe98a..9e47da91a5daed92b7326c84a88e619d2d981dd0 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -@@ -14,7 +14,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; +@@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class NetherWartBlock extends BushBlock { +public class NetherWartBlock extends BushBlock implements BonemealableBlock { // Purpur + public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; - public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -70,5 +70,22 @@ public class NetherWartBlock extends BushBlock { +@@ -78,5 +78,22 @@ public class NetherWartBlock extends BushBlock { super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops); } } @@ -89,19 +89,19 @@ index 74fedd3e401c6d58c03c0579f4b919114404fd78..7d15796e3637c1a865703807c98a22c0 // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java -index c3f500580d257e1397f2eb7c47b063a6fe6bb405..21a194fadb7d1f0a30f94caf999dabdd78847f36 100644 +index ceaec1776067b7635c3952025f00f13f4ea86c88..8b6c43b0a2fb4b89d6f63716e56074ef0e194e63 100644 --- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java -@@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; +@@ -20,7 +20,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class SugarCaneBlock extends Block { +public class SugarCaneBlock extends Block implements BonemealableBlock { // Purpur + public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; - protected static final float AABB_OFFSET = 6.0F; -@@ -106,4 +106,34 @@ public class SugarCaneBlock extends Block { +@@ -113,4 +113,34 @@ public class SugarCaneBlock extends Block { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SugarCaneBlock.AGE); } @@ -137,10 +137,10 @@ index c3f500580d257e1397f2eb7c47b063a6fe6bb405..21a194fadb7d1f0a30f94caf999dabdd + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba7fa9386b494c38e44717529f20c9341e26d9c2..2870a23c01ab5bdb45e355b2f1fd277395ef4771 100644 +index f3571a1a86b7ec9f10b2a5bf4e2c3f7b0bded7d1..db47c443a765a87d2cabde2d3956909661d65237 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -830,8 +830,20 @@ public class PurpurWorldConfig { +@@ -826,8 +826,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0295-Add-PreExplodeEvents.patch b/patches/server/0291-Add-PreExplodeEvents.patch similarity index 92% rename from patches/server/0295-Add-PreExplodeEvents.patch rename to patches/server/0291-Add-PreExplodeEvents.patch index c99e6649a..2462678f8 100644 --- a/patches/server/0295-Add-PreExplodeEvents.patch +++ b/patches/server/0291-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b6c8f19a7d919fc56deb3518a28d725e9afbc82b..ef9b1687dd2dfda5398523140aecc678b4690642 100644 +index b0b8a0391bfd347fea44271b0408de2792d6489b..e07078e175433b3b63c7031b02eb3846c091821d 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -407,6 +407,23 @@ public class Explosion { +@@ -429,6 +429,23 @@ public class Explosion { return; } // CraftBukkit end diff --git a/patches/server/0296-Improve-output-of-plugins-command.patch b/patches/server/0292-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0296-Improve-output-of-plugins-command.patch rename to patches/server/0292-Improve-output-of-plugins-command.patch diff --git a/patches/server/0297-Add-mending-multiplier.patch b/patches/server/0293-Add-mending-multiplier.patch similarity index 92% rename from patches/server/0297-Add-mending-multiplier.patch rename to patches/server/0293-Add-mending-multiplier.patch index cf095aedc..747ffa0df 100644 --- a/patches/server/0297-Add-mending-multiplier.patch +++ b/patches/server/0293-Add-mending-multiplier.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mending multiplier diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index b2233635b6acc35ea3668c36c56e57f15420ac62..724bf857bf1b89cb0947b8a82e0ce09a0bec0335 100644 +index a3ef8e6a698df4c78e0494da48063ddd29caf62f..1b8f5680c4122c7b6b19e2bc1ed6295caa024622 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -359,13 +359,15 @@ public class ExperienceOrb extends Entity { @@ -27,7 +27,7 @@ index b2233635b6acc35ea3668c36c56e57f15420ac62..724bf857bf1b89cb0947b8a82e0ce09a public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2870a23c01ab5bdb45e355b2f1fd277395ef4771..e7a794ce230c481e39436506facdb77726f96199 100644 +index db47c443a765a87d2cabde2d3956909661d65237..93f350d5059e9385f4ba344cd24be8ca4d3198e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0298-Make-GUI-Great-Again.patch b/patches/server/0294-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0298-Make-GUI-Great-Again.patch rename to patches/server/0294-Make-GUI-Great-Again.patch index 193a40bd4..d314a536c 100644 --- a/patches/server/0298-Make-GUI-Great-Again.patch +++ b/patches/server/0294-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index db17a6ce62bdaa5018e79f0fe0fac9838e6b07d6..a51306bb36d403ab627cd8b2fc8d8f7a3e6ca918 100644 +index 0d3d62620659d7897d4ad92147255a99a4a1866d..2e70ac06c1a6414d9fbbc7a929968e804f0a91f5 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0299-Stored-Bee-API.patch b/patches/server/0295-Stored-Bee-API.patch similarity index 98% rename from patches/server/0299-Stored-Bee-API.patch rename to patches/server/0295-Stored-Bee-API.patch index 244285d4f..4ff9f6b4e 100644 --- a/patches/server/0299-Stored-Bee-API.patch +++ b/patches/server/0295-Stored-Bee-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stored Bee API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 5dd0daba333159b26987921b810e0ac3575afc5f..1098cf5a7675ec742caf687cc8828e09cfd3125e 100644 +index 8a163b5d3c7759abe4fe84bfec788a15fddc1e44..f5bcfece7bba52234964da646370bc271043a631 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -130,6 +130,22 @@ public class BeehiveBlockEntity extends BlockEntity { diff --git a/patches/server/0300-Shears-can-defuse-TNT.patch b/patches/server/0296-Shears-can-defuse-TNT.patch similarity index 91% rename from patches/server/0300-Shears-can-defuse-TNT.patch rename to patches/server/0296-Shears-can-defuse-TNT.patch index 154157dd0..fe90a9509 100644 --- a/patches/server/0300-Shears-can-defuse-TNT.patch +++ b/patches/server/0296-Shears-can-defuse-TNT.patch @@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed325b658da 100644 +index c3e47426382296d650fa00ce0bc1a82bf23c7877..dfc3e9d2611ce418ac6f6cc5a23bb74415007713 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -175,4 +175,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -207,4 +207,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end @@ -42,10 +42,10 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed3 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5019942bbbabef9a73f34d3b3c84c7c6f2a014b1..469aa0c5d2080394f0a9cbbb3891f0de36da72a3 100644 +index 93f350d5059e9385f4ba344cd24be8ca4d3198e9..0b95401b8d89268a3b7a388acfcaba5b5b679a0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3223,4 +3223,11 @@ public class PurpurWorldConfig { +@@ -3214,4 +3214,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0301-Explorer-Map-API.patch b/patches/server/0297-Explorer-Map-API.patch similarity index 91% rename from patches/server/0301-Explorer-Map-API.patch rename to patches/server/0297-Explorer-Map-API.patch index f4039b193..b1f59284b 100644 --- a/patches/server/0301-Explorer-Map-API.patch +++ b/patches/server/0297-Explorer-Map-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index c368b437597edf7e165326727ae778a69c3fcc83..fed5bfb02ab7d6c1d1d9bf993fda5b3f411b9352 100644 +index cd841f027edbe7e000d633034a2aa6a214c20b5b..ad90732cd424d4a1b569f708a6719a9934dee6dc 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java @@ -243,6 +243,7 @@ public class MapItem extends ComplexItem { @@ -29,7 +29,7 @@ index e4c4948e076cd64686dfd16ae0568fafc1437140..804c342783baccdc12e8ca49a362770e // CraftBukkit start public final CraftMapView mapView; diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -index 2d2bf5c37709b8e747fbfa2db5ce86f258e86224..f6413ab181208d729afb532dca5e96e4c938e83c 100644 +index 15e9dd8844f893de5e8372b847c9e8295d6f69ca..b4b105c0190502328d5aeb680dd8e67c2875618f 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java @@ -46,4 +46,10 @@ public class CraftMapRenderer extends MapRenderer { diff --git a/patches/server/0302-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0302-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch index f0ebe5b25..c0699ddaf 100644 --- a/patches/server/0302-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec7c1b39a87f253c52de4d0f3b01e8329aaa723a..39236dc4d7c70edff091bb1df54b2158e6dd5e2c 100644 +index 0b95401b8d89268a3b7a388acfcaba5b5b679a0e..637c70fda2d3a82db8e6d831ff13160a05ab2008 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2036,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -2027,6 +2027,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index ec7c1b39a87f253c52de4d0f3b01e8329aaa723a..39236dc4d7c70edff091bb1df54b2158 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2049,6 +2050,7 @@ public class PurpurWorldConfig { +@@ -2040,6 +2041,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 94% rename from patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index ead8bf953..391415caa 100644 --- a/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -45,10 +45,10 @@ index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb5b1acf54f8347ef19c50f50bc6e9ff90fa87f5..cc9aa6b7a76b1d993f0e3eb3d8e9374fffd87176 100644 +index 637c70fda2d3a82db8e6d831ff13160a05ab2008..4f3f16e90362fb08cfa20441fdc3b7220d10dbb4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2205,6 +2205,7 @@ public class PurpurWorldConfig { +@@ -2196,6 +2196,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +56,7 @@ index bb5b1acf54f8347ef19c50f50bc6e9ff90fa87f5..cc9aa6b7a76b1d993f0e3eb3d8e9374f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2220,6 +2221,7 @@ public class PurpurWorldConfig { +@@ -2211,6 +2212,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0304-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0304-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0305-place-end-crystal-on-any-block.patch b/patches/server/0301-place-end-crystal-on-any-block.patch similarity index 88% rename from patches/server/0305-place-end-crystal-on-any-block.patch rename to patches/server/0301-place-end-crystal-on-any-block.patch index 617d26409..7d31a2ed7 100644 --- a/patches/server/0305-place-end-crystal-on-any-block.patch +++ b/patches/server/0301-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644 +index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9463316a3 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { @@ -18,10 +18,10 @@ index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba6 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd7f347e46f4fa08e291bfdbbb01ea4f3271a877..d4d9f748d259df8b6f4566efa21c15c470de5ba2 100644 +index 4f3f16e90362fb08cfa20441fdc3b7220d10dbb4..96f6186ca9eb1889beefd7b54addc42052f8907a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -899,6 +899,7 @@ public class PurpurWorldConfig { +@@ -895,6 +895,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index cd7f347e46f4fa08e291bfdbbb01ea4f3271a877..d4d9f748d259df8b6f4566efa21c15c4 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -927,6 +928,7 @@ public class PurpurWorldConfig { +@@ -923,6 +924,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0306-Add-hover-lines-API.patch b/patches/server/0302-Add-hover-lines-API.patch similarity index 88% rename from patches/server/0306-Add-hover-lines-API.patch rename to patches/server/0302-Add-hover-lines-API.patch index fef201802..61bbe2d48 100644 --- a/patches/server/0306-Add-hover-lines-API.patch +++ b/patches/server/0302-Add-hover-lines-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 9469b0d5d8a46ac17c3998a4b537a4feb1deb3b0..cf7b65ec3fac111b607f11d08aee8f11873a04fd 100644 +index c77634ec9c4e7a9eaacc81de7f95e9452b393a52..181a57cc22845d83f99b22b6c14cadd6cd3eeb36 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -@@ -599,4 +599,17 @@ public final class CraftItemFactory implements ItemFactory { +@@ -602,4 +602,17 @@ public final class CraftItemFactory implements ItemFactory { return CraftItemStack.asCraftMirror(enchanted); } // Paper end - enchantWithLevels API diff --git a/patches/server/0307-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 85% rename from patches/server/0307-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch index 0ed6de5c5..8a75a040a 100644 --- a/patches/server/0307-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Add option to disable the copper oxidation proximity penalty diff --git a/src/main/java/net/minecraft/world/level/block/ChangeOverTimeBlock.java b/src/main/java/net/minecraft/world/level/block/ChangeOverTimeBlock.java -index 8512b977b44a0a4d3a2521e27a60d65f7ac967be..dd270f67388c8663e0418875c88cb1e2a55d0635 100644 +index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2a36f62a7 100644 --- a/src/main/java/net/minecraft/world/level/block/ChangeOverTimeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ChangeOverTimeBlock.java -@@ -65,7 +65,7 @@ public interface ChangeOverTimeBlock> { +@@ -67,7 +67,7 @@ public interface ChangeOverTimeBlock> { } float f = (float) (k + 1) / (float) (k + j + 1); - float f1 = f * f * this.getChanceModifier(); + float f1 = world.purpurConfig.disableOxidationProximityPenalty ? this.getChanceModifier() : f * f * this.getChanceModifier(); // Purpur - if (random.nextFloat() < f1) { - this.getNext(state).ifPresent((iblockdata2) -> { + return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4d9f748d259df8b6f4566efa21c15c470de5ba2..64e172e6cbfb8134c2b36bce8279e1ef44085257 100644 +index 96f6186ca9eb1889beefd7b54addc42052f8907a..d24664bc4d373804e373266a189eb6de1e0b261d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/api/0002-Fix-pufferfish-issues.patch b/patches/unapplied/api/0001-Fix-pufferfish-issues.patch similarity index 100% rename from patches/api/0002-Fix-pufferfish-issues.patch rename to patches/unapplied/api/0001-Fix-pufferfish-issues.patch diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/unapplied/api/0001-Pufferfish-API-Changes.patch similarity index 100% rename from patches/api/0001-Pufferfish-API-Changes.patch rename to patches/unapplied/api/0001-Pufferfish-API-Changes.patch diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/unapplied/server/0001-Pufferfish-Server-Changes.patch similarity index 100% rename from patches/server/0001-Pufferfish-Server-Changes.patch rename to patches/unapplied/server/0001-Pufferfish-Server-Changes.patch diff --git a/patches/server/0002-Fix-pufferfish-issues.patch b/patches/unapplied/server/0002-Fix-pufferfish-issues.patch similarity index 100% rename from patches/server/0002-Fix-pufferfish-issues.patch rename to patches/unapplied/server/0002-Fix-pufferfish-issues.patch diff --git a/patches/server/0275-Make-pufferfish-config-relocatable.patch b/patches/unapplied/server/0275-Make-pufferfish-config-relocatable.patch similarity index 100% rename from patches/server/0275-Make-pufferfish-config-relocatable.patch rename to patches/unapplied/server/0275-Make-pufferfish-config-relocatable.patch From 2f003a6658e6603c9bbf7f0ded37db3c226b846e Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 7 Dec 2023 16:50:01 -0800 Subject: [PATCH 015/148] it builds \o/ --- patches/server/0001-Rebrand.patch | 7 ++-- patches/server/0006-Ridables.patch | 42 ++++++------------- ...-Configurable-entity-base-attributes.patch | 8 ++-- patches/server/0018-Silk-touch-spawners.patch | 8 ++-- ...36-Ender-dragon-always-drop-full-exp.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 4 +- ...oggle-for-water-sensitive-mob-damage.patch | 6 +-- ...ither-Ender-Dragon-can-ride-vehicles.patch | 4 +- .../0206-Extended-OfflinePlayer-API.patch | 6 +-- ...-Shears-can-have-looting-enchantment.patch | 12 ++++++ ...fig-to-remove-explosion-radius-clamp.patch | 12 ------ 11 files changed, 47 insertions(+), 66 deletions(-) diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 9c749f332..c70522c15 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -276,19 +276,18 @@ index ec2396f0e5d62b10450eaa7239a8c5479638b3c3..72bb60535d2f35435ae8b96faced60a1 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 774556a62eb240da42e84db4502e2ed43495be17..50e78e5220bd8cb48e585866b2cb25f6688ed9e0 100644 +index 774556a62eb240da42e84db4502e2ed43495be17..fb87620c742ff7912f5e8ccd2a7930dd605576d9 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -@@ -11,8 +11,7 @@ public final class Versioning { +@@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; - InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); -- Properties properties = new Properties(); + InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Purpur + Properties properties = new Properties(); if (stream != null) { - try { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java index 40dcdf6885e99b26283a9ea2bd4d4bf6ec358e71..5fc8cc40ab627eba0b2110c73d31af213a935733 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 02948550b..a4898a25a 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -79,7 +79,7 @@ index 9a94249834f8b0b8d3f6aeaf0c859ba875079250..0ade0256c3a227ea6a2971b2c5889b99 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 37632d0c41149e6269fead808903765f0e59dbcc..856803084d30cc4cbdb53bd6db15e7db5ea16154 100644 +index 37632d0c41149e6269fead808903765f0e59dbcc..eed3fa6b14b1e93f8d6571bba5675796e3418f49 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -124,7 +124,7 @@ index 37632d0c41149e6269fead808903765f0e59dbcc..856803084d30cc4cbdb53bd6db15e7db return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end -+ urpur start ++ // Purpur start + @Nullable + private Player rider = null; + @@ -2009,7 +2009,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index d8056421249c8e75e96a55ec07dce84d2bba9c5c..d22509f74bab68a06a8fa1a8547a2689053c6f85 100644 +index d8056421249c8e75e96a55ec07dce84d2bba9c5c..be0c77cd7ca3c9b9379c16b47dc5b5e354847ccf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,23 @@ public class Turtle extends Animal { @@ -2079,23 +2079,6 @@ index d8056421249c8e75e96a55ec07dce84d2bba9c5c..d22509f74bab68a06a8fa1a8547a2689 this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); -@@ -523,6 +543,16 @@ public class Turtle extends Animal { - - } - -+ // Purpur start -+ public void purpurTick(Player rider) { -+ if (turtle.isInWater()) { -+ waterController.purpurTick(rider); -+ } else { -+ super.purpurTick(rider); -+ } -+ } -+ // Purpur end -+ - @Override - protected boolean isValidTarget(LevelReader world, BlockPos pos) { - return !world.isEmptyBlock(pos.above()) ? false : TurtleEggBlock.isSand(world, 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 eecb7511582e5e316b71fa4a4734881424be5ca7..2efa2e19485f9d959a55115ab62f985454689379 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -2792,7 +2775,7 @@ index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818afb47d20 100644 +index f56bb431be7d5f1a1b8edec41af1f3a28289316d..152111ff4c29e6cf13afeba8c9707f407c2b3531 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2803,7 +2786,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -129,6 +130,38 @@ public class EnderDragon extends Mob implements Enemy { +@@ -129,6 +130,37 @@ public class EnderDragon extends Mob implements Enemy { this.noCulling = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY, ParticleTypes.EXPLOSION, ParticleTypes.EXPLOSION_EMITTER, SoundEvents.GENERIC_EXPLODE); // CraftBukkit @@ -2838,11 +2821,10 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 + @Override + public boolean dismountsUnderwater() { + return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.enderDragonRidableInWater; -+ } } public void setDragonFight(EndDragonFight fight) { -@@ -143,6 +176,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -143,6 +175,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2860,7 +2842,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -204,6 +248,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -204,6 +247,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2898,7 +2880,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -230,6 +305,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -230,6 +304,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2907,7 +2889,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -242,9 +319,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -242,9 +318,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2919,7 +2901,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -278,7 +355,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -278,7 +354,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2928,7 +2910,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -347,7 +424,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -347,7 +423,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -2937,7 +2919,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..a6feb1cf892050068ea2f30a0c785818 this.knockBack(this.level().getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.knockBack(this.level().getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.hurt(this.level().getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -391,7 +468,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -391,7 +467,7 @@ public class EnderDragon extends Mob implements Enemy { } if (!this.level().isClientSide) { diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index a0f1db9c2..3aa2dae30 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 856803084d30cc4cbdb53bd6db15e7db5ea16154..4e21ff640261d95f7db1134793fb5e2e91015fd6 100644 +index eed3fa6b14b1e93f8d6571bba5675796e3418f49..dc685733cbbd83408437085602e7a7c18d109e29 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -157,7 +157,7 @@ import org.bukkit.plugin.PluginManager; @@ -427,7 +427,7 @@ index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index d22509f74bab68a06a8fa1a8547a2689053c6f85..a2f31ca5fd5dbbcdd6854fa00d5011b2897fd714 100644 +index be0c77cd7ca3c9b9379c16b47dc5b5e354847ccf..ee34cb8ee470c6ea4527ddca456d1b6d6f906f2c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -103,6 +103,11 @@ public class Turtle extends Animal { @@ -759,10 +759,10 @@ index 13096fa2032679006f4264e03fdf86a71454f3ca..a5fd822713b56ebb2bec51364be71557 @Override protected void defineSynchedData() { diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a6feb1cf892050068ea2f30a0c785818afb47d20..315c26930b06a6c9e17f790a1582b8e83c19a782 100644 +index 152111ff4c29e6cf13afeba8c9707f407c2b3531..e9cdda0dd902cade5cc32acf4dcdc6c3174e0191 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -187,6 +187,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -186,6 +186,11 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end diff --git a/patches/server/0018-Silk-touch-spawners.patch b/patches/server/0018-Silk-touch-spawners.patch index b99569b6e..d65d2f6b8 100644 --- a/patches/server/0018-Silk-touch-spawners.patch +++ b/patches/server/0018-Silk-touch-spawners.patch @@ -18,7 +18,7 @@ index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc374 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..72fe95069f449544ff8a17643e4bd654b698822e 100644 +index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c2e03881fff78aff203b5838180894bb70f419b9 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -42,6 +42,58 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -29,12 +29,12 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..72fe95069f449544ff8a17643e4bd654 + @Override + public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack, boolean includeDrops) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { -+ Optional> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); ++ java.util.Optional> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); + + net.minecraft.world.entity.EntityType entityType = type.orElse(null); + final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType == null ? Component.empty() : entityType.getDescription()); -+ CompoundTag display = new CompoundTag(); -+ CompoundTag tag = new CompoundTag(); ++ net.minecraft.nbt.CompoundTag display = new net.minecraft.nbt.CompoundTag(); ++ net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); + + String name = level.purpurConfig.silkTouchSpawnerName; + if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { diff --git a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch b/patches/server/0036-Ender-dragon-always-drop-full-exp.patch index 425a6a3f7..d9f632b5d 100644 --- a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0036-Ender-dragon-always-drop-full-exp.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ender dragon always drop full exp diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 315c26930b06a6c9e17f790a1582b8e83c19a782..e28e25b0563bb6022ad1fb49f1c46fe619b65602 100644 +index e9cdda0dd902cade5cc32acf4dcdc6c3174e0191..cfe7086b0259eefcd221a54529c111f7eb1adc38 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -749,7 +749,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -748,7 +748,7 @@ public class EnderDragon extends Mob implements Enemy { boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); short short0 = 500; diff --git a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch index 9712c8f0f..ccb40a3c2 100644 --- a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch @@ -131,10 +131,10 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index e28e25b0563bb6022ad1fb49f1c46fe619b65602..2a0e45b9580b73c453aba02f822f10bd3a1f7c9d 100644 +index cfe7086b0259eefcd221a54529c111f7eb1adc38..5381ee91770a0f1012b5478d6615540263e46533 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -605,7 +605,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -604,7 +604,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { diff --git a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch index 543dbfda2..c758ae8d3 100644 --- a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch @@ -379,7 +379,7 @@ index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index e273bf2847d4c5daaa320f36672083c996428f61..5c082d99b54f33a3f640172f86f96990f654fc38 100644 +index f16b2d368ca247cad5764d11efa4fe754eadc6d6..cc1ccef921e70c33e5d6acbd73d5eecc4ea99064 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -113,6 +113,11 @@ public class Turtle extends Animal { @@ -555,10 +555,10 @@ index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 2a0e45b9580b73c453aba02f822f10bd3a1f7c9d..f3ef0116537c660d46c17e1ccb0dcb62bc552b91 100644 +index 5381ee91770a0f1012b5478d6615540263e46533..5643f35f02fff5a2d4072d246f8646772695b797 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -192,6 +192,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -191,6 +191,11 @@ public class EnderDragon extends Mob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.enderDragonMaxHealth); } diff --git a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 734468ce1..32841fab2 100644 --- a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f3ef0116537c660d46c17e1ccb0dcb62bc552b91..d116f6d5c5ca8cc956264ef14f59001a2ff32d49 100644 +index 5643f35f02fff5a2d4072d246f8646772695b797..dc7804371b65c43367ec87e79433106e8a11a6ff 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -1189,6 +1189,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1188,6 +1188,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch index a290e9e2b..c57eac638 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..d0e3b531392738679894a989293ae49eb319676c 100644 +index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de7901c7e6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -567,4 +567,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -212,10 +212,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..d0e3b531392738679894a989293ae49e + File playerDir = server.console.playerDataStorage.getPlayerDir(); + try { + File tempFile = File.createTempFile(this.getUniqueId()+"-", ".dat", playerDir); -+ net.minecraft.nbt.NbtIo.writeCompressed(compoundTag, tempFile); ++ net.minecraft.nbt.NbtIo.writeCompressed(compoundTag, tempFile.toPath()); + File playerDataFile = new File(playerDir, this.getUniqueId()+".dat"); + File playerDataFileOld = new File(playerDir, this.getUniqueId()+".dat_old"); -+ net.minecraft.Util.safeReplaceFile(playerDataFile, tempFile, playerDataFileOld); ++ net.minecraft.Util.safeReplaceFile(playerDataFile.toPath(), tempFile.toPath(), playerDataFileOld.toPath()); + } catch (java.io.IOException e) { + e.printStackTrace(); + } diff --git a/patches/server/0231-Shears-can-have-looting-enchantment.patch b/patches/server/0231-Shears-can-have-looting-enchantment.patch index daa85ac1a..97a8b881d 100644 --- a/patches/server/0231-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0231-Shears-can-have-looting-enchantment.patch @@ -157,6 +157,18 @@ index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f46379 @Override public int getMinCost(int level) { return 15 + (level - 1) * 9; +diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +index f81faaf6d69b09f635d71491303fca1d494001c5..f782e8dd9d3456f345859dffd69e5830d576ccd1 100644 +--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java ++++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +@@ -81,6 +81,7 @@ public class CraftEnchantment extends Enchantment { + case CROSSBOW -> EnchantmentTarget.CROSSBOW; + case VANISHABLE -> EnchantmentTarget.VANISHABLE; + case BOW_AND_CROSSBOW -> EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur ++ case WEAPON_AND_SHEARS -> EnchantmentTarget.WEAPON_AND_SHEARS; // Purpur + }; + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index d56c2776d08306245618dca04cd39891bb61c1bd..730a4a2e46aeb233d8036e8d7e1749dcb397e6c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch index 75558571d..b23284f57 100644 --- a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch @@ -4,18 +4,6 @@ Date: Mon, 9 Jan 2023 19:45:55 -0500 Subject: [PATCH] Config to remove explosion radius clamp -diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index d116f6d5c5ca8cc956264ef14f59001a2ff32d49..624dad43a1088e1d6423561e2cf418f329fbca38 100644 ---- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -111,6 +111,7 @@ public class EnderDragon extends Mob implements Enemy { - - public EnderDragon(EntityType entitytypes, Level world) { - super(EntityType.ENDER_DRAGON, world); -+ this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // Purpur - moved instantiation from field - this.fightOrigin = BlockPos.ZERO; - this.growlTime = 100; - this.nodes = new Node[24]; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java index 370952a7be8df3ea00c0816235d84927df4ed79d..b0b8a0391bfd347fea44271b0408de2792d6489b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java From a0b716fb618bf763efd683ed95d9be32e0953fd7 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 8 Dec 2023 16:24:28 -0800 Subject: [PATCH 016/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f9edc4b Update paperweight to 1.5.11 PaperMC/Paper@2f92d4e Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@8d8eb3b optimise explosion damage further PaperMC/Paper@7606e6d fixup tests and add missing API detected by those tests PaperMC/Paper@f17622c more cleanup and resource pack api fixes PaperMC/Paper@9051fc3 remove redundant patch --- gradle.properties | 2 +- patches/api/0003-Purpur-client-support.patch | 4 +- patches/api/0008-AFK-API.patch | 4 +- patches/api/0042-Debug-Marker-API.patch | 4 +- patches/api/0043-Add-death-screen-API.patch | 4 +- .../server/0003-Purpur-client-support.patch | 6 +- .../server/0004-Fix-decompile-errors.patch | 26 +++++++ patches/server/0006-Ridables.patch | 6 +- patches/server/0010-AFK-API.patch | 8 +- patches/server/0070-Entity-lifespan.patch | 4 +- ...sable-zombie-aggressiveness-towards-.patch | 4 +- ...0122-Add-EntityTeleportHinderedEvent.patch | 6 +- .../0206-Extended-OfflinePlayer-API.patch | 4 +- patches/server/0236-Allow-void-trading.patch | 4 +- patches/server/0263-Remove-Timings.patch | 10 +-- .../server/0264-Remove-Mojang-Profiler.patch | 76 ++++++++++++++++++- patches/server/0267-Debug-Marker-API.patch | 4 +- .../server/0271-Add-death-screen-API.patch | 4 +- ...0273-Add-item-packet-serialize-event.patch | 4 +- patches/server/0297-Explorer-Map-API.patch | 4 +- 20 files changed, 141 insertions(+), 47 deletions(-) diff --git a/gradle.properties b/gradle.properties index 10f4f2b8b..3a4b5af8b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 930a24f965d02250fa58436c019a4d5eb7e5f607 +paperCommit = 9051fc347c428500090e814c98e9d8503dc7a205 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0003-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch index cfbee023b..33d2b0679 100644 --- a/patches/api/0003-Purpur-client-support.patch +++ b/patches/api/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 962283d336e6d53941cebbc3a995d403ff989f66..f866628e5d9e8edccab657f86f60f911c2e3fb06 100644 +index a8d3451ccfcd21a9e80adc2feab8fc9c2926c753..271b3ee810f9689dab223eb0e6b51eef358ee38d 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3414,4 +3414,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3484,4 +3484,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0008-AFK-API.patch index c661ab8ac..31e1ce5d3 100644 --- a/patches/api/0008-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index f866628e5d9e8edccab657f86f60f911c2e3fb06..e3a6289547ff378fecf97b20ab08c8b36fe9cfa6 100644 +index 271b3ee810f9689dab223eb0e6b51eef358ee38d..31b086d944fd06a518c49da84cbc58744591a2f9 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3422,5 +3422,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3492,5 +3492,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0042-Debug-Marker-API.patch b/patches/api/0042-Debug-Marker-API.patch index c2f5e66f9..5693253bc 100644 --- a/patches/api/0042-Debug-Marker-API.patch +++ b/patches/api/0042-Debug-Marker-API.patch @@ -260,10 +260,10 @@ index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5d /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index e3a6289547ff378fecf97b20ab08c8b36fe9cfa6..617d1ff6cfe1113668f4f91b5ed83016ad48c3f7 100644 +index 31b086d944fd06a518c49da84cbc58744591a2f9..2587fa1f34eb8ed6c50e500531d07f9325d91f16 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3442,5 +3442,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3512,5 +3512,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0043-Add-death-screen-API.patch b/patches/api/0043-Add-death-screen-API.patch index 97bd3725e..7dc8a33c1 100644 --- a/patches/api/0043-Add-death-screen-API.patch +++ b/patches/api/0043-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 617d1ff6cfe1113668f4f91b5ed83016ad48c3f7..498f9d8bbda8ab248ec520d850c9169da4b00327 100644 +index 2587fa1f34eb8ed6c50e500531d07f9325d91f16..c70af6fb5789974b1f302d408021df6284f014a1 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3512,5 +3512,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3582,5 +3582,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index 8600c66b6..a88398ac6 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -17,7 +17,7 @@ index 8efbbd379244e3ed54d4aba199037cc20ccd096a..86cf69de7a35f1ac8e2c56f988e74832 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 77cd2b73e4d499beca16962a6b3d1fefe279cd87..13e064451c4d48e873061b6dea431a6b101de2ee 100644 +index 4a712f5fc4f0b4a4434ae808c989113bee8d8634..fb03498b355a86e156ed26ee903ba93c03365dcb 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -43,10 +43,10 @@ index 77cd2b73e4d499beca16962a6b3d1fefe279cd87..13e064451c4d48e873061b6dea431a6b try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ed41decbf0522c516b3608569d5719687105e25b..67bb2541fff19f0a48c7b1289e34749ece632d56 100644 +index 036b31cbfda8bac02205d99c1eff8a08f4da1250..ef9b8e50522583aa9675ab4d15fc8285a311e2ec 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3315,4 +3315,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3293,4 +3293,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0004-Fix-decompile-errors.patch b/patches/server/0004-Fix-decompile-errors.patch index 3157b4565..f89a4b10b 100644 --- a/patches/server/0004-Fix-decompile-errors.patch +++ b/patches/server/0004-Fix-decompile-errors.patch @@ -4,6 +4,19 @@ Date: Sun, 12 Jun 2022 06:20:21 -0500 Subject: [PATCH] Fix decompile errors +diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +index 89f0f68b3e2be64bcbf8b173a51d56ea3a3fb4ea..05e1c94268cf5c6897807cd7acced652856a09ea 100644 +--- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java ++++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +@@ -94,7 +94,7 @@ public class BuildContexts> { + + if (list.isEmpty()) { + if (chainModifiers.isReturn()) { +- context.queueNext(new CommandQueueEntry<>(frame, FallthroughTask.instance())); ++ context.queueNext(new CommandQueueEntry<>(frame, (EntryAction) FallthroughTask.instance())); // Purpur - decompile error + } + + } else { 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 d9016807bc21c38a5c38170e1335c79b39355bcb..03c065d0ad97d29f3586ba2bf3cd207b867ed634 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java @@ -30,6 +43,19 @@ index b79c86272f12c4b1173ea494cbe09e1ecdc23533..11275a9ec6faa69c9f054683cb47312e } protected void updateActivity() { +diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +index 0b8992a9aea781470ab3b1880cf041972a20089d..ab183a7d94a27d5235ff33ce7784c92d66d40b89 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java ++++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +@@ -59,7 +59,7 @@ public class Breeze extends Monster { + + @Override + public Brain getBrain() { +- return super.getBrain(); ++ return (Brain) super.getBrain(); // Purpur - decompile error + } + + @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index d02ee11066fc4f07ccb110b09b86d895ff90d4f2..e1be4a77fae0b9120781f460079269b85c993930 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index a4898a25a..359e81728 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -34,7 +34,7 @@ index 88b79cd90e936e1c48b84d7f762f425e1ae09259..81e4b7254e1c3cb714a9c37d941ff1b5 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f4d53d9bfe5b060158f69b5d9e4533a5b9869eed..35cc427755cccb123a866220bd2a72cdbd723465 100644 +index b78a9628a88f2a495ef6de74446a02a14d41a1f6..d328cc90fc6e333ea3079e462046a017a6cfc6f8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -225,6 +225,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -66,10 +66,10 @@ index b0e698b2532ed6af84ca2dd0d8b1c795921c5823..d5940e560ea890f7f017ff9c37939a48 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9a94249834f8b0b8d3f6aeaf0c859ba875079250..0ade0256c3a227ea6a2971b2c5889b9935d52259 100644 +index 9073db9ad3627633f46314ae936d584fa400a9ce..41f3415c6c1b7a3ee2c733445bfefdc51089ecb5 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2720,6 +2720,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2714,6 +2714,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 3410e9046..218814b89 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -78,7 +78,7 @@ index d5940e560ea890f7f017ff9c37939a485be94540..f862bd65b535fc9e289b31260af69907 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0ade0256c3a227ea6a2971b2c5889b9935d52259..34a369dd615c4701d1bfb66a51623eab8e0b3080 100644 +index 41f3415c6c1b7a3ee2c733445bfefdc51089ecb5..de9d79c5e83ccce5f6fc585435e18a481d790f38 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -326,6 +326,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,10 +223,10 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 67bb2541fff19f0a48c7b1289e34749ece632d56..62e5bdd889392f6e2da73d093ff77ac355a4ea3c 100644 +index ef9b8e50522583aa9675ab4d15fc8285a311e2ec..54e2b4b116eadb1fdce15e4aee8e97d60fa2c8db 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -531,10 +531,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -527,10 +527,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -243,7 +243,7 @@ index 67bb2541fff19f0a48c7b1289e34749ece632d56..62e5bdd889392f6e2da73d093ff77ac3 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3321,5 +3326,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3299,5 +3304,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0070-Entity-lifespan.patch index 527592431..096a3e99c 100644 --- a/patches/server/0070-Entity-lifespan.patch +++ b/patches/server/0070-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 2d29caa16c754b06cbfe91038b673668a1b61d02..c58ede27583fa14fffcc8554d58bb47a94886e40 100644 +index 22e0370498dac0f56e29ae483097bf453a277450..224e0453fc51224e8a4937a1d089053e54b6f9e0 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2747,6 +2747,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2741,6 +2741,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { diff --git a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 7f6e878c5..a981b1550 100644 --- a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952c34ba8e3 100644 +index cfe6a6f6bcfd7a3b29ab25f5a6745d31c18f338d..c168658d4d4ec1ddd80425e786d4435fd6576637 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -136,6 +136,10 @@ public class MobGoalHelper { +@@ -137,6 +137,10 @@ public class MobGoalHelper { static { // TODO these kinda should be checked on each release, in case obfuscation changes deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); diff --git a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch index 4d0909fc1..ce3e3d2e3 100644 --- a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch @@ -55,7 +55,7 @@ index ee998d06804e344ea9d5b84ef0074b84aaba04c2..c51ac562d642061ce60db66ae9a86eec EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55fbb12993f 100644 +index 2e264b8b13df9da9163a80b3dd4345af3cff431c..7b27852682909b7d19942bbb517e6107534f61c2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -178,6 +178,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { @@ -89,10 +89,10 @@ index fed6671e518b2f1601bbf4154195a844fc3b0fd1..669405e0a38adc5336aa004011544346 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 62e5bdd889392f6e2da73d093ff77ac355a4ea3c..6413d01dbdabb2f9d9507403dca92391e9dc08bc 100644 +index 54e2b4b116eadb1fdce15e4aee8e97d60fa2c8db..f4f6a04144139491f0b051dd33e256df5e3c368c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1375,6 +1375,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1371,6 +1371,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch index c57eac638..57fdc89b4 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 6413d01dbdabb2f9d9507403dca92391e9dc08bc..0df4d72d82a4f047c6272af664ad61ee0117cf67 100644 +index f4f6a04144139491f0b051dd33e256df5e3c368c..f34b24ff4a5afade707206b74b0cf4a3f2f913de 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2547,6 +2547,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2565,6 +2565,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0236-Allow-void-trading.patch b/patches/server/0236-Allow-void-trading.patch index e23a7dff5..8092f7222 100644 --- a/patches/server/0236-Allow-void-trading.patch +++ b/patches/server/0236-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5db8e4c8879d355843c196b17b8f39e9fe5d9a6a..cc45c828775ac8551fb1efa208f8acc9a79e7f49 100644 +index 9418734ca37ccf79dd28b9aacf6f107511131d09..90328eec0aefa1447e03e0003f43f2a27959cab0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2902,7 +2902,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2908,7 +2908,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start diff --git a/patches/server/0263-Remove-Timings.patch b/patches/server/0263-Remove-Timings.patch index 6e3f3b87c..0058a1ad9 100644 --- a/patches/server/0263-Remove-Timings.patch +++ b/patches/server/0263-Remove-Timings.patch @@ -448,7 +448,7 @@ index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cc45c828775ac8551fb1efa208f8acc9a79e7f49..7673c3be73a5e6527f04333047839edbaa778e8c 100644 +index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -867,7 +867,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -631,10 +631,10 @@ index cc45c828775ac8551fb1efa208f8acc9a79e7f49..7673c3be73a5e6527f04333047839edb } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 70c8b4ac1d1a06af280dcecafa6ccf4093b69c13..7865288eee0950c346801cc20aea9071a31fc6dc 100644 +index 417dd74c422411e9f85694e3a1a1e31024f5b55e..823f513f19dd5399b84342e2a860c3637bbf0516 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2458,7 +2458,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -643,7 +643,7 @@ index 70c8b4ac1d1a06af280dcecafa6ccf4093b69c13..7865288eee0950c346801cc20aea9071 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2468,7 +2468,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2462,7 +2462,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -652,7 +652,7 @@ index 70c8b4ac1d1a06af280dcecafa6ccf4093b69c13..7865288eee0950c346801cc20aea9071 return; } -@@ -2481,7 +2481,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2475,7 +2475,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch index 244cd67f4..a32fc0583 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -37,6 +37,56 @@ index 428dd75450bdd5daf902a1fbaca7031a9bc585a8..c1202a56b560269e132eafd8bb123834 + //commandlistenerwrapper.getServer().getProfiler().pop(); // Purpur } + } +diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +index 05e1c94268cf5c6897807cd7acced652856a09ea..d1c7effca3592a234925657136f750717d696873 100644 +--- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java ++++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +@@ -43,9 +43,9 @@ public class BuildContexts> { + ChainModifiers chainModifiers = flags; + List list = sources; + if (contextChain.getStage() != Stage.EXECUTE) { +- context.profiler().push(() -> { ++ /*context.profiler().push(() -> { // Purpur + return "prepare " + this.commandInput; +- }); ++ });*/ // Purpur + + try { + for(int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { +@@ -88,7 +88,7 @@ public class BuildContexts> { + } + } + } finally { +- context.profiler().pop(); ++ // context.profiler().pop(); // Purpur + } + } + +diff --git a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java +index 821dc4aeaf48460000682604fba51b340b9738e7..3aa2ce6a2a3d3cdfc372a60419a09f49002339da 100644 +--- a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java ++++ b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java +@@ -23,9 +23,9 @@ public class ExecuteCommand> implements Unbo + + @Override + public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { +- executionContext.profiler().push(() -> { ++ /*executionContext.profiler().push(() -> { // Purpur + return "execute " + this.commandInput; +- }); ++ });*/ // Purpur + + try { + executionContext.incrementCost(); +@@ -37,7 +37,7 @@ public class ExecuteCommand> implements Unbo + } catch (CommandSyntaxException var9) { + executionCommandSource.handleError(var9, this.modifiers.isForked(), executionContext.tracer()); + } finally { +- executionContext.profiler().pop(); ++ // executionContext.profiler().pop(); // Purpur + } + } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index f1037c50605f1bf0f5dad383e245d93a8bcf6f8b..e764ad7096852d8905422e8d0f140ed16c5b4498 100644 @@ -563,7 +613,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7673c3be73a5e6527f04333047839edbaa778e8c..124868caa3c809875571f2c4a2ad0b7051dfd457 100644 +index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7afb28def7f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -825,16 +825,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -812,7 +862,7 @@ index 1093ef4e97d3bc84802d4fc96a6f95a5a24624b9..adbce4f4334c8857f0ab2fec910ba388 this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 04b9f56134a24385468c16c61cf84327263dcb88..83b79a93acb8387d6d432f8e816acf50bfb89832 100644 +index 470b34ace7dc356ce59af11962f232466685eb0a..7372713dc195582f9cc994063541a45988b6b457 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -209,7 +209,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -1038,7 +1088,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 61aaf79bb631c37680d04168519a4e2e6af1ccc0..82f649715a566a5bbbbc175877bd344d96e41a2d 100644 +index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -835,7 +835,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1629,6 +1679,24 @@ index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fd this.updateActivity(); } +diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +index ab183a7d94a27d5235ff33ce7784c92d66d40b89..94431d5c789a9f558c16c0d1fc8f1f7463421ec6 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java ++++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +@@ -200,10 +200,10 @@ public class Breeze extends Monster { + + @Override + protected void customServerAiStep() { +- this.level().getProfiler().push("breezeBrain"); ++ // this.level().getProfiler().push("breezeBrain"); // Purpur + this.getBrain().tick((ServerLevel)this.level(), this); +- this.level().getProfiler().popPush("breezeActivityUpdate"); +- this.level().getProfiler().pop(); ++ // this.level().getProfiler().popPush("breezeActivityUpdate"); // Purpur ++ // this.level().getProfiler().pop(); // Purpur + super.customServerAiStep(); + } + diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java index a3a21f0c102cadcbe5882de716e90272fddd7f8c..468351b78af72c5ce998f9179f14d53951e95e46 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -1719,7 +1787,7 @@ index a46fc13b3072b65dc9284ece6cbf63a743b5c1a7..fe68013f8efa35e6dfcf658df3b33d9d this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index c790418ff4584af20db006a3e8770f261bab271e..370952a7be8df3ea00c0816235d84927df4ed79d 100644 +index 9442f58dff89ec843c321533965fbee2727d02f8..17abd085b3faf88e10a44a6c98af996892cc4e58 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -659,7 +659,7 @@ public class Explosion { diff --git a/patches/server/0267-Debug-Marker-API.patch b/patches/server/0267-Debug-Marker-API.patch index f796cb495..656e53a4d 100644 --- a/patches/server/0267-Debug-Marker-API.patch +++ b/patches/server/0267-Debug-Marker-API.patch @@ -99,10 +99,10 @@ index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa9602436 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0df4d72d82a4f047c6272af664ad61ee0117cf67..ece49c9be55d4f356bf1ea53ec06cd60e02b7eae 100644 +index f34b24ff4a5afade707206b74b0cf4a3f2f913de..1475964d04ebdcc08b4f67a516216162d8f8db2e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3367,5 +3367,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3345,5 +3345,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0271-Add-death-screen-API.patch b/patches/server/0271-Add-death-screen-API.patch index 72e111531..eb8ffa019 100644 --- a/patches/server/0271-Add-death-screen-API.patch +++ b/patches/server/0271-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ece49c9be55d4f356bf1ea53ec06cd60e02b7eae..6f52c5f94a8ac8c04c61c551d2345ad72272942e 100644 +index 1475964d04ebdcc08b4f67a516216162d8f8db2e..c0780208bbdcb7a4c67ce107312e57c3de681a5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3405,5 +3405,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3383,5 +3383,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0273-Add-item-packet-serialize-event.patch b/patches/server/0273-Add-item-packet-serialize-event.patch index 76908d388..aa323dbd6 100644 --- a/patches/server/0273-Add-item-packet-serialize-event.patch +++ b/patches/server/0273-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index e764ad7096852d8905422e8d0f140ed16c5b4498..39ecb12d4296852ee5865dcfa2b8b6c3 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d651b8c6254a28fc55f9a9c3f264f83a265bf316..f6752e45902ecb4219d27a2a2f2668a40d4f54f8 100644 +index 22020b5746988cf30385cc075c8e0b1309c99d69..6c5f5c19048ec52c088044f2bc34f54b937b1912 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3378,6 +3378,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3372,6 +3372,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } diff --git a/patches/server/0297-Explorer-Map-API.patch b/patches/server/0297-Explorer-Map-API.patch index b1f59284b..0e5c4da40 100644 --- a/patches/server/0297-Explorer-Map-API.patch +++ b/patches/server/0297-Explorer-Map-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index cd841f027edbe7e000d633034a2aa6a214c20b5b..ad90732cd424d4a1b569f708a6719a9934dee6dc 100644 +index 797415866a7f182d804f6b8e57ceb07a6ac2a20a..6cfd169c2c32b644d70907358c2d4a2087c00a68 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java -@@ -243,6 +243,7 @@ public class MapItem extends ComplexItem { +@@ -235,6 +235,7 @@ public class MapItem extends ComplexItem { MapItemSavedData worldmap = MapItem.getSavedData(map, world); if (worldmap != null) { From 454f265fbf959171b3b0ef0bfd5ad88a74492691 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 10 Dec 2023 16:59:05 -0800 Subject: [PATCH 017/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@abfb6b2 more work on adventure codecs PaperMC/Paper@b42a1da Use uuid param in setResourcePack PaperMC/Paper@bcbe5dc Fix `PlayerInteractEvent#getClickedBlock()` returning wrong block in adventure mode (#10019) PaperMC/Paper@166761f Update and clean up api dependencies (#10018) PaperMC/Paper@3434a6f Update key gen for 1.20.4 (#10015) PaperMC/Paper@dd16335 fix NPE when iterating over default drops (#10017) --- gradle.properties | 2 +- patches/api/0002-Build-System-Changes.patch | 4 ++-- patches/server/0006-Ridables.patch | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3a4b5af8b..ec639080a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 9051fc347c428500090e814c98e9d8503dc7a205 +paperCommit = dd16335e40dc13843e8ae7c681ca0a166d2e54a0 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0002-Build-System-Changes.patch b/patches/api/0002-Build-System-Changes.patch index 0b1f27bb1..654c62079 100644 --- a/patches/api/0002-Build-System-Changes.patch +++ b/patches/api/0002-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index e827ee211e3c65dc68ac5867fd8476639df63645..70907ac4e8d74080c525631aac57d0633d1c6089 100644 +index 9d817bf3f26ffd484945a00a6538970eca22ee20..dc322b5d5458163c5b1de2a74d3d2edb1a4dac76 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -118,6 +118,8 @@ tasks.jar { +@@ -121,6 +121,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 359e81728..867e9bcfa 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -66,7 +66,7 @@ index b0e698b2532ed6af84ca2dd0d8b1c795921c5823..d5940e560ea890f7f017ff9c37939a48 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9073db9ad3627633f46314ae936d584fa400a9ce..41f3415c6c1b7a3ee2c733445bfefdc51089ecb5 100644 +index 30ccbab1586a656e0ae41d7406525fb02d9e025b..bec249a47f1fbcabd6a121399d19d71e21edccae 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2714,6 +2714,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -5195,7 +5195,7 @@ index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..fed6671e518b2f1601bbf4154195a844 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index e0f80414e01852b6f48c173dc2343ec928147e2f..2d3d10c8cbf8e88f2c897a476041a094b91fa0e2 100644 +index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236db352ff65 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -594,6 +594,15 @@ public class CraftEventFactory { @@ -5214,7 +5214,7 @@ index e0f80414e01852b6f48c173dc2343ec928147e2f..2d3d10c8cbf8e88f2c897a476041a094 return event; } -@@ -1071,6 +1080,7 @@ public class CraftEventFactory { +@@ -1073,6 +1082,7 @@ public class CraftEventFactory { damageCause = DamageCause.ENTITY_EXPLOSION; } event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API @@ -5222,7 +5222,7 @@ index e0f80414e01852b6f48c173dc2343ec928147e2f..2d3d10c8cbf8e88f2c897a476041a094 } event.setCancelled(cancelled); -@@ -1185,6 +1195,7 @@ public class CraftEventFactory { +@@ -1187,6 +1197,7 @@ public class CraftEventFactory { } else { entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled } @@ -5230,7 +5230,7 @@ index e0f80414e01852b6f48c173dc2343ec928147e2f..2d3d10c8cbf8e88f2c897a476041a094 return event; } -@@ -1248,6 +1259,7 @@ public class CraftEventFactory { +@@ -1250,6 +1261,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API From 93177c47b848cd9c23aa3b0fd5c134c83221d30c Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 11 Dec 2023 16:59:16 -0800 Subject: [PATCH 018/148] [ci-skip] update paperweight --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index beb63f29a..01a62bd8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.10" + id("io.papermc.paperweight.patcher") version "1.5.11" } allprojects { From 16bfbe332472d4a4bf6d069fc53dacd6421d7be8 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 12 Dec 2023 16:40:50 -0800 Subject: [PATCH 019/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@28abbaa Catch setEnabled to ensure classloader is properly unloaded (#10020) PaperMC/Paper@82f9280 Fix deprecated bungee APIs still serializing to JSON in packets (#10028) PaperMC/Paper@7c2dc4b Use Codecs for adventure Component conversions & network serialization (#10014) PaperMC/Paper@0fadaed [ci skip] move decomp fixes to correct patch PaperMC/Paper@dc3ef2a Fix vanilla components not being translated (#9893) PaperMC/Paper@7e15d97 Remove no longer needed diff from adventure patch --- gradle.properties | 2 +- patches/server/0273-Add-item-packet-serialize-event.patch | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index ec639080a..97b3eed5d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = dd16335e40dc13843e8ae7c681ca0a166d2e54a0 +paperCommit = 7e15d977ecce23ee72b059e9be292d983a336c50 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0273-Add-item-packet-serialize-event.patch b/patches/server/0273-Add-item-packet-serialize-event.patch index aa323dbd6..f0fc9e76d 100644 --- a/patches/server/0273-Add-item-packet-serialize-event.patch +++ b/patches/server/0273-Add-item-packet-serialize-event.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add item packet serialize event diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index ff794499df6a2b65db2ca5956d2b98317592057f..fcfb7eb9b093896f11be4c13d450c522b3c47b15 100644 +index b13bc90b28b02f5e80d935bfcba727f92c5e4c4f..0cdc68722552a464fb828016eb93f865bc8bde54 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java @@ -95,6 +95,8 @@ public class FriendlyByteBuf extends ByteBuf { @@ -17,7 +17,7 @@ index ff794499df6a2b65db2ca5956d2b98317592057f..fcfb7eb9b093896f11be4c13d450c522 public FriendlyByteBuf(ByteBuf parent) { this.source = parent; } -@@ -632,6 +634,17 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -635,6 +637,17 @@ public class FriendlyByteBuf extends ByteBuf { this.writeBoolean(false); } else { this.writeBoolean(true); @@ -48,7 +48,7 @@ index e764ad7096852d8905422e8d0f140ed16c5b4498..39ecb12d4296852ee5865dcfa2b8b6c3 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 22020b5746988cf30385cc075c8e0b1309c99d69..6c5f5c19048ec52c088044f2bc34f54b937b1912 100644 +index 689ef8ad9548ac189d7b659d2557815640c8ef14..5ba429dd65a9795b73954b5d1e7d1f58adb04cb7 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3372,6 +3372,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl From 24bfb3b30358e34a5a58214021598d3572d0510b Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 14 Dec 2023 19:08:45 -0800 Subject: [PATCH 020/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f1820dc Fix incorrect border collision detection --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 97b3eed5d..4fd4e272f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 7e15d977ecce23ee72b059e9be292d983a336c50 +paperCommit = f1820dc80a02009980e6466ea5847933861b911a org.gradle.caching = true org.gradle.parallel = true From 92a6325cb05bb9c68c9a9ba436f96d999123700a Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 14 Dec 2023 22:26:15 -0800 Subject: [PATCH 021/148] fix sound issues with axe actionables --- patches/server/0186-Tool-actionable-options.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/server/0186-Tool-actionable-options.patch b/patches/server/0186-Tool-actionable-options.patch index 1f30e07ae..1b4aabca8 100644 --- a/patches/server/0186-Tool-actionable-options.patch +++ b/patches/server/0186-Tool-actionable-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tool actionable options diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java -index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..d491ff163e9da7ddacf1a68e0557cd61169f35f3 100644 +index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..2918b1aca8fae6a319881a631dc727b6d375a33c 100644 --- a/src/main/java/net/minecraft/world/item/AxeItem.java +++ b/src/main/java/net/minecraft/world/item/AxeItem.java @@ -33,13 +33,15 @@ public class AxeItem extends DiggerItem { @@ -58,14 +58,14 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..d491ff163e9da7ddacf1a68e0557cd61 + Optional optional = Optional.ofNullable(world.purpurConfig.axeStrippables.get(state.getBlock())); // Purpur if (optional.isPresent()) { - world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!STRIPPABLES.containsKey(state.getBlock())) world.playSound(null, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound ++ world.playSound(STRIPPABLES.containsKey(state.getBlock()) ? player : null, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound return optional; } else { - Optional optional2 = WeatheringCopper.getPrevious(state); + Optional optional2 = Optional.ofNullable(world.purpurConfig.axeWeatherables.get(state.getBlock())); // Purpur if (optional2.isPresent()) { - world.playSound(player, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!HoneycombItem.WAXABLES.get().containsKey(state.getBlock())) world.playSound(null, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound ++ world.playSound(WeatheringCopper.getPrevious(state).isPresent() ? player : null, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound world.levelEvent(player, 3005, pos, 0); return optional2; } else { @@ -75,7 +75,7 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..d491ff163e9da7ddacf1a68e0557cd61 + Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); // Purpur if (optional3.isPresent()) { - world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); -+ if (!HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(state.getBlock())) world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound ++ world.playSound(HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(state.getBlock()) ? player : null, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound world.levelEvent(player, 3004, pos, 0); return optional3; } else { From 9e1216de506439171c08773730faea0f0a617a83 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 14 Dec 2023 22:39:35 -0800 Subject: [PATCH 022/148] add missing waxable and weatherable options for axe --- patches/server/0002-Purpur-config-files.patch | 6 +- .../server/0186-Tool-actionable-options.patch | 82 +++++- .../server/0191-Big-dripleaf-tilt-delay.patch | 4 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...-for-sponges-to-work-on-lava-and-mud.patch | 4 +- ...0199-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 4 +- .../0202-Conduit-behavior-configuration.patch | 4 +- .../server/0203-Cauldron-fill-chances.patch | 4 +- .../0205-Shulker-change-color-with-dye.patch | 6 +- ...a-blocks-to-grow-into-trees-naturall.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...-Halloween-options-and-optimizations.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 4 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- .../server/0221-Signs-allow-color-codes.patch | 4 +- .../0223-Mobs-always-drop-experience.patch | 276 +++++++++--------- ...oe-to-replant-crops-and-nether-warts.patch | 4 +- ...aring-jeb-produces-random-color-wool.patch | 6 +- ...Turtle-eggs-random-tick-crack-chance.patch | 4 +- .../0229-Mob-head-visibility-percent.patch | 18 +- ...-Stop-bees-from-dying-after-stinging.patch | 6 +- ...Configurable-farmland-trample-height.patch | 6 +- .../0237-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0241-Lobotomize-stuck-villagers.patch | 6 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...awner-not-spawning-water-animals-cor.patch | 4 +- .../0245-Anvil-repair-damage-options.patch | 4 +- ...e-turtle-egg-trampling-with-feather-.patch | 4 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0250-Stonecutter-damage.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- ...0252-Add-config-for-snow-on-blue-ice.patch | 4 +- .../0253-Skeletons-eat-wither-roses.patch | 6 +- ...254-Enchantment-Table-Persists-Lapis.patch | 4 +- ...-for-sculk-shrieker-can_summon-state.patch | 4 +- .../0258-Config-to-not-let-coral-die.patch | 4 +- ...269-Add-skeleton-bow-accuracy-option.patch | 6 +- .../server/0270-Allay-respect-item-NBT.patch | 4 +- ...low-creeper-to-encircle-target-when-.patch | 6 +- .../server/0286-End-Crystal-Cramming.patch | 6 +- ...beacon-effects-when-covered-by-tinte.patch | 4 +- ...able-sugarcane-cactus-and-netherwart.patch | 4 +- .../server/0296-Shears-can-defuse-TNT.patch | 4 +- ...-Option-Ocelot-Spawn-Under-Sea-Level.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- .../0301-place-end-crystal-on-any-block.patch | 6 +- 51 files changed, 347 insertions(+), 273 deletions(-) diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index a8b1c2158..02f443e02 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -179,7 +179,7 @@ index 4b457cbfc56e55e0ae0fee5b69e2e75349702aab..fa38d6dd3a7439de3b2503a90637eabb .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366cff1eca9 +index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f26db5947 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,175 @@ @@ -260,8 +260,8 @@ index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366 + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 33); -+ set("config-version", 33); ++ version = getInt("config-version", 34); ++ set("config-version", 34); + + readConfig(PurpurConfig.class, null); + diff --git a/patches/server/0186-Tool-actionable-options.patch b/patches/server/0186-Tool-actionable-options.patch index 1b4aabca8..2d494b972 100644 --- a/patches/server/0186-Tool-actionable-options.patch +++ b/patches/server/0186-Tool-actionable-options.patch @@ -153,10 +153,10 @@ index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c22b1c244e 100644 +index 97295817c15bfaab80241ae89134bde1bb129462..c67400bf2e22557095b1de43d410b8efd7705f90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -503,6 +503,206 @@ public class PurpurWorldConfig { +@@ -503,6 +503,280 @@ public class PurpurWorldConfig { }); } @@ -205,6 +205,45 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + }); + set("gameplay-mechanics.shovel-turns-block-to-grass-path", null); + } ++ if (PurpurConfig.version < 34) { ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_chiseled_copper", Map.of("into", "minecraft:oxidized_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_door", Map.of("into", "minecraft:oxidized_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_trapdoor", Map.of("into", "minecraft:oxidized_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_grate", Map.of("into", "minecraft:oxidized_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_exposed_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_weathered_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.waxables.minecraft:waxed_oxidized_copper_bulb", Map.of("into", "minecraft:oxidized_copper_bulb", "drops", new HashMap())); ++ ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:exposed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:weathered_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())); ++ PurpurConfig.config.set("world-settings.default.tools.axe.weatherables.minecraft:oxidized_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())); ++ } + getMap("tools.axe.strippables", Map.ofEntries( + Map.entry("minecraft:oak_wood", Map.of("into", "minecraft:stripped_oak_wood", "drops", new HashMap())), + Map.entry("minecraft:oak_log", Map.of("into", "minecraft:stripped_oak_log", "drops", new HashMap())), @@ -260,7 +299,27 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + Map.entry("minecraft:waxed_cut_copper_stairs", Map.of("into", "minecraft:cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:waxed_exposed_cut_copper_stairs", Map.of("into", "minecraft:exposed_cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:waxed_weathered_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())), -+ Map.entry("minecraft:waxed_oxidized_cut_copper_stairs", Map.of("into", "minecraft:oxidized_cut_copper_stairs", "drops", new HashMap()))) ++ Map.entry("minecraft:waxed_oxidized_cut_copper_stairs", Map.of("into", "minecraft:oxidized_cut_copper_stairs", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_chiseled_copper", Map.of("into", "minecraft:oxidized_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_door", Map.of("into", "minecraft:oxidized_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_trapdoor", Map.of("into", "minecraft:oxidized_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_grate", Map.of("into", "minecraft:oxidized_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_exposed_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_weathered_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:waxed_oxidized_copper_bulb", Map.of("into", "minecraft:oxidized_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { + Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.waxables`: " + blockId); return; } @@ -285,12 +344,27 @@ index 97295817c15bfaab80241ae89134bde1bb129462..5f69a74b53880bf7c58fc64402ed99c2 + Map.entry("minecraft:exposed_cut_copper", Map.of("into", "minecraft:cut_copper", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper", Map.of("into", "minecraft:exposed_cut_copper", "drops", new HashMap())), + Map.entry("minecraft:oxidized_cut_copper", Map.of("into", "minecraft:weathered_cut_copper", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_chiseled_copper", Map.of("into", "minecraft:chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_chiseled_copper", Map.of("into", "minecraft:exposed_chiseled_copper", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_chiseled_copper", Map.of("into", "minecraft:weathered_chiseled_copper", "drops", new HashMap())), + Map.entry("minecraft:exposed_cut_copper_slab", Map.of("into", "minecraft:cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper_slab", Map.of("into", "minecraft:exposed_cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:oxidized_cut_copper_slab", Map.of("into", "minecraft:weathered_cut_copper_slab", "drops", new HashMap())), + Map.entry("minecraft:exposed_cut_copper_stairs", Map.of("into", "minecraft:cut_copper_stairs", "drops", new HashMap())), + Map.entry("minecraft:weathered_cut_copper_stairs", Map.of("into", "minecraft:exposed_cut_copper_stairs", "drops", new HashMap())), -+ Map.entry("minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap()))) ++ Map.entry("minecraft:oxidized_cut_copper_stairs", Map.of("into", "minecraft:weathered_cut_copper_stairs", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_door", Map.of("into", "minecraft:copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_door", Map.of("into", "minecraft:exposed_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_door", Map.of("into", "minecraft:weathered_copper_door", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_trapdoor", Map.of("into", "minecraft:copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_trapdoor", Map.of("into", "minecraft:exposed_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_trapdoor", Map.of("into", "minecraft:weathered_copper_trapdoor", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_grate", Map.of("into", "minecraft:copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_grate", Map.of("into", "minecraft:exposed_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_grate", Map.of("into", "minecraft:weathered_copper_grate", "drops", new HashMap())), ++ Map.entry("minecraft:exposed_copper_bulb", Map.of("into", "minecraft:copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:weathered_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())), ++ Map.entry("minecraft:oxidized_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { + Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.weatherables`: " + blockId); return; } diff --git a/patches/server/0191-Big-dripleaf-tilt-delay.patch b/patches/server/0191-Big-dripleaf-tilt-delay.patch index 94f51606e..8bd13a9db 100644 --- a/patches/server/0191-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0191-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8e4a6a1188b2ce2825dc5750505212c72efb5c7b..c7f78ccb228d261984ac360f2ca6ae94 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f540ecafbcc509ad5f6404ffc0d2047f8cd3d79f..e9069b48d19779ba9fda5ea736117b6f092b3efd 100644 +index a6459228449b76956c61be7dd88b04e1edd04b11..8bbc9eea77aa96ebd20c5901c03b35e66e79ce63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -744,6 +744,22 @@ public class PurpurWorldConfig { +@@ -818,6 +818,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index efb92c6c9..ff9706783 100644 --- a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 6519fb56a7c6fd2e9ce3f4a0504053ed05eb0e14..3583d0c01410987584a53bb6e717d563 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3..602f8111576de65d6059704cf5d81cba38172236 100644 +index b2c7777ce1e8492d875c2575685d7668093c8eda..f78716c6d8635c21dacb216760a5ba0ebc33b73f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1434,6 +1434,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index e45b0f23cad0ad85915d1cbf1d3651a2d5b895a3..602f8111576de65d6059704cf5d81cba private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1382,6 +1383,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1457,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch index cb0b0629f..9d5d75ac1 100644 --- a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 135ce8822ed7e3d6182755deca37a2c0531960c6..6a85de8af9b260e92b4ccffa2ae3503c return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c5fc242df9b0bf4d79a091105b7b113d801bf05..3c6a1dfe949d8c7347ad4990a5e148b74445a8d2 100644 +index a56818870503b2694d9e4dd232b91e1c6a54333f..1e2860c910db8b2b6a73a67d040528df2c44f5f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2765,6 +2765,8 @@ public class PurpurWorldConfig { +@@ -2839,6 +2839,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 6c5fc242df9b0bf4d79a091105b7b113d801bf05..3c6a1dfe949d8c7347ad4990a5e148b7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { +@@ -2854,6 +2856,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch index 723276f7f..b2bd66c20 100644 --- a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index 6469f5e25673b4e20cf0b520b28b14b2eda9130c..9e4146ecd36ff2698ee951660ed88290 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c6a1dfe949d8c7347ad4990a5e148b74445a8d2..b96a936a584c21832a7890716743f1c918f2264d 100644 +index 1e2860c910db8b2b6a73a67d040528df2c44f5f5..5cbbc7e818ed2e82a2ab17d7f3be35f2fe8c3c21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -940,9 +940,13 @@ public class PurpurWorldConfig { +@@ -1014,9 +1014,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch index 7cfeab39c..468e6822d 100644 --- a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index d2640173f3eca484123eb7bc9f6c4f796c9178fb..73c967330cc793acc029c17f037d985e // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b96a936a584c21832a7890716743f1c918f2264d..70b2bce9096d2e5486ee7932bada442a02b460a4 100644 +index 5cbbc7e818ed2e82a2ab17d7f3be35f2fe8c3c21..b7e145289e241c0d2e02d90eafe3f2039be794c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2610,6 +2610,7 @@ public class PurpurWorldConfig { +@@ -2684,6 +2684,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index b96a936a584c21832a7890716743f1c918f2264d..70b2bce9096d2e5486ee7932bada442a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2631,6 +2632,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2706,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch index a37028a2c..fae821dd4 100644 --- a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index a9629a102c4fa4e5720e63fcf4590e9231426c62..89c0006c06098e0d09a259ea8415d55b return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70b2bce9096d2e5486ee7932bada442a02b460a4..80f13907f068fc6c52595ea3cf93c1a4d5d03b69 100644 +index b7e145289e241c0d2e02d90eafe3f2039be794c5..3dd2e8c271bbd24f2b4712934fc19a982ed4d1d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -771,6 +771,11 @@ public class PurpurWorldConfig { +@@ -845,6 +845,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0202-Conduit-behavior-configuration.patch b/patches/server/0202-Conduit-behavior-configuration.patch index f7f2ad4a0..e80543009 100644 --- a/patches/server/0202-Conduit-behavior-configuration.patch +++ b/patches/server/0202-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 073bd3a0c0d06269738b406b8de08db99e914f8d..029b938936289db6e2b202e1e307cf8d0fa56ec1 100644 +index 3deab8fff2c67fdc47db8c739a29173d65b13bbf..3252984ac8bf8849f99f40182e8cb24a01ffe7f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2831,4 +2831,27 @@ public class PurpurWorldConfig { +@@ -2905,4 +2905,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0203-Cauldron-fill-chances.patch b/patches/server/0203-Cauldron-fill-chances.patch index 40d319d81..0263f152c 100644 --- a/patches/server/0203-Cauldron-fill-chances.patch +++ b/patches/server/0203-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index bd22d3fdecbc992b11073a74d854b7d1b43c3f6a..0a3b97f18abcc9b385c9efd5a30f3e2c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 029b938936289db6e2b202e1e307cf8d0fa56ec1..b27849dbddadf4388e5909b8fe74bcdab20c552f 100644 +index 3252984ac8bf8849f99f40182e8cb24a01ffe7f1..2f5662582492573aef4efee54def5921be7351ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2854,4 +2854,15 @@ public class PurpurWorldConfig { +@@ -2928,4 +2928,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0205-Shulker-change-color-with-dye.patch b/patches/server/0205-Shulker-change-color-with-dye.patch index ab7480489..51d580078 100644 --- a/patches/server/0205-Shulker-change-color-with-dye.patch +++ b/patches/server/0205-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index bf3c02e78df66ca57773d667350197220df5d2d1..47abc81aa04774abeb97c912cd118bba protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034..a0ba55821e2d2a0c78c06e5756d8a591af85a536 100644 +index 9bc0c44fa2f02596b716f4c180178b419e6c1194..f9b529da8e9367c3a7c9d89eb16760bc691ea59d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2170,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2244,6 +2244,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034..a0ba55821e2d2a0c78c06e5756d8a591 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2186,6 +2187,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2261,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index ebc7deca6..04950a31a 100644 --- a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,10 +45,10 @@ index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8fe41200b26c0a17b6b65178aa858a74494471a6..0be19b3fc5fa6af23a3930a63e62199dffd538ea 100644 +index f75b12f80e02c2b85c55c41096b4ee4759ce63b0..767659256e391854c0cd3035f138d86bbcaf6949 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -731,6 +731,11 @@ public class PurpurWorldConfig { +@@ -805,6 +805,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index 8fe41200b26c0a17b6b65178aa858a74494471a6..0be19b3fc5fa6af23a3930a63e62199d public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -868,6 +873,11 @@ public class PurpurWorldConfig { +@@ -942,6 +947,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch index f07fdbbe2..8da2f38ea 100644 --- a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c06d51200346d524a81e2d7a735db668da16c580..30761aaa2afe239f9233d5afee0252f53cf07086 100644 +index 857df6dd4d1d598857d977107dcabbb25307ceab..727a70ef18192e27736ecdd6775711a17f8ce79b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1268,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index c06d51200346d524a81e2d7a735db668da16c580..30761aaa2afe239f9233d5afee0252f5 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1282,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1357,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch index b8d9187e6..51385c2b5 100644 --- a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch @@ -57,10 +57,10 @@ index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f717 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30761aaa2afe239f9233d5afee0252f53cf07086..3c4b6fed063a7ffcdf8f982e42c4599a129fb406 100644 +index 727a70ef18192e27736ecdd6775711a17f8ce79b..e967ce42a54d97f28e50509167c7c7ac693a285b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1217,7 +1217,14 @@ public class PurpurWorldConfig { +@@ -1291,7 +1291,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index 30761aaa2afe239f9233d5afee0252f53cf07086..3c4b6fed063a7ffcdf8f982e42c4599a cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1230,6 +1237,8 @@ public class PurpurWorldConfig { +@@ -1304,6 +1311,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch index d8d351f8d..4f0823d95 100644 --- a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 29916aa09d867ef3fa4dc8248b174bf8f97853b7..f78c41833169264fabc76d13bb4b9a89 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c4b6fed063a7ffcdf8f982e42c4599a129fb406..db9cb3292814b188abac8b1b9fdce1e5d7c4620a 100644 +index e967ce42a54d97f28e50509167c7c7ac693a285b..83e4255059ca68f1fef3a8915662db28a98109b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -750,6 +750,7 @@ public class PurpurWorldConfig { +@@ -824,6 +824,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 3c4b6fed063a7ffcdf8f982e42c4599a129fb406..db9cb3292814b188abac8b1b9fdce1e5 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -760,6 +761,7 @@ public class PurpurWorldConfig { +@@ -834,6 +835,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0214-Halloween-options-and-optimizations.patch b/patches/server/0214-Halloween-options-and-optimizations.patch index b8c741a19..45abb5be1 100644 --- a/patches/server/0214-Halloween-options-and-optimizations.patch +++ b/patches/server/0214-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 9b1ae2fa1681f1212b6a09d5b10b16634ce65470..728f4f2d7c37e253b0dab752f627a7b6 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db9cb3292814b188abac8b1b9fdce1e5d7c4620a..9c2fc6c8d044c1f064010d856fac1b55626d96cb 100644 +index 83e4255059ca68f1fef3a8915662db28a98109b3..285ea8571af68d86579e786912f1145dc0b83955 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1610,6 +1610,13 @@ public class PurpurWorldConfig { +@@ -1684,6 +1684,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0217-Campfire-option-for-lit-when-placed.patch b/patches/server/0217-Campfire-option-for-lit-when-placed.patch index 835427218..c5787e4d5 100644 --- a/patches/server/0217-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0217-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7302d07c6ff69608e75ac52fdb19f2ec1d105129..35e2f279d358201384ff74fd767df18f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c2fc6c8d044c1f064010d856fac1b55626d96cb..b5cf141a85b2ccb333f84f462ae484a8c7291efd 100644 +index 285ea8571af68d86579e786912f1145dc0b83955..a7beb70988183ddcaf6bb2ef846eb9c640af46b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -793,6 +793,11 @@ public class PurpurWorldConfig { +@@ -867,6 +867,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch index fc0276bb8..3b902880d 100644 --- a/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b1997 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2609ee031f3506c1c3c8a0725d5f19bcf680805..061e619a0c9a60a57faf1fe53a2533d73912e927 100644 +index aa8f7692a2638b176e9db935bf1331ee09fc9993..ca922a1805810dab8a225c30f9bc93c7e5347ad2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2831,6 +2831,7 @@ public class PurpurWorldConfig { +@@ -2905,6 +2905,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d2609ee031f3506c1c3c8a0725d5f19bcf680805..061e619a0c9a60a57faf1fe53a2533d7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2848,6 +2849,7 @@ public class PurpurWorldConfig { +@@ -2922,6 +2923,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0221-Signs-allow-color-codes.patch b/patches/server/0221-Signs-allow-color-codes.patch index b6bc6dcf4..e0291c4ef 100644 --- a/patches/server/0221-Signs-allow-color-codes.patch +++ b/patches/server/0221-Signs-allow-color-codes.patch @@ -84,10 +84,10 @@ index bc01970c5ef9cde4a75394d6977837e924a38463..642e81d7ce763e3f983c83c967f72041 public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2129e850a60b6606a1444f16e40e5baea449c93..db741a6bdcba63c6f716c6093d3ddbc8e2533587 100644 +index 72c6b244e358aceffd934e1224952b459940e608..d5ce0eda09bfa4b6e708b5468697102cc853cfc7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -968,6 +968,11 @@ public class PurpurWorldConfig { +@@ -1042,6 +1042,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0223-Mobs-always-drop-experience.patch b/patches/server/0223-Mobs-always-drop-experience.patch index e628a8a3d..5be20c9d8 100644 --- a/patches/server/0223-Mobs-always-drop-experience.patch +++ b/patches/server/0223-Mobs-always-drop-experience.patch @@ -373,7 +373,7 @@ index b16d075581a352714f86f1b87805f24c9e336aa3..87b6f6b10ba6e3d9c6a42298a2019a52 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 5c082d99b54f33a3f640172f86f96990f654fc38..7811bb733ea5e5ca16d13b70c0a7a5893ab2e7ba 100644 +index cc1ccef921e70c33e5d6acbd73d5eecc4ea99064..8f891e9fd9fc0bf4a9c022a3415b371cea9b92fa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -118,6 +118,11 @@ public class Turtle extends Animal { @@ -1157,10 +1157,10 @@ index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f8176 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce17971030e3a2 100644 +index d5ce0eda09bfa4b6e708b5468697102cc853cfc7..ecf28b77b6d899827d6f35681bfdc1bb5b993dc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1035,12 +1035,14 @@ public class PurpurWorldConfig { +@@ -1109,12 +1109,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean batRidable = false; -@@ -1056,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1130,6 +1132,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1075,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1149,6 +1152,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean beeRidable = false; -@@ -1086,6 +1090,7 @@ public class PurpurWorldConfig { +@@ -1160,6 +1164,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1101,6 +1106,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1180,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean blazeRidable = false; -@@ -1109,6 +1115,7 @@ public class PurpurWorldConfig { +@@ -1183,6 +1189,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1121,6 +1128,7 @@ public class PurpurWorldConfig { +@@ -1195,6 +1202,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean camelRidableInWater = false; -@@ -1152,6 +1160,7 @@ public class PurpurWorldConfig { +@@ -1226,6 +1234,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1172,6 +1181,7 @@ public class PurpurWorldConfig { +@@ -1246,6 +1255,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean caveSpiderRidable = false; -@@ -1179,6 +1189,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1263,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1190,6 +1201,7 @@ public class PurpurWorldConfig { +@@ -1264,6 +1275,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean chickenRidable = false; -@@ -1199,6 +1211,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1285,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1212,12 +1225,14 @@ public class PurpurWorldConfig { +@@ -1286,12 +1299,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1228,6 +1243,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1317,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean cowRidable = false; -@@ -1239,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1313,6 +1329,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1259,6 +1276,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1350,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean creeperRidable = false; -@@ -1271,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1363,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1287,6 +1306,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1380,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean dolphinRidable = false; -@@ -1298,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1372,6 +1392,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1313,6 +1334,7 @@ public class PurpurWorldConfig { +@@ -1387,6 +1408,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean donkeyRidableInWater = false; -@@ -1324,6 +1346,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1420,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1341,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1438,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean drownedRidable = false; -@@ -1353,6 +1377,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1451,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1369,12 +1394,14 @@ public class PurpurWorldConfig { +@@ -1443,12 +1468,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1385,6 +1412,7 @@ public class PurpurWorldConfig { +@@ -1459,6 +1486,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean enderDragonRidable = false; -@@ -1430,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1532,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1453,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1556,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean endermiteRidable = false; -@@ -1460,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1534,6 +1564,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1471,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1545,6 +1576,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean evokerRidable = false; -@@ -1479,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1553,6 +1585,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1491,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1598,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean foxRidable = false; -@@ -1501,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1609,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1515,6 +1550,7 @@ public class PurpurWorldConfig { +@@ -1589,6 +1624,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean frogRidable = false; -@@ -1536,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1610,6 +1646,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1548,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1622,6 +1659,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean giantRidable = false; -@@ -1561,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1673,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1582,6 +1621,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1695,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean glowSquidRidable = false; -@@ -1589,12 +1629,14 @@ public class PurpurWorldConfig { +@@ -1663,12 +1703,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean goatRidable = false; -@@ -1603,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1719,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1610,12 +1653,14 @@ public class PurpurWorldConfig { +@@ -1684,12 +1727,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1626,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1745,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean forceHalloweenSeason = false; -@@ -1641,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1653,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1727,6 +1774,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean horseRidableInWater = false; -@@ -1664,6 +1712,7 @@ public class PurpurWorldConfig { +@@ -1738,6 +1786,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1681,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1755,6 +1804,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean huskRidable = false; -@@ -1692,6 +1742,7 @@ public class PurpurWorldConfig { +@@ -1766,6 +1816,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1707,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1781,6 +1832,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean illusionerRidable = false; -@@ -1716,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1790,6 +1842,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1733,6 +1786,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1860,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ironGolemRidable = false; -@@ -1743,6 +1797,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1871,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1757,6 +1812,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1886,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean llamaRidable = false; -@@ -1771,6 +1827,7 @@ public class PurpurWorldConfig { +@@ -1845,6 +1901,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1791,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1922,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean magmaCubeRidable = false; -@@ -1801,6 +1859,7 @@ public class PurpurWorldConfig { +@@ -1875,6 +1933,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1815,6 +1874,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +1948,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean mooshroomRidable = false; -@@ -1823,6 +1883,7 @@ public class PurpurWorldConfig { +@@ -1897,6 +1957,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1835,6 +1896,7 @@ public class PurpurWorldConfig { +@@ -1909,6 +1970,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean muleRidableInWater = false; -@@ -1846,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +1982,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1863,6 +1926,7 @@ public class PurpurWorldConfig { +@@ -1937,6 +2000,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ocelotRidable = false; -@@ -1871,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +2009,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1883,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1957,6 +2022,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pandaRidable = false; -@@ -1891,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1965,6 +2031,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1903,6 +1970,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2044,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean parrotRidable = false; -@@ -1912,6 +1980,7 @@ public class PurpurWorldConfig { +@@ -1986,6 +2054,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1925,6 +1994,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2068,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean phantomRidable = false; -@@ -1952,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -2026,6 +2096,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1987,6 +2058,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2132,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pigRidable = false; -@@ -1996,6 +2068,7 @@ public class PurpurWorldConfig { +@@ -2070,6 +2142,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2009,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2156,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean piglinRidable = false; -@@ -2018,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2166,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2031,6 +2106,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2180,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean piglinBruteRidable = false; -@@ -2038,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2188,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2049,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2200,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean pillagerRidable = false; -@@ -2057,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2209,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2069,6 +2148,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2222,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean polarBearRidable = false; -@@ -2079,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2153,6 +2233,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2094,12 +2175,14 @@ public class PurpurWorldConfig { +@@ -2168,12 +2249,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2110,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2184,6 +2267,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean rabbitRidable = false; -@@ -2121,6 +2205,7 @@ public class PurpurWorldConfig { +@@ -2195,6 +2279,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2136,6 +2221,7 @@ public class PurpurWorldConfig { +@@ -2210,6 +2295,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean ravagerRidable = false; -@@ -2145,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2219,6 +2305,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2174,12 +2261,14 @@ public class PurpurWorldConfig { +@@ -2248,12 +2335,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2190,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2264,6 +2353,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean sheepRidable = false; -@@ -2199,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2273,6 +2363,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2212,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2377,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean shulkerRidable = false; -@@ -2225,6 +2317,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2391,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2242,6 +2335,7 @@ public class PurpurWorldConfig { +@@ -2316,6 +2409,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean silverfishRidable = false; -@@ -2250,6 +2344,7 @@ public class PurpurWorldConfig { +@@ -2324,6 +2418,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2262,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2336,6 +2431,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean skeletonRidable = false; -@@ -2269,6 +2365,7 @@ public class PurpurWorldConfig { +@@ -2343,6 +2439,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2280,6 +2377,7 @@ public class PurpurWorldConfig { +@@ -2354,6 +2451,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean skeletonHorseRidable = false; -@@ -2292,6 +2390,7 @@ public class PurpurWorldConfig { +@@ -2366,6 +2464,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2309,6 +2408,7 @@ public class PurpurWorldConfig { +@@ -2383,6 +2482,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean slimeRidable = false; -@@ -2319,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2393,6 +2493,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2333,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2407,6 +2508,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean snowGolemRidable = false; -@@ -2348,6 +2450,7 @@ public class PurpurWorldConfig { +@@ -2422,6 +2524,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2367,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2441,6 +2544,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean snifferRidable = false; -@@ -2389,6 +2493,7 @@ public class PurpurWorldConfig { +@@ -2463,6 +2567,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2402,6 +2507,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2581,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean spiderRidable = false; -@@ -2409,6 +2515,7 @@ public class PurpurWorldConfig { +@@ -2483,6 +2589,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2420,6 +2527,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2601,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean strayRidable = false; -@@ -2427,6 +2535,7 @@ public class PurpurWorldConfig { +@@ -2501,6 +2609,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2438,6 +2547,7 @@ public class PurpurWorldConfig { +@@ -2512,6 +2621,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean striderRidable = false; -@@ -2447,6 +2557,7 @@ public class PurpurWorldConfig { +@@ -2521,6 +2631,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2460,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2645,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean tadpoleRidable = false; -@@ -2482,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2556,6 +2668,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2501,12 +2614,14 @@ public class PurpurWorldConfig { +@@ -2575,12 +2688,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2517,6 +2632,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2706,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean turtleRidable = false; -@@ -2525,6 +2641,7 @@ public class PurpurWorldConfig { +@@ -2599,6 +2715,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2537,6 +2654,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2728,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean vexRidable = false; -@@ -2545,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2737,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2557,6 +2676,7 @@ public class PurpurWorldConfig { +@@ -2631,6 +2750,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean villagerRidable = false; -@@ -2572,6 +2692,7 @@ public class PurpurWorldConfig { +@@ -2646,6 +2766,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2591,6 +2712,7 @@ public class PurpurWorldConfig { +@@ -2665,6 +2786,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean vindicatorRidable = false; -@@ -2599,6 +2721,7 @@ public class PurpurWorldConfig { +@@ -2673,6 +2795,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2611,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2808,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wanderingTraderRidable = false; -@@ -2621,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2695,6 +2819,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2635,6 +2760,7 @@ public class PurpurWorldConfig { +@@ -2709,6 +2834,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wardenRidable = false; -@@ -2651,6 +2777,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2851,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2662,6 +2789,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2863,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean witherRidable = false; -@@ -2676,6 +2804,7 @@ public class PurpurWorldConfig { +@@ -2750,6 +2878,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2698,6 +2827,7 @@ public class PurpurWorldConfig { +@@ -2772,6 +2901,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean witherSkeletonRidable = false; -@@ -2705,6 +2835,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2909,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2716,6 +2847,7 @@ public class PurpurWorldConfig { +@@ -2790,6 +2921,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean wolfRidable = false; -@@ -2727,6 +2859,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2933,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2746,6 +2879,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2953,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zoglinRidable = false; -@@ -2753,6 +2887,7 @@ public class PurpurWorldConfig { +@@ -2827,6 +2961,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2764,6 +2899,7 @@ public class PurpurWorldConfig { +@@ -2838,6 +2973,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieRidable = false; -@@ -2777,6 +2913,7 @@ public class PurpurWorldConfig { +@@ -2851,6 +2987,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2794,6 +2931,7 @@ public class PurpurWorldConfig { +@@ -2868,6 +3005,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieHorseRidable = false; -@@ -2807,6 +2945,7 @@ public class PurpurWorldConfig { +@@ -2881,6 +3019,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2825,6 +2964,7 @@ public class PurpurWorldConfig { +@@ -2899,6 +3038,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombieVillagerRidable = false; -@@ -2839,6 +2979,7 @@ public class PurpurWorldConfig { +@@ -2913,6 +3053,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2857,6 +2998,7 @@ public class PurpurWorldConfig { +@@ -2931,6 +3072,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 } public boolean zombifiedPiglinRidable = false; -@@ -2869,6 +3011,7 @@ public class PurpurWorldConfig { +@@ -2943,6 +3085,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index db741a6bdcba63c6f716c6093d3ddbc8e2533587..788cbfb4fddbede2788604bdd8ce1797 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2885,6 +3028,7 @@ public class PurpurWorldConfig { +@@ -2959,6 +3102,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 394f50e73..fb5d948e2 100644 --- a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,7 +74,7 @@ index 0fc333f240d6918e841a9221be42973839408802..7328764abb0790b389d396179db32f4a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 788cbfb4fddbede2788604bdd8ce17971030e3a2..1b556e774e5a2ddf1741ec6826638ed66f67523f 100644 +index ecf28b77b6d899827d6f35681bfdc1bb5b993dc1..476545737acdb0da8e5f5def12164c7f83cbaa80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -539,6 +539,8 @@ public class PurpurWorldConfig { @@ -86,7 +86,7 @@ index 788cbfb4fddbede2788604bdd8ce17971030e3a2..1b556e774e5a2ddf1741ec6826638ed6 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -732,6 +734,8 @@ public class PurpurWorldConfig { +@@ -806,6 +808,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch index 1ce31283f..065d5ab55 100644 --- a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index f2d0c67709e38209a8a02e98f4392b9e0a53c211..fb477c3c594bb81e92ae0c606635c309 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b556e774e5a2ddf1741ec6826638ed66f67523f..f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9 100644 +index 476545737acdb0da8e5f5def12164c7f83cbaa80..375d1deef92f935d8f32166e3a17a84370ad1dcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2294,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2368,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 1b556e774e5a2ddf1741ec6826638ed66f67523f..f080154f5a2782ae7bd7b68cbb1f3caf private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2308,6 +2309,7 @@ public class PurpurWorldConfig { +@@ -2382,6 +2383,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch index e16f3b802..7f835ee82 100644 --- a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 44bb9930313cae9d150cc08cbdcced10a35bd07d..9756c84e073d9e99ade0ee94c586b8e0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f080154f5a2782ae7bd7b68cbb1f3caf4e68f6b9..f607d41ffa51c00cb9edc70545e3d55fdf56f8db 100644 +index 375d1deef92f935d8f32166e3a17a84370ad1dcd..d31aa9b30124832fbc010299b8a24c67624ac6f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1002,11 +1002,13 @@ public class PurpurWorldConfig { +@@ -1076,11 +1076,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0229-Mob-head-visibility-percent.patch b/patches/server/0229-Mob-head-visibility-percent.patch index 1cc1608e6..f352e546b 100644 --- a/patches/server/0229-Mob-head-visibility-percent.patch +++ b/patches/server/0229-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index cbf14a9f6c4059ac2246d840ff901113fb03f8cc..ccf94ec8c0fcff5d75365274f662ff24 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9ea9aa4c3 100644 +index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d943ba25b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1296,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1313,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1387,6 +1388,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean dolphinRidable = false; -@@ -2099,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2173,6 +2175,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2113,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2190,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean piglinBruteRidable = false; -@@ -2374,6 +2378,7 @@ public class PurpurWorldConfig { +@@ -2448,6 +2452,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2386,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2460,6 +2465,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 } public boolean skeletonHorseRidable = false; -@@ -2922,6 +2928,7 @@ public class PurpurWorldConfig { +@@ -2996,6 +3002,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index f607d41ffa51c00cb9edc70545e3d55fdf56f8db..e1cb805d20768559db3452a83392f2e9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2940,6 +2947,7 @@ public class PurpurWorldConfig { +@@ -3014,6 +3021,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch b/patches/server/0232-Stop-bees-from-dying-after-stinging.patch index 863c6a9ff..e14cbbdc8 100644 --- a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0232-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 6d7b8c9f9bfe296263f1752f485dcf8f53af8142..0a4ca865d1e41efca0eb8287c833e642 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1cb805d20768559db3452a83392f2e9ea9aa4c3..9b6309d247b88a73e26b66a65412af5407fcd640 100644 +index 3760848e35ce82a546fb406ed383be8d943ba25b..62c916dbb715192e9ec56df95672f070e14aea4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1097,6 +1097,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1171,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index e1cb805d20768559db3452a83392f2e9ea9aa4c3..9b6309d247b88a73e26b66a65412af54 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1113,6 +1114,7 @@ public class PurpurWorldConfig { +@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0234-Configurable-farmland-trample-height.patch b/patches/server/0234-Configurable-farmland-trample-height.patch index 7aae7d3df..11c7214d4 100644 --- a/patches/server/0234-Configurable-farmland-trample-height.patch +++ b/patches/server/0234-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b6309d247b88a73e26b66a65412af5407fcd640..13b1957f4338cc6bb406370e91ee58d7d4002148 100644 +index 62c916dbb715192e9ec56df95672f070e14aea4c..2f381b23c4193e324ebf04e96f98ae16f457120a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -885,6 +885,7 @@ public class PurpurWorldConfig { +@@ -959,6 +959,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 9b6309d247b88a73e26b66a65412af5407fcd640..13b1957f4338cc6bb406370e91ee58d7 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -892,6 +893,7 @@ public class PurpurWorldConfig { +@@ -966,6 +967,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0237-Configurable-phantom-size.patch b/patches/server/0237-Configurable-phantom-size.patch index 5461c23e2..42cd9b62e 100644 --- a/patches/server/0237-Configurable-phantom-size.patch +++ b/patches/server/0237-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17d12dceec818dfbfb9bccf263295840e2c6bc04..599b52cdbccd3b58d0e33d726590b38dece45f96 100644 +index adc30acd3cead8f557f1016ed5e05edbf2857200..0cb3e06bab1b897a98fd0a05c65cf025c0356273 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2039,6 +2039,8 @@ public class PurpurWorldConfig { +@@ -2113,6 +2113,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 17d12dceec818dfbfb9bccf263295840e2c6bc04..599b52cdbccd3b58d0e33d726590b38d private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2075,6 +2077,13 @@ public class PurpurWorldConfig { +@@ -2149,6 +2151,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0240-Configurable-minimum-demand-for-trades.patch b/patches/server/0240-Configurable-minimum-demand-for-trades.patch index 4920a4a88..353474477 100644 --- a/patches/server/0240-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0240-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 599b52cdbccd3b58d0e33d726590b38dece45f96..5f57614f37c63e967ee1866bb11de79a1ccc9e24 100644 +index 0cb3e06bab1b897a98fd0a05c65cf025c0356273..cae769fde9d58d2a526af769e49d4d63b7bcb3f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2724,6 +2724,7 @@ public class PurpurWorldConfig { +@@ -2798,6 +2798,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 599b52cdbccd3b58d0e33d726590b38dece45f96..5f57614f37c63e967ee1866bb11de79a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2744,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2818,6 +2819,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0241-Lobotomize-stuck-villagers.patch b/patches/server/0241-Lobotomize-stuck-villagers.patch index 74b630a13..ade6ab128 100644 --- a/patches/server/0241-Lobotomize-stuck-villagers.patch +++ b/patches/server/0241-Lobotomize-stuck-villagers.patch @@ -105,10 +105,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f57614f37c63e967ee1866bb11de79a1ccc9e24..7f8851967625d9d3fd94d09af72888999a807668 100644 +index cae769fde9d58d2a526af769e49d4d63b7bcb3f7..cd5dcafe602e494ded07106224857dcea37b5525 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2725,6 +2725,8 @@ public class PurpurWorldConfig { +@@ -2799,6 +2799,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 5f57614f37c63e967ee1866bb11de79a1ccc9e24..7f8851967625d9d3fd94d09af7288899 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2746,6 +2748,17 @@ public class PurpurWorldConfig { +@@ -2820,6 +2822,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0242-Option-for-villager-display-trade-item.patch b/patches/server/0242-Option-for-villager-display-trade-item.patch index c7e5db8e2..1a6b86b88 100644 --- a/patches/server/0242-Option-for-villager-display-trade-item.patch +++ b/patches/server/0242-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f8851967625d9d3fd94d09af72888999a807668..00fde25fb74499e83039a812c6f525ceaecde0b0 100644 +index cd5dcafe602e494ded07106224857dcea37b5525..4586122457cdbf707cecb0d95110ac64e45a8184 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2727,6 +2727,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2801,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 7f8851967625d9d3fd94d09af72888999a807668..00fde25fb74499e83039a812c6f525ce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2759,6 +2760,7 @@ public class PurpurWorldConfig { +@@ -2833,6 +2834,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 4f2afdd21..a7e7961ca 100644 --- a/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 827912174ee08cd19249797d351887149b25c880..5b02848ea9f14060353014cada2d5539 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00fde25fb74499e83039a812c6f525ceaecde0b0..3cdfee20a6521c056d20a95b2bf08a7b351245e6 100644 +index 4586122457cdbf707cecb0d95110ac64e45a8184..f00325dff01364cba7aa2f15e945a32a636426ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -989,8 +989,10 @@ public class PurpurWorldConfig { +@@ -1063,8 +1063,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0245-Anvil-repair-damage-options.patch b/patches/server/0245-Anvil-repair-damage-options.patch index 737b3bc18..ec2f42bab 100644 --- a/patches/server/0245-Anvil-repair-damage-options.patch +++ b/patches/server/0245-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76 return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f39c1b722924bb1d8a3a6faaa1000391f36036f..ccf92e6d5374003b590f578a7168b09c61824720 100644 +index 29f353f08c968b6c329fcd29e07d3ba3087884df..e52417b3b696e1068b484daa4c73fe535966de22 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -746,9 +746,13 @@ public class PurpurWorldConfig { +@@ -820,9 +820,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch index d8b41af08..27b5071ea 100644 --- a/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 9756c84e073d9e99ade0ee94c586b8e0fa426138..2c0dcfc916f0845dc830a7ac9ffc828d return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccf92e6d5374003b590f578a7168b09c61824720..0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c 100644 +index e52417b3b696e1068b484daa4c73fe535966de22..39f79210e80825df5a837e5e319f8db0c0e67280 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,12 +1017,14 @@ public class PurpurWorldConfig { +@@ -1091,12 +1091,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch index 48f8aa53a..a3a279fbe 100644 --- a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 52650c912b72de99a23eebf04c9a63945f04359c..a46fc13b3072b65dc9284ece6cbf63a7 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c..3d94ddfe64251d7a154747cd3ab3fc7d703e0c05 100644 +index 39f79210e80825df5a837e5e319f8db0c0e67280..1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2738,6 +2738,8 @@ public class PurpurWorldConfig { +@@ -2812,6 +2812,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 0b4c34daad630de9d2cdb207d8d9c4d5edd2cd8c..3d94ddfe64251d7a154747cd3ab3fc7d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2771,6 +2773,8 @@ public class PurpurWorldConfig { +@@ -2845,6 +2847,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0250-Stonecutter-damage.patch b/patches/server/0250-Stonecutter-damage.patch index 59f9b20ae..7c6064b98 100644 --- a/patches/server/0250-Stonecutter-damage.patch +++ b/patches/server/0250-Stonecutter-damage.patch @@ -90,7 +90,7 @@ index 7702cd386247c1a850bb22ccf8c0724d5bec1020..29ec2f9a35dd73e8a6adf2e4edcfe543 return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc164a76975 100644 +index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -105,10 +105,10 @@ index 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc1 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d94ddfe64251d7a154747cd3ab3fc7d703e0c05..6d8b078aba1296ec4b51352a367d80550b5ee1bf 100644 +index 1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54..02eb8f37ccb814df925431280ec34a047592d6d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1012,6 +1012,11 @@ public class PurpurWorldConfig { +@@ -1086,6 +1086,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch index 1e5e78cd5..df2fdcb74 100644 --- a/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 10f5ffacc72a5e0116e2599ca83ee57a5b1ce0eb..31e6468f639de3ed0b25c3bc4ee09333 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d8b078aba1296ec4b51352a367d80550b5ee1bf..dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b 100644 +index 02eb8f37ccb814df925431280ec34a047592d6d6..b75922d2352a1ceb3ad00cbf6f968edaaea243d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -948,6 +948,13 @@ public class PurpurWorldConfig { +@@ -1022,6 +1022,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0252-Add-config-for-snow-on-blue-ice.patch b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch index b96e811a4..dbb5d023d 100644 --- a/patches/server/0252-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0252-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dff801d3deaa5fd22a245d0bf7112a2c4f7c4d2b..4b4a2646264b558c56bf91e70a110133fb0997bb 100644 +index b75922d2352a1ceb3ad00cbf6f968edaaea243d9..7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -929,9 +929,11 @@ public class PurpurWorldConfig { +@@ -1003,9 +1003,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0253-Skeletons-eat-wither-roses.patch b/patches/server/0253-Skeletons-eat-wither-roses.patch index 23605e916..00da6d1ea 100644 --- a/patches/server/0253-Skeletons-eat-wither-roses.patch +++ b/patches/server/0253-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b4a2646264b558c56bf91e70a110133fb0997bb..f36c75217028eea8503c15df710e4cabb8fdd741 100644 +index 7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57..06e7305a4d2def94136a9f1f39e3b3c27124ebdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2420,6 +2420,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2494,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 4b4a2646264b558c56bf91e70a110133fb0997bb..f36c75217028eea8503c15df710e4cab private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2433,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2507,6 +2508,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0254-Enchantment-Table-Persists-Lapis.patch b/patches/server/0254-Enchantment-Table-Persists-Lapis.patch index 24ba68ad3..bcda870af 100644 --- a/patches/server/0254-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0254-Enchantment-Table-Persists-Lapis.patch @@ -146,10 +146,10 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f36c75217028eea8503c15df710e4cabb8fdd741..c11fe39f7ae131eb2950b618aa9ac8900c916aa3 100644 +index 06e7305a4d2def94136a9f1f39e3b3c27124ebdd..67f442cc85a08a5843763643bc0cb6cfa9097e8f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1455,6 +1455,11 @@ public class PurpurWorldConfig { +@@ -1529,6 +1529,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch index 383d93854..a36dd7719 100644 --- a/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c11fe39f7ae131eb2950b618aa9ac8900c916aa3..5c5681d74c272ab81370dc5daae485e0e9101adf 100644 +index 67f442cc85a08a5843763643bc0cb6cfa9097e8f..da5dfa53adaa85652e2c5db5fbe14307e9ef20c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -993,6 +993,11 @@ public class PurpurWorldConfig { +@@ -1067,6 +1067,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0258-Config-to-not-let-coral-die.patch b/patches/server/0258-Config-to-not-let-coral-die.patch index e13af0fc3..e57e68bbd 100644 --- a/patches/server/0258-Config-to-not-let-coral-die.patch +++ b/patches/server/0258-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c5681d74c272ab81370dc5daae485e0e9101adf..601452f16c7f41b609cc13026386d6f5d06ac92e 100644 +index da5dfa53adaa85652e2c5db5fbe14307e9ef20c5..a1c95d2a69a8eaedefa90e689d5ce1636648fd1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -830,6 +830,11 @@ public class PurpurWorldConfig { +@@ -904,6 +904,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0269-Add-skeleton-bow-accuracy-option.patch b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch index ae98e0eb6..3616e37d9 100644 --- a/patches/server/0269-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0269-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52cc678de23f370c411933d3f99c31a7acbe2d9b..2957282e6c19fbe38ddb4f8a30ae2d3404d87385 100644 +index c46408be4ae6d764f233963f17b383ea623561ea..1f5225a7fb1a849884483c1bb1a1514b10a2d113 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2440,6 +2440,8 @@ public class PurpurWorldConfig { +@@ -2514,6 +2514,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 52cc678de23f370c411933d3f99c31a7acbe2d9b..2957282e6c19fbe38ddb4f8a30ae2d34 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2454,6 +2456,18 @@ public class PurpurWorldConfig { +@@ -2528,6 +2530,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0270-Allay-respect-item-NBT.patch b/patches/server/0270-Allay-respect-item-NBT.patch index 6ab6e3e95..6e52cbef1 100644 --- a/patches/server/0270-Allay-respect-item-NBT.patch +++ b/patches/server/0270-Allay-respect-item-NBT.patch @@ -44,10 +44,10 @@ index f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2957282e6c19fbe38ddb4f8a30ae2d3404d87385..4cd381104a2ab320feb3984b8f77f9630246c7e4 100644 +index 1f5225a7fb1a849884483c1bb1a1514b10a2d113..c7584f2cd12a75f61ca94100718df200b6c373e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1074,10 +1074,13 @@ public class PurpurWorldConfig { +@@ -1148,10 +1148,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 342e508ef..23904467d 100644 --- a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f..52108909cbe0ea7faa0032f985898c41084cac10 100644 +index e3d9bd8fc246771a6d612d0c834a47c7a3255f74..39726c991874b631545e0a06fa5b06383e7b7115 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1348,6 +1348,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1422,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f..52108909cbe0ea7faa0032f985898c41 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1366,6 +1367,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1441,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0286-End-Crystal-Cramming.patch b/patches/server/0286-End-Crystal-Cramming.patch index 35e687f75..0dae8b87c 100644 --- a/patches/server/0286-End-Crystal-Cramming.patch +++ b/patches/server/0286-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 564d17bc460e2a04947ff9676fbf4c8b1569659c..440add62fcfa62d483409e1aecfc9159 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e25bfd7b345c3ba578191ce6656f041ffb9fd05..8a4a51283bfc37e61c6581bf6e2ddd49e79a3122 100644 +index 7234603063091d3999f71e5d7781c6468665c8f3..8f7f5b89efadc60dc8f95b5b4e002836b758be7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -873,6 +873,7 @@ public class PurpurWorldConfig { +@@ -947,6 +947,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 0e25bfd7b345c3ba578191ce6656f041ffb9fd05..8a4a51283bfc37e61c6581bf6e2ddd49 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -900,6 +901,7 @@ public class PurpurWorldConfig { +@@ -974,6 +975,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index ba5a3cc4b..0251391a6 100644 --- a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index a5f9747be5503dd24abd98f11cfa8229448ca3bf..99ef8d7e3ee0ee9777d12ad825e728c3 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a4a51283bfc37e61c6581bf6e2ddd49e79a3122..05b4bd8495451dbd6277946e77737495b58375f8 100644 +index 8f7f5b89efadc60dc8f95b5b4e002836b758be7c..6523578f35da2977567f0011a9f9f9a96b538560 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -772,11 +772,13 @@ public class PurpurWorldConfig { +@@ -846,11 +846,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch index 2c159a893..4f3034ed7 100644 --- a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index ceaec1776067b7635c3952025f00f13f4ea86c88..8b6c43b0a2fb4b89d6f63716e56074ef + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3571a1a86b7ec9f10b2a5bf4e2c3f7b0bded7d1..db47c443a765a87d2cabde2d3956909661d65237 100644 +index 2bb310f0a7c94f036c0e849d8a3defb47a115f04..ec46c926e6df9101322df22853d03eba05b48896 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -826,8 +826,20 @@ public class PurpurWorldConfig { +@@ -900,8 +900,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0296-Shears-can-defuse-TNT.patch b/patches/server/0296-Shears-can-defuse-TNT.patch index fe90a9509..f43459e76 100644 --- a/patches/server/0296-Shears-can-defuse-TNT.patch +++ b/patches/server/0296-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index c3e47426382296d650fa00ce0bc1a82bf23c7877..dfc3e9d2611ce418ac6f6cc5a23bb744 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93f350d5059e9385f4ba344cd24be8ca4d3198e9..0b95401b8d89268a3b7a388acfcaba5b5b679a0e 100644 +index 2c9c5f8e432f076559bdb88e4485399ff74c8cd5..3cefadcca5c0ab367fbb15a1b8565aed8f7e8689 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3214,4 +3214,11 @@ public class PurpurWorldConfig { +@@ -3288,4 +3288,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch index c0699ddaf..f36aa2272 100644 --- a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b95401b8d89268a3b7a388acfcaba5b5b679a0e..637c70fda2d3a82db8e6d831ff13160a05ab2008 100644 +index 3cefadcca5c0ab367fbb15a1b8565aed8f7e8689..8da2d5defa55484dcaf7f448db586b412479fdb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2027,6 +2027,7 @@ public class PurpurWorldConfig { +@@ -2101,6 +2101,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 0b95401b8d89268a3b7a388acfcaba5b5b679a0e..637c70fda2d3a82db8e6d831ff13160a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2040,6 +2041,7 @@ public class PurpurWorldConfig { +@@ -2114,6 +2115,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 391415caa..c1da3ff32 100644 --- a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -45,10 +45,10 @@ index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 637c70fda2d3a82db8e6d831ff13160a05ab2008..4f3f16e90362fb08cfa20441fdc3b7220d10dbb4 100644 +index 8da2d5defa55484dcaf7f448db586b412479fdb6..eeaf4da4dff16d89f5e7ab350b411800c4fbfa88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2196,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +56,7 @@ index 637c70fda2d3a82db8e6d831ff13160a05ab2008..4f3f16e90362fb08cfa20441fdc3b722 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2211,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2285,6 +2286,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0301-place-end-crystal-on-any-block.patch b/patches/server/0301-place-end-crystal-on-any-block.patch index 7d31a2ed7..09834b69a 100644 --- a/patches/server/0301-place-end-crystal-on-any-block.patch +++ b/patches/server/0301-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f3f16e90362fb08cfa20441fdc3b7220d10dbb4..96f6186ca9eb1889beefd7b54addc42052f8907a 100644 +index eeaf4da4dff16d89f5e7ab350b411800c4fbfa88..fb7bdaa64002729f9f9cd0fbbd2ae289643628b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -895,6 +895,7 @@ public class PurpurWorldConfig { +@@ -969,6 +969,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 4f3f16e90362fb08cfa20441fdc3b7220d10dbb4..96f6186ca9eb1889beefd7b54addc420 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -923,6 +924,7 @@ public class PurpurWorldConfig { +@@ -997,6 +998,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); From eb3b67d5b277d279c4ff67322a49fc5f0764ad82 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 17 Dec 2023 01:11:46 -0800 Subject: [PATCH 023/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@de04cbc Updated Upstream (Bukkit/CraftBukkit) (#10034) --- gradle.properties | 2 +- patches/api/0001-Purpur-config-files.patch | 4 ++-- patches/api/0003-Purpur-client-support.patch | 4 ++-- patches/api/0008-AFK-API.patch | 4 ++-- patches/api/0009-Bring-back-server-name.patch | 8 ++++---- patches/api/0012-Lagging-threshold.patch | 8 ++++---- ...-the-ability-to-add-combustible-items.patch | 8 ++++---- patches/api/0042-Debug-Marker-API.patch | 12 ++++++------ patches/api/0043-Add-death-screen-API.patch | 4 ++-- patches/server/0001-Rebrand.patch | 14 +++++++------- patches/server/0002-Purpur-config-files.patch | 12 ++++++------ .../server/0003-Purpur-client-support.patch | 4 ++-- patches/server/0006-Ridables.patch | 18 +++++++++--------- patches/server/0010-AFK-API.patch | 10 +++++----- .../server/0011-Bring-back-server-name.patch | 4 ++-- .../0013-LivingEntity-safeFallDistance.patch | 4 ++-- patches/server/0014-Lagging-threshold.patch | 6 +++--- .../0057-Add-5-second-tps-average-in-tps.patch | 4 ++-- .../0085-LivingEntity-broadcastItemBreak.patch | 4 ++-- .../0122-Add-EntityTeleportHinderedEvent.patch | 8 ++++---- ...0171-API-for-any-mob-to-burn-daylight.patch | 16 ++++++++-------- .../0179-Add-portal-permission-bypass.patch | 4 ++-- .../0206-Extended-OfflinePlayer-API.patch | 4 ++-- ...-the-ability-to-add-combustible-items.patch | 4 ++-- patches/server/0224-Potion-NamespacedKey.patch | 13 ------------- ...nfig-for-mob-last-hurt-by-player-time.patch | 6 +++--- patches/server/0267-Debug-Marker-API.patch | 8 ++++---- patches/server/0271-Add-death-screen-API.patch | 4 ++-- patches/server/0277-Language-API.patch | 6 +++--- patches/server/0282-Fire-Immunity-API.patch | 6 +++--- 30 files changed, 100 insertions(+), 113 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4fd4e272f..8926da231 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = f1820dc80a02009980e6466ea5847933861b911a +paperCommit = de04cbced5441dfa9847b02ab28fe7c4b54f054c org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Purpur-config-files.patch b/patches/api/0001-Purpur-config-files.patch index 50cfd6bc9..b863e7638 100644 --- a/patches/api/0001-Purpur-config-files.patch +++ b/patches/api/0001-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index f1fa97d12f97baf97beb92ca0719cf3cf906b225..f57711635146fd8e36f4bd2284522723a10be531 100644 +index 9af4bc16da09e59009c47911219e99450cdf2aa5..6e0e8fef9293619f5e7fd2613cc351afed7e908a 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2190,6 +2190,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2198,6 +2198,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0003-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch index 33d2b0679..f03656601 100644 --- a/patches/api/0003-Purpur-client-support.patch +++ b/patches/api/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index a8d3451ccfcd21a9e80adc2feab8fc9c2926c753..271b3ee810f9689dab223eb0e6b51eef358ee38d 100644 +index ec937534f049ba25fb359c3e022ebe52ead6abef..a9eca07e4fe39221d3a675482b371a2da74a79d4 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3484,4 +3484,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3507,4 +3507,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0008-AFK-API.patch index 31e1ce5d3..254d20dd3 100644 --- a/patches/api/0008-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 271b3ee810f9689dab223eb0e6b51eef358ee38d..31b086d944fd06a518c49da84cbc58744591a2f9 100644 +index a9eca07e4fe39221d3a675482b371a2da74a79d4..7ae6de0bdf01a3c94aa0287354ddfe4c838ff658 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3492,5 +3492,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3515,5 +3515,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0009-Bring-back-server-name.patch b/patches/api/0009-Bring-back-server-name.patch index d06ac9735..af5c9bbe8 100644 --- a/patches/api/0009-Bring-back-server-name.patch +++ b/patches/api/0009-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 4863d9f21f0a0f11974be85360edc587ffd7eab3..0e528e26a94338b2cee9556c87b7ff071fce58f9 100644 +index 48fab492609e0bae459d20cc2eae78b87e37ab75..d910fd8a8f254c825da8a2b74a3fae402d1a5c39 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2832,4 +2832,15 @@ public final class Bukkit { +@@ -2842,4 +2842,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index 4863d9f21f0a0f11974be85360edc587ffd7eab3..0e528e26a94338b2cee9556c87b7ff07 + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index f57711635146fd8e36f4bd2284522723a10be531..2b3ec780e02b90f463ec251b46566dffc3b2cda2 100644 +index 6e0e8fef9293619f5e7fd2613cc351afed7e908a..5a7168111af08c58f0b331dfdbf0ac1d68f6a2a6 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2485,4 +2485,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2493,4 +2493,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0012-Lagging-threshold.patch b/patches/api/0012-Lagging-threshold.patch index e31dc8e3e..c8e352813 100644 --- a/patches/api/0012-Lagging-threshold.patch +++ b/patches/api/0012-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 0e528e26a94338b2cee9556c87b7ff071fce58f9..e008983503a4ae45e9dd7f7858291dc4d3746520 100644 +index d910fd8a8f254c825da8a2b74a3fae402d1a5c39..61ac743590e85e744664d16e02ba0e7027e8dd49 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2842,5 +2842,14 @@ public final class Bukkit { +@@ -2852,5 +2852,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index 0e528e26a94338b2cee9556c87b7ff071fce58f9..e008983503a4ae45e9dd7f7858291dc4 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 2b3ec780e02b90f463ec251b46566dffc3b2cda2..410aa885770c3f8be73277e90c4de6409b926f77 100644 +index 5a7168111af08c58f0b331dfdbf0ac1d68f6a2a6..e37b5bd4cf7a3ae1d0e7ef01c4718e99392eed59 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2493,5 +2493,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2501,5 +2501,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0034-Added-the-ability-to-add-combustible-items.patch b/patches/api/0034-Added-the-ability-to-add-combustible-items.patch index 9fc989cc6..bdf0bbdbf 100644 --- a/patches/api/0034-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0034-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index e008983503a4ae45e9dd7f7858291dc4d3746520..4d375b95459698284f1c27eefe8adc29fc0e7871 100644 +index 61ac743590e85e744664d16e02ba0e7027e8dd49..610887890529db62887174a10e1687ea1883fafa 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2851,5 +2851,24 @@ public final class Bukkit { +@@ -2861,5 +2861,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index e008983503a4ae45e9dd7f7858291dc4d3746520..4d375b95459698284f1c27eefe8adc29 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 410aa885770c3f8be73277e90c4de6409b926f77..9217a021cd6e54fda334f637a0bfbbdbc7ad14b0 100644 +index e37b5bd4cf7a3ae1d0e7ef01c4718e99392eed59..c001488119c64f9ee2babce29a8ff9f86aec9bfb 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2500,5 +2500,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2508,5 +2508,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0042-Debug-Marker-API.patch b/patches/api/0042-Debug-Marker-API.patch index 5693253bc..9330c5dd0 100644 --- a/patches/api/0042-Debug-Marker-API.patch +++ b/patches/api/0042-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 4d375b95459698284f1c27eefe8adc29fc0e7871..8ea42a1f07df756bf504609d2bbff578f20bb808 100644 +index 610887890529db62887174a10e1687ea1883fafa..109304f8064ab2fab57f9c0f1745e446e6748b3d 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2870,5 +2870,89 @@ public final class Bukkit { +@@ -2880,5 +2880,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 4d375b95459698284f1c27eefe8adc29fc0e7871..8ea42a1f07df756bf504609d2bbff578 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 9217a021cd6e54fda334f637a0bfbbdbc7ad14b0..dd99f53e3d559685a4b3a454a9e607c310fc6aff 100644 +index c001488119c64f9ee2babce29a8ff9f86aec9bfb..529fb1beadefc79ce6bf5755d5223301b9933152 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2515,5 +2515,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2523,5 +2523,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -260,10 +260,10 @@ index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5d /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 31b086d944fd06a518c49da84cbc58744591a2f9..2587fa1f34eb8ed6c50e500531d07f9325d91f16 100644 +index 7ae6de0bdf01a3c94aa0287354ddfe4c838ff658..36a1952513dcc146c75856a6a5abc61acd1a3e0a 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3512,5 +3512,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3535,5 +3535,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0043-Add-death-screen-API.patch b/patches/api/0043-Add-death-screen-API.patch index 7dc8a33c1..d52845721 100644 --- a/patches/api/0043-Add-death-screen-API.patch +++ b/patches/api/0043-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 2587fa1f34eb8ed6c50e500531d07f9325d91f16..c70af6fb5789974b1f302d408021df6284f014a1 100644 +index 36a1952513dcc146c75856a6a5abc61acd1a3e0a..117e7eda393832cede8fd6443c9fdc794b59d17f 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3582,5 +3582,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3605,5 +3605,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index c70522c15..0c6dd80c4 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 170a915098f09ace226648da342a04c5c7583d11..fb1837bd5d0cb1970a6c236e72654a1c09502c48 100644 +index b12b5a1e82a5ebf47135a3863a390a45a9d8d8ec..d7951a9b3819ddc1d42e10d40bdf57ae47666d89 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,8 +27,12 @@ repositories { @@ -24,8 +24,8 @@ index 170a915098f09ace226648da342a04c5c7583d11..fb1837bd5d0cb1970a6c236e72654a1c implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") @@ -65,6 +69,10 @@ dependencies { - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur @@ -197,10 +197,10 @@ index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..88b79cd90e936e1c48b84d7f762f425e public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 782bb8ca67517dde5dba8f0a133eb8699353dd01..faeed34e37be45e9d18ab0293535cade59fda440 100644 +index e011cfcdda2e0a609d4158b0454bdf046b04c9d9..ace8ef2a55cf8e87d092f0b67b2d64b3a9e4f366 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -270,7 +270,7 @@ import javax.annotation.Nullable; // Paper +@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -237,10 +237,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index ba2cd9c4cdbd5ddab1300320d7e0ede4d4b7a31a..3373df9e09bd29096c4b9c039c06256e4ecf4154 100644 +index 25ffc92c3d6055285a64d9fe36c0054228fe81dd..538f385404450132d295707e3bfe19028b05ad9c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -917,7 +917,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -916,7 +916,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return EntityCategory.WATER; } diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index 02f443e02..9a29d40b2 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -112,10 +112,10 @@ index 0b56e5f7f18fc4286992af22d402205b771165a3..d89e36f90c7d84eaa627ef1dd9002ea0 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd62bfd8a2 100644 +index ace8ef2a55cf8e87d092f0b67b2d64b3a9e4f366..29f28a197d39b58c6eb3eac14b788dafb7768d91 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1036,6 +1036,7 @@ public final class CraftServer implements Server { +@@ -1037,6 +1037,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -123,7 +123,7 @@ index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1051,6 +1052,7 @@ public final class CraftServer implements Server { +@@ -1052,6 +1053,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1066,6 +1068,7 @@ public final class CraftServer implements Server { +@@ -1067,6 +1069,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -139,7 +139,7 @@ index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3010,6 +3013,18 @@ public final class CraftServer implements Server { +@@ -3011,6 +3014,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index faeed34e37be45e9d18ab0293535cade59fda440..05259057c12ab087dfc64fa32bd7a7bd public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 4b457cbfc56e55e0ae0fee5b69e2e75349702aab..fa38d6dd3a7439de3b2503a90637eabb3e6dd8ec 100644 +index a74a8a027c99eef199c1a6a54232ac2c8ffb9d08..4f81321727b754c0e101bb05bc6474203412e89e 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -174,6 +174,14 @@ public class Main { diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index a88398ac6..64d5ed296 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -43,10 +43,10 @@ index 4a712f5fc4f0b4a4434ae808c989113bee8d8634..fb03498b355a86e156ed26ee903ba93c try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 036b31cbfda8bac02205d99c1eff8a08f4da1250..ef9b8e50522583aa9675ab4d15fc8285a311e2ec 100644 +index 3be5e4df190bff0087c8450b16e4e37b07169040..bb18dc57689c1002ae2ee418f88d2b799beb6fc8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3293,4 +3293,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3303,4 +3303,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 867e9bcfa..44f2f710a 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -3241,7 +3241,7 @@ index 70d25bb45ad603095a1f5812cc396dfc5f16a1e1..562faf0257388d9c22146a418f25716c public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index fd1b5a1beea7594fa65decfdcccfa15781fc005b..66b2fdcda53fdfd278994dc16be3e12041be6e99 100644 +index 52eb3f6a73fa99d12d5fc75bab03e47a605c653a..7b17195c3e872822f92760c2977af3afa395b183 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -59,21 +59,98 @@ public class Creeper extends Monster implements PowerableMob { @@ -5163,10 +5163,10 @@ index 78dd3365dc4d1265fc2102f740d75a384f5df5c5..4a2331c22a022881d66bcfd4134b0ffe public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..fed6671e518b2f1601bbf4154195a844fc3b0fd1 100644 +index 1727e932ac6b9ca09b5df96f9547ff125114e15a..f8ac77be62ee1220e0373ade55fdee1cb32750e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1582,4 +1582,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1227,4 +1227,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5195,10 +5195,10 @@ index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..fed6671e518b2f1601bbf4154195a844 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236db352ff65 100644 +index f67ec3f5f4b7e2f678609f2387cc8afa2adce161..51ed919b56ded23309be1093280a92331c090780 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -594,6 +594,15 @@ public class CraftEventFactory { +@@ -591,6 +591,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5214,7 +5214,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d return event; } -@@ -1073,6 +1082,7 @@ public class CraftEventFactory { +@@ -1070,6 +1079,7 @@ public class CraftEventFactory { damageCause = DamageCause.ENTITY_EXPLOSION; } event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API @@ -5222,7 +5222,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d } event.setCancelled(cancelled); -@@ -1187,6 +1197,7 @@ public class CraftEventFactory { +@@ -1184,6 +1194,7 @@ public class CraftEventFactory { } else { entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled } @@ -5230,7 +5230,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d return event; } -@@ -1250,6 +1261,7 @@ public class CraftEventFactory { +@@ -1247,6 +1258,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API @@ -5239,7 +5239,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 61d193d8ddd87817bf2c560037d42366cff1eca9..8ad548fc059568d37675e017548b171d4dd1d555 100644 +index be3b733d7a641a7651ace1b3bd5ac56f26db5947..463af65182c0894a75a138df8100f3f616143f4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -172,4 +172,9 @@ public class PurpurConfig { diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 218814b89..0f7b7ffd8 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -78,7 +78,7 @@ index d5940e560ea890f7f017ff9c37939a485be94540..f862bd65b535fc9e289b31260af69907 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 41f3415c6c1b7a3ee2c733445bfefdc51089ecb5..de9d79c5e83ccce5f6fc585435e18a481d790f38 100644 +index bec249a47f1fbcabd6a121399d19d71e21edccae..85d927e7970480f98ceeb7926e27413f893ec5a6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -326,6 +326,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,10 +223,10 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ef9b8e50522583aa9675ab4d15fc8285a311e2ec..54e2b4b116eadb1fdce15e4aee8e97d60fa2c8db 100644 +index bb18dc57689c1002ae2ee418f88d2b799beb6fc8..72bd74a2fd6c9f7aec79ee7e4003cecbb4a3f95a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -527,10 +527,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -243,7 +243,7 @@ index ef9b8e50522583aa9675ab4d15fc8285a311e2ec..54e2b4b116eadb1fdce15e4aee8e97d6 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3299,5 +3304,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3309,5 +3314,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -265,7 +265,7 @@ index ef9b8e50522583aa9675ab4d15fc8285a311e2ec..54e2b4b116eadb1fdce15e4aee8e97d6 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7937023274acf3a1efdd21bbdd2f933f4399baeb..3fba9f640ef03219c89a2a405e4d5a5870e366bf 100644 +index a0eb18409f72afe393581e6dc8e2260b3a25197f..7312ae7323032a0ba3c47aa7bdfe5dffe9674535 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -174,8 +174,18 @@ public class PurpurConfig { diff --git a/patches/server/0011-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch index 03f7f1f2f..b147679cb 100644 --- a/patches/server/0011-Bring-back-server-name.patch +++ b/patches/server/0011-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 1643186bcb2caf5d29fd551afd35830726dbb80a..d53e0b67d847dfec2f4b118b5ca3f0ed public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 05259057c12ab087dfc64fa32bd7a7bd62bfd8a2..71fe32748fe765ad9de2781cbdabe73bfb6e4caf 100644 +index 29f28a197d39b58c6eb3eac14b788dafb7768d91..519a42c881c05db60f7e9efd22f1692ccf7359d3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3243,4 +3243,11 @@ public final class CraftServer implements Server { +@@ -3244,4 +3244,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/server/0013-LivingEntity-safeFallDistance.patch index 674fec03c..49462de35 100644 --- a/patches/server/0013-LivingEntity-safeFallDistance.patch +++ b/patches/server/0013-LivingEntity-safeFallDistance.patch @@ -69,10 +69,10 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 3373df9e09bd29096c4b9c039c06256e4ecf4154..a8f5f8f05973523945941e55c0c28e1e546a6a1f 100644 +index 538f385404450132d295707e3bfe19028b05ad9c..5d2d4f765e7720c3e0b41d31182e3a12cc78ef54 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1120,4 +1120,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1119,4 +1119,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch index 33a5340c1..566fa0db3 100644 --- a/patches/server/0014-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -25,10 +25,10 @@ index 6339131c21398928e771a3172603da3a9c02561b..c442cf9a6856715ab7c404eb8e287bd6 } else curTime = Util.getNanos(); // Paper // Spigot end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 71fe32748fe765ad9de2781cbdabe73bfb6e4caf..eb7af0a4082ed46b438069175470aa1108a21119 100644 +index 519a42c881c05db60f7e9efd22f1692ccf7359d3..10e3a712305661eaf4a0d3b7f23c404c080d4458 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3249,5 +3249,10 @@ public final class CraftServer implements Server { +@@ -3250,5 +3250,10 @@ public final class CraftServer implements Server { public String getServerName() { return this.getProperties().serverName; } @@ -40,7 +40,7 @@ index 71fe32748fe765ad9de2781cbdabe73bfb6e4caf..eb7af0a4082ed46b438069175470aa11 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bb7acf61cf2928181d014a17166d4d1414218e01..34afed28faeb56352b48faf8078a5fb07912eb5e 100644 +index 881c5654f181ea9b66e1cdf3bc3bf46869e8557f..9c5bba0ae119f8d42274455e322530ceb5f67d9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -193,6 +193,11 @@ public class PurpurConfig { diff --git a/patches/server/0057-Add-5-second-tps-average-in-tps.patch b/patches/server/0057-Add-5-second-tps-average-in-tps.patch index dfa861ceb..cc09eec55 100644 --- a/patches/server/0057-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0057-Add-5-second-tps-average-in-tps.patch @@ -69,10 +69,10 @@ index 0d4d62757e7b15767ec62f59e287ab3a94be8c03..6206d19c2861996699ced5eccfff8ee8 lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur tickSection = curTime; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index eb7af0a4082ed46b438069175470aa1108a21119..aa84152e8198dfeed0465877d38216f8892f55f7 100644 +index 10e3a712305661eaf4a0d3b7f23c404c080d4458..19d2c4c6de4cd5130be06fb368cd12b9581984a1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2967,6 +2967,7 @@ public final class CraftServer implements Server { +@@ -2968,6 +2968,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { diff --git a/patches/server/0085-LivingEntity-broadcastItemBreak.patch b/patches/server/0085-LivingEntity-broadcastItemBreak.patch index 9ff14ab17..2a9252488 100644 --- a/patches/server/0085-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0085-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 a8f5f8f05973523945941e55c0c28e1e546a6a1f..93d8f8495a043efdbc763e1a35fd0ed86da5120e 100644 +index 5d2d4f765e7720c3e0b41d31182e3a12cc78ef54..c5d245649ce3b609f3de360dc9569af410a1de80 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1131,5 +1131,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1130,5 +1130,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch index ce3e3d2e3..ca91c17d8 100644 --- a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch @@ -74,10 +74,10 @@ index 2e264b8b13df9da9163a80b3dd4345af3cff431c..7b27852682909b7d19942bbb517e6107 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fed6671e518b2f1601bbf4154195a844fc3b0fd1..669405e0a38adc5336aa004011544346c44bc5bc 100644 +index f8ac77be62ee1220e0373ade55fdee1cb32750e9..fb80b7e2edebf915a98ef608d5b2e27a6c9ae79c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -607,6 +607,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -252,6 +252,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -89,10 +89,10 @@ index fed6671e518b2f1601bbf4154195a844fc3b0fd1..669405e0a38adc5336aa004011544346 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 54e2b4b116eadb1fdce15e4aee8e97d60fa2c8db..f4f6a04144139491f0b051dd33e256df5e3c368c 100644 +index 72bd74a2fd6c9f7aec79ee7e4003cecbb4a3f95a..a7a702ccb7cab7d68758078927544f2928a5ea62 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1371,6 +1371,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1368,6 +1368,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch index 14906e4b5..c1a45a985 100644 --- a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f12ad902b6add41ffd9aff19081ce4abf998effb..1ed6072672d0585fa7609b9709b7c4b876a0f7fe 100644 +index f8851857bdaeb1173124f43ee0eb3bd845789467..942359c28d9ced02b737b712f4e83e844424afc0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -353,10 +353,10 @@ index 52a576a16bfeb7dc6ec97280f9a5e0f408d71e46..9b1ae2fa1681f1212b6a09d5b10b1663 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 669405e0a38adc5336aa004011544346c44bc5bc..03b38dd69cd6932c17b9b2d832e67c14628a4918 100644 +index fb80b7e2edebf915a98ef608d5b2e27a6c9ae79c..1ac0f0faab8d6a22429f16ea745640bba65ef4ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -228,6 +228,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -365,14 +365,14 @@ index 669405e0a38adc5336aa004011544346c44bc5bc..03b38dd69cd6932c17b9b2d832e67c14 + return getHandle().isSunBurnTick(); + } + - public static CraftEntity getEntity(CraftServer server, Entity entity) { - /* - * Order is *EXTREMELY* important -- keep it right! =D + public static CraftEntity getEntity(CraftServer server, T entity) { + Preconditions.checkArgument(entity != null, "Unknown entity"); + diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 93d8f8495a043efdbc763e1a35fd0ed86da5120e..ea91da46779b177d3457e4683a76cedea8bc684d 100644 +index c5d245649ce3b609f3de360dc9569af410a1de80..741207b28a57a92d12d02ce3179eb50482ef0c43 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1137,5 +1137,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1136,5 +1136,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0179-Add-portal-permission-bypass.patch index 3667722c7..11edca307 100644 --- a/patches/server/0179-Add-portal-permission-bypass.patch +++ b/patches/server/0179-Add-portal-permission-bypass.patch @@ -26,10 +26,10 @@ index 5631240aed1c032faeb291358e40180f8aa40e49..952bf54a96f3ee84059f13c5821af2cf @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 8a1e765363aeb61078fd23980d3856dc680cb05e..aac60c61fc631c8ecac161eae513a305610a3dfb 100644 +index c3dbcb317b7d366feb31f707ad1199c60169f07f..0a14e5d9922836d42a03b496023e76c98fccd824 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -267,6 +267,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch index 57fdc89b4..5539b215b 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f4f6a04144139491f0b051dd33e256df5e3c368c..f34b24ff4a5afade707206b74b0cf4a3f2f913de 100644 +index a7a702ccb7cab7d68758078927544f2928a5ea62..791f030b4912b46ef70f3099eb3537515464c54b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2565,6 +2565,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2575,6 +2575,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch b/patches/server/0207-Added-the-ability-to-add-combustible-items.patch index 1af2e497a..d1baf7915 100644 --- a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0207-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index aa84152e8198dfeed0465877d38216f8892f55f7..d974846dda57755cfa33beba76794391beb9b4f3 100644 +index 19d2c4c6de4cd5130be06fb368cd12b9581984a1..966f8e764c2ad42cdfc84b5037081121937598b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1567,6 +1567,19 @@ public final class CraftServer implements Server { +@@ -1568,6 +1568,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0224-Potion-NamespacedKey.patch b/patches/server/0224-Potion-NamespacedKey.patch index 01a1d677b..202b49163 100644 --- a/patches/server/0224-Potion-NamespacedKey.patch +++ b/patches/server/0224-Potion-NamespacedKey.patch @@ -159,19 +159,6 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 } @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index ea91da46779b177d3457e4683a76cedea8bc684d..026e420b561afea5b3daa0f6bcf2cdfce6fb9e9a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -466,7 +466,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - @Override - public boolean addPotionEffect(PotionEffect effect, boolean force) { - org.spigotmc.AsyncCatcher.catchOp("effect add"); // Paper -- this.getHandle().addEffect(CraftPotionUtil.fromBukkit(effect), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon -+ this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()), EntityPotionEffectEvent.Cause.PLUGIN); // Purpur - add key // Paper - Don't ignore icon - return true; - } - diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java diff --git a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch index b692d41ff..83f1a740c 100644 --- a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch @@ -25,10 +25,10 @@ index ccf94ec8c0fcff5d75365274f662ff24b3ade75d..0061b6214f87f61f0bb4ddeffed8f719 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 026e420b561afea5b3daa0f6bcf2cdfce6fb9e9a..5a3fce46328661965480ebcbc381de33b65cdb66 100644 +index 741207b28a57a92d12d02ce3179eb50482ef0c43..5e8c2e77ad615aa3b2bfa3414834dca5db024739 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -454,7 +454,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; @@ -38,7 +38,7 @@ index 026e420b561afea5b3daa0f6bcf2cdfce6fb9e9a..5a3fce46328661965480ebcbc381de33 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cdfee20a6521c056d20a95b2bf08a7b351245e6..0f39c1b722924bb1d8a3a6faaa1000391f36036f 100644 +index f00325dff01364cba7aa2f15e945a32a636426ad..29f353f08c968b6c329fcd29e07d3ba3087884df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0267-Debug-Marker-API.patch b/patches/server/0267-Debug-Marker-API.patch index 656e53a4d..5f1be1ed8 100644 --- a/patches/server/0267-Debug-Marker-API.patch +++ b/patches/server/0267-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d974846dda57755cfa33beba76794391beb9b4f3..7c35318e65608b29f6ea0c1481c0af8f0dd8ba5f 100644 +index 966f8e764c2ad42cdfc84b5037081121937598b6..741a3cf8df218635cb5430db8d2c61294f7e849b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1578,6 +1578,42 @@ public final class CraftServer implements Server { +@@ -1579,6 +1579,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -99,10 +99,10 @@ index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa9602436 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f34b24ff4a5afade707206b74b0cf4a3f2f913de..1475964d04ebdcc08b4f67a516216162d8f8db2e 100644 +index 791f030b4912b46ef70f3099eb3537515464c54b..dc156ee88786cdb150850cb1adfc4b10b8441b85 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3345,5 +3345,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3355,5 +3355,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0271-Add-death-screen-API.patch b/patches/server/0271-Add-death-screen-API.patch index eb8ffa019..dbbf16cc9 100644 --- a/patches/server/0271-Add-death-screen-API.patch +++ b/patches/server/0271-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1475964d04ebdcc08b4f67a516216162d8f8db2e..c0780208bbdcb7a4c67ce107312e57c3de681a5a 100644 +index dc156ee88786cdb150850cb1adfc4b10b8441b85..342a41804c8a195ba2e185d3ed08e7fc9c25df50 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3383,5 +3383,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3393,5 +3393,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0277-Language-API.patch b/patches/server/0277-Language-API.patch index e69bdd237..c0684be8d 100644 --- a/patches/server/0277-Language-API.patch +++ b/patches/server/0277-Language-API.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7c35318e65608b29f6ea0c1481c0af8f0dd8ba5f..1677e737daa272d7669777a75214170a8e9c7d74 100644 +index 741a3cf8df218635cb5430db8d2c61294f7e849b..796787b28babc5393cfb8f83cb9e77a5cb6114f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -402,6 +402,20 @@ public final class CraftServer implements Server { - this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); +@@ -398,6 +398,20 @@ public final class CraftServer implements Server { + this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); Bukkit.setServer(this); + // Purpur start diff --git a/patches/server/0282-Fire-Immunity-API.patch b/patches/server/0282-Fire-Immunity-API.patch index a32b76a9f..81bf22fbc 100644 --- a/patches/server/0282-Fire-Immunity-API.patch +++ b/patches/server/0282-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 82f649715a566a5bbbbc175877bd344d96e41a2d..9c7a84874df50ba675a6a480086336e0c137424f 100644 +index 381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e..51f83ee4f617c0dbe40ef9fa1d2f5e49e68e37bb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -423,6 +423,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -50,10 +50,10 @@ index 82f649715a566a5bbbbc175877bd344d96e41a2d..9c7a84874df50ba675a6a480086336e0 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 03b38dd69cd6932c17b9b2d832e67c14628a4918..d2c4ebe74023c96220aae4629abb3a515f1c2a20 100644 +index 1ac0f0faab8d6a22429f16ea745640bba65ef4ab..752b32e4086e84d68e088fdaabec941bb134d61e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -228,6 +228,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -83,6 +83,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } From cfd98b844d28744a89728a311635e69f3483a9f5 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 18 Dec 2023 18:30:41 -0800 Subject: [PATCH 024/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ff26d54 send sound and particle packets immediately even if off main (#10033) PaperMC/Paper@e3140fb hotfix spawning item/xp in wrong spot PaperMC/Paper@0b95298 Make worldborder collisions consistent with Vanilla --- gradle.properties | 2 +- .../0005-Component-related-conveniences.patch | 4 +-- patches/server/0006-Ridables.patch | 10 +++---- ...urable-void-damage-height-and-damage.patch | 4 +-- .../0053-Add-canSaveToDisk-to-Entity.patch | 4 +-- ...Stop-squids-floating-on-top-of-water.patch | 4 +-- ...tities-can-use-portals-configuration.patch | 6 ++--- ...24-Movement-options-for-armor-stands.patch | 4 +-- .../server/0125-Fix-stuck-in-portals.patch | 4 +-- patches/server/0145-Drowning-Settings.patch | 4 +-- ...171-API-for-any-mob-to-burn-daylight.patch | 4 +-- ...ggle-for-end-portal-safe-teleporting.patch | 4 +-- ...0260-Add-toggle-for-RNG-manipulation.patch | 6 ++--- .../server/0264-Remove-Mojang-Profiler.patch | 26 +++++++++---------- patches/server/0282-Fire-Immunity-API.patch | 12 ++++----- ...leport-to-spawn-on-nether-ceiling-da.patch | 6 ++--- 16 files changed, 52 insertions(+), 52 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8926da231..d438aa67b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = de04cbced5441dfa9847b02ab28fe7c4b54f054c +paperCommit = 0b952981e6e96157d2cea8322c04c0f69965f2bf org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index e89c2bdd2..c415bd65f 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9abe817ae202edaa2d88cd59ae5c7db0b1c634be..37632d0c41149e6269fead808903765f0e59dbcc 100644 +index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4130,6 +4130,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4125,6 +4125,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 44f2f710a..6bd067d10 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -79,7 +79,7 @@ index 30ccbab1586a656e0ae41d7406525fb02d9e025b..bec249a47f1fbcabd6a121399d19d71e if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 37632d0c41149e6269fead808903765f0e59dbcc..eed3fa6b14b1e93f8d6571bba5675796e3418f49 100644 +index b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf..3773ae61b9cb747dd33613990339d1e3f363138e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -91,7 +91,7 @@ index 37632d0c41149e6269fead808903765f0e59dbcc..eed3fa6b14b1e93f8d6571bba5675796 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3001,6 +3001,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2996,6 +2996,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 37632d0c41149e6269fead808903765f0e59dbcc..eed3fa6b14b1e93f8d6571bba5675796 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3041,6 +3048,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3036,6 +3043,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Spigot end @@ -120,7 +120,7 @@ index 37632d0c41149e6269fead808903765f0e59dbcc..eed3fa6b14b1e93f8d6571bba5675796 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4930,4 +4945,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4925,4 +4940,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -4375,7 +4375,7 @@ index cd964e5cded6a74cb9dcf27b4134f944764062cd..5d15c491034e2bd9c136935f5b266e2d } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 6f12e342adf1a008709fd9a4fbbbe1da8ec31b83..5a578ab80853f8961afeec2aae76ed521f486430 100644 +index 9063f66b0497a3eb3893e307e685be692cc5c128..5944ded9de9fac56136b30858fbf8236f8f6f555 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -53,14 +53,33 @@ public class Spider extends Monster { diff --git a/patches/server/0052-Configurable-void-damage-height-and-damage.patch b/patches/server/0052-Configurable-void-damage-height-and-damage.patch index e31f6d0a8..eb22d84fd 100644 --- a/patches/server/0052-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0052-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 e664ca676c21b1c7fdc9df00797060053901e1f7..e5a66f96970446174d3a37f544611c9220faf91e 100644 +index 14318ffea715e7175f5d5d02a1fce84ff2f0ff80..ab1b3e634ab110e7f6cd98468e30b0b48367c25e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -886,7 +886,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -885,7 +885,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage diff --git a/patches/server/0053-Add-canSaveToDisk-to-Entity.patch b/patches/server/0053-Add-canSaveToDisk-to-Entity.patch index 1c1028999..43bd30a08 100644 --- a/patches/server/0053-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0053-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ 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 e5a66f96970446174d3a37f544611c9220faf91e..39bf307e3fd3c5333192e132b4cb56355444eacc 100644 +index ab1b3e634ab110e7f6cd98468e30b0b48367c25e..bc59457a526232f7b962d3fb575d0678524eba0a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -492,6 +492,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -491,6 +491,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch index 72926b934..8338b1296 100644 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 39bf307e3fd3c5333192e132b4cb56355444eacc..d39d3980235a022ee79b20eb5ed63fd63cd27522 100644 +index bc59457a526232f7b962d3fb575d0678524eba0a..8f8a17180f8010a62af9b59faf035ec10bd8967a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4436,6 +4436,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4431,6 +4431,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } diff --git a/patches/server/0084-Entities-can-use-portals-configuration.patch b/patches/server/0084-Entities-can-use-portals-configuration.patch index 647dbbb6e..550c92359 100644 --- a/patches/server/0084-Entities-can-use-portals-configuration.patch +++ b/patches/server/0084-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d39d3980235a022ee79b20eb5ed63fd63cd27522..9907c10091b0f02c43cfd2d4b0d0953b91cbb070 100644 +index 8f8a17180f8010a62af9b59faf035ec10bd8967a..77ada6859c6fcc6929be5da350ac0f483dd1ae00 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3142,7 +3142,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3137,7 +3137,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index d39d3980235a022ee79b20eb5ed63fd63cd27522..9907c10091b0f02c43cfd2d4b0d0953b if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3851,7 +3851,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3846,7 +3846,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { diff --git a/patches/server/0124-Movement-options-for-armor-stands.patch b/patches/server/0124-Movement-options-for-armor-stands.patch index 85f9bf338..062b6ae1d 100644 --- a/patches/server/0124-Movement-options-for-armor-stands.patch +++ b/patches/server/0124-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9907c10091b0f02c43cfd2d4b0d0953b91cbb070..da036cb4be83301a22c9f5af9c7f1439a9347799 100644 +index 77ada6859c6fcc6929be5da350ac0f483dd1ae00..63c195ece6a96940bc059251bb40ab9129196fe1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1863,7 +1863,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1858,7 +1858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } diff --git a/patches/server/0125-Fix-stuck-in-portals.patch b/patches/server/0125-Fix-stuck-in-portals.patch index b67ed1e11..3d584387a 100644 --- a/patches/server/0125-Fix-stuck-in-portals.patch +++ b/patches/server/0125-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index 3349082af08600894fbca04533f9ab4a9bf2dfd9..c63502c452c3804fafe31fe4daf2aed8 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index da036cb4be83301a22c9f5af9c7f1439a9347799..93c4f2ccf556a52e5bc951291f847f53d056c2b0 100644 +index 63c195ece6a96940bc059251bb40ab9129196fe1..1bf2960f34b120f258bc75bba6552c8b22ce9ed7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3139,12 +3139,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3134,12 +3134,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0145-Drowning-Settings.patch b/patches/server/0145-Drowning-Settings.patch index 1af0a0ffd..376c73c21 100644 --- a/patches/server/0145-Drowning-Settings.patch +++ b/patches/server/0145-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 93c4f2ccf556a52e5bc951291f847f53d056c2b0..f12ad902b6add41ffd9aff19081ce4abf998effb 100644 +index 1bf2960f34b120f258bc75bba6552c8b22ce9ed7..c45e7caa0ecbeaa1b37f722abba2884a6148ca20 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3388,7 +3388,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3383,7 +3383,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { diff --git a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch index c1a45a985..415dea862 100644 --- a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f8851857bdaeb1173124f43ee0eb3bd845789467..942359c28d9ced02b737b712f4e83e844424afc0 100644 +index c45e7caa0ecbeaa1b37f722abba2884a6148ca20..01bf0886d8196ec0a09e7b399636874bb8e6baa9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -495,6 +495,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return true; } diff --git a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch index fb89df9b6..44d1b2f1d 100644 --- a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1ed6072672d0585fa7609b9709b7c4b876a0f7fe..c9dafb8ca9267bea2449bb92ab5808af453ad2b1 100644 +index 01bf0886d8196ec0a09e7b399636874bb8e6baa9..e0a3c7e23ebf6b8994d82964dd38cc8342e81aa3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3213,7 +3213,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3208,7 +3208,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); diff --git a/patches/server/0260-Add-toggle-for-RNG-manipulation.patch b/patches/server/0260-Add-toggle-for-RNG-manipulation.patch index 8e300d86b..9cba5076f 100644 --- a/patches/server/0260-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0260-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c9dafb8ca9267bea2449bb92ab5808af453ad2b1..61aaf79bb631c37680d04168519a4e2e6af1ccc0 100644 +index e0a3c7e23ebf6b8994d82964dd38cc8342e81aa3..24365907591a7e35fff0bc64a1f00e6e907c3bb7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -593,7 +593,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -592,7 +592,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -33,7 +33,7 @@ index 88c238e492b1081d1a64a3b6f05d7baa17e5d8c9..dd7f2beabf0edad4143ac2365ac04a22 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 601452f16c7f41b609cc13026386d6f5d06ac92e..4e8c250a1c41c82dbfbae69e8d48b4604d63139b 100644 +index a1c95d2a69a8eaedefa90e689d5ce1636648fd1e..81a758847405ca2a4770da8120a9f837662bc3f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch index a32fc0583..30c1f5fad 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -1088,10 +1088,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e 100644 +index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1ffae4335 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -835,7 +835,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -834,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { @@ -1100,7 +1100,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -896,7 +896,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -895,7 +895,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1109,7 +1109,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d } public void setSharedFlagOnFire(boolean onFire) { -@@ -1115,7 +1115,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1114,7 +1114,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1118,7 +1118,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1124,7 +1124,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1123,7 +1123,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1127,7 +1127,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d return; } // Paper end -@@ -1145,8 +1145,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1144,8 +1144,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1138,7 +1138,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1165,7 +1165,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1164,7 +1164,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1147,7 +1147,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1303,7 +1303,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1302,7 +1302,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1156,7 +1156,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d } } // Paper start - detailed watchdog information -@@ -3180,7 +3180,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3175,7 +3175,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1165,7 +1165,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3198,7 +3198,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3193,7 +3193,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper // CraftBukkit end @@ -1174,7 +1174,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d } this.isInsidePortal = false; -@@ -3673,14 +3673,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3668,14 +3668,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1191,7 +1191,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3719,7 +3719,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3714,7 +3714,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1200,7 +1200,7 @@ index c2dd8373108d46bfdba2bc1fea7c60ce02a303e4..381ca3207b4d7b7ca3b30e0ba2d0834d // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3746,10 +3746,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3741,10 +3741,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); diff --git a/patches/server/0282-Fire-Immunity-API.patch b/patches/server/0282-Fire-Immunity-API.patch index 81bf22fbc..9f1e8ccb7 100644 --- a/patches/server/0282-Fire-Immunity-API.patch +++ b/patches/server/0282-Fire-Immunity-API.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e..51f83ee4f617c0dbe40ef9fa1d2f5e49e68e37bb 100644 +index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbcd58e6725 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -423,6 +423,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -422,6 +422,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S + private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean collidingWithWorldBorder; // Paper public boolean fixedPose = false; // Paper + public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1805,7 +1806,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1800,7 +1801,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e..51f83ee4f617c0dbe40ef9fa1d2f5e49 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2497,6 +2498,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2492,6 +2493,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 381ca3207b4d7b7ca3b30e0ba2d0834dd69d1d0e..51f83ee4f617c0dbe40ef9fa1d2f5e49 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2644,6 +2650,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2639,6 +2645,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end diff --git a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 82885415c..2ed346c9e 100644 --- a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9c7a84874df50ba675a6a480086336e0c137424f..b38b39bbf6560af368780a305559668a9d8f808b 100644 +index 1e2308ecde7bef57ac0b6192b8362cbcd58e6725..b21dd27e77632435ea53b48861fe16ee03d5ba06 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -910,6 +910,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -909,6 +909,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end @@ -17,7 +17,7 @@ index 9c7a84874df50ba675a6a480086336e0c137424f..b38b39bbf6560af368780a305559668a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52108909cbe0ea7faa0032f985898c41084cac10..0e25bfd7b345c3ba578191ce6656f041ffb9fd05 100644 +index 39726c991874b631545e0a06fa5b06383e7b7115..7234603063091d3999f71e5d7781c6468665c8f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig { From 0c417b77e7fc08cf8da86a1cb4dff21ec8b4ac2a Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 18 Dec 2023 23:54:36 -0800 Subject: [PATCH 025/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@47b2c18 Don't fire the drop event on player deaths (#10046) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d438aa67b..204f2bf8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 0b952981e6e96157d2cea8322c04c0f69965f2bf +paperCommit = 47b2c186d788795ca4e6262fb38ccebf6d33a62b org.gradle.caching = true org.gradle.parallel = true From 4d698b447c5d546d672057a9b014de3475cffc95 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 20 Dec 2023 04:51:40 -0800 Subject: [PATCH 026/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8c007d9 properly read and store sus effect duration (#10050) PaperMC/Paper@5385b21 [ci skip] Make test results viewable in-browser and downloadable (#10055) PaperMC/Paper@086ca61 Fix world border edge collision (#10053) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 204f2bf8a..5bb5d7236 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 47b2c186d788795ca4e6262fb38ccebf6d33a62b +paperCommit = 086ca616d8bd98dde4e4859d29ce89314494d90c org.gradle.caching = true org.gradle.parallel = true From 75a886f8bbf132362674d949374bd2fd4c7f1dd2 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 21 Dec 2023 17:32:35 -0800 Subject: [PATCH 027/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@45e01a2 Use correct max stack size in crafter (#10057) PaperMC/Paper@d11a588 Remove duplicate code in chunk tick iteration (#10056) PaperMC/Paper@b4c9e7e add missing Experimental annotations (#10012) --- gradle.properties | 2 +- .../0015-ItemStack-convenience-methods.patch | 4 ++-- patches/server/0263-Remove-Timings.patch | 20 ++++++++-------- .../server/0264-Remove-Mojang-Profiler.patch | 23 +++++++++---------- 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5bb5d7236..a06897b7e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 086ca616d8bd98dde4e4859d29ce89314494d90c +paperCommit = b4c9e7e5d40fd4a0a7fea270fd4ebb72b38fa0fc org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0015-ItemStack-convenience-methods.patch b/patches/api/0015-ItemStack-convenience-methods.patch index f510e8647..5d3b67614 100644 --- a/patches/api/0015-ItemStack-convenience-methods.patch +++ b/patches/api/0015-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 9f86ad25a57b3f6e6bda1ce657833837cb3b2292..7a8a2387d8ae5aae44325da9277e8284b4caa8c0 100644 +index f9af60356da4668cec8b24e73f5747ab82e35a91..b304ad1307cdd6785653b1eab9781e070fb14c5a 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11500,4 +11500,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11557,4 +11557,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } diff --git a/patches/server/0263-Remove-Timings.patch b/patches/server/0263-Remove-Timings.patch index 0058a1ad9..30bd76209 100644 --- a/patches/server/0263-Remove-Timings.patch +++ b/patches/server/0263-Remove-Timings.patch @@ -319,7 +319,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..c5a4a6a61c160e1cc29ee3c7d03debc0 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59fa5d4190 100644 +index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349badadbe04a2 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -293,10 +293,10 @@ public class ServerChunkCache extends ChunkSource { @@ -387,16 +387,14 @@ index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59 this.level.getProfiler().pop(); this.clearCache(); } -@@ -516,7 +516,7 @@ public class ServerChunkCache extends ChunkSource { - +@@ -517,13 +517,13 @@ public class ServerChunkCache extends ChunkSource { gameprofilerfiller.push("pollingChunks"); gameprofilerfiller.push("filteringLoadedChunks"); + // Paper - optimise chunk tick iteration - if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper -+ // if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur ++ //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - // Paper start - optimise chunk tick iteration - ChunkMap playerChunkMap = this.chunkMap; -@@ -556,7 +556,7 @@ public class ServerChunkCache extends ChunkSource { + // Paper - optimise chunk tick iteration if (this.level.getServer().tickRateManager().runsNormally()) { gameprofilerfiller.popPush("naturalSpawnCount"); @@ -405,7 +403,7 @@ index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59 int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning int naturalSpawnChunkCount = k; -@@ -581,7 +581,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -548,7 +548,7 @@ public class ServerChunkCache extends ChunkSource { spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end @@ -414,7 +412,7 @@ index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59 this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("spawnAndTick"); -@@ -688,19 +688,19 @@ public class ServerChunkCache extends ChunkSource { +@@ -657,19 +657,19 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -438,7 +436,7 @@ index 6e212f672579a3e08dc362c287be59ca5170d717..3c16bf34a63ca1391268da3678ea3b59 // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -714,7 +714,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -683,7 +683,7 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -631,7 +629,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 417dd74c422411e9f85694e3a1a1e31024f5b55e..823f513f19dd5399b84342e2a860c3637bbf0516 100644 +index a8c7534e50e89b281cc9dca8bacc3a00c219bcb0..bff8e4f1b6494ca9728a717199a051b3256cbd16 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch index 30c1f5fad..de7649fb4 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -476,7 +476,7 @@ index c5a4a6a61c160e1cc29ee3c7d03debc0f51ce204..710156f616afd0a9666b3eede98fb19c public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238d6a7ec22 100644 +index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620cf22988b 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -274,16 +274,16 @@ public class ServerChunkCache extends ChunkSource { @@ -542,7 +542,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 this.clearCache(); } -@@ -512,10 +512,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -512,17 +512,17 @@ public class ServerChunkCache extends ChunkSource { this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { @@ -553,11 +553,10 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 - gameprofilerfiller.push("filteringLoadedChunks"); + //gameprofilerfiller.push("pollingChunks"); // Purpur + //gameprofilerfiller.push("filteringLoadedChunks"); // Purpur - // if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur + // Paper - optimise chunk tick iteration + //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - // Paper start - optimise chunk tick iteration -@@ -555,7 +555,7 @@ public class ServerChunkCache extends ChunkSource { - // Paper end - optimise chunk tick iteration + // Paper - optimise chunk tick iteration if (this.level.getServer().tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); @@ -565,7 +564,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning -@@ -584,7 +584,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -551,7 +551,7 @@ public class ServerChunkCache extends ChunkSource { // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur this.lastSpawnState = spawnercreature_d; @@ -574,7 +573,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit // Paper start - optimise chunk tick iteration -@@ -690,7 +690,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -659,7 +659,7 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration // this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -583,7 +582,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 if (flag) { //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -698,7 +698,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -667,7 +667,7 @@ public class ServerChunkCache extends ChunkSource { } } @@ -592,7 +591,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 // Paper - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur // Paper start - optimise chunk tick iteration -@@ -716,8 +716,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -685,8 +685,8 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur // Paper - optimise chunk tick iteration @@ -603,7 +602,7 @@ index 3c16bf34a63ca1391268da3678ea3b59fa5d4190..1a22b58e2ce7a4e7034898e9fe24f238 } } -@@ -889,7 +889,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -858,7 +858,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -829,7 +828,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1093ef4e97d3bc84802d4fc96a6f95a5a24624b9..adbce4f4334c8857f0ab2fec910ba3883582256b 100644 +index f9c516da1cd706095f391e1f64bce581e8dcd676..5cb6f39830c6d4cf31ba011964edbcf9c4f8c75e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1239,7 +1239,7 @@ public class ServerPlayer extends Player { From c80f192aa29849bc69746a88a8efd3ee8a9fbaa8 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 22 Dec 2023 19:20:00 -0800 Subject: [PATCH 028/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1e7dd72 Remove 'fix Vanilla Minecart speed' patch (#10068) --- gradle.properties | 2 +- .../server/0038-Minecart-settings-and-WASD-controls.patch | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index a06897b7e..a641acaf8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = b4c9e7e5d40fd4a0a7fea270fd4ebb72b38fa0fc +paperCommit = 1e7dd72f15a1d13b43792367193547c656a16ab6 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0038-Minecart-settings-and-WASD-controls.patch b/patches/server/0038-Minecart-settings-and-WASD-controls.patch index 8f792a138..ff2930545 100644 --- a/patches/server/0038-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0038-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f862bd65b535fc9e289b31260af6990773336a5a..092808399b4450e2485d4cc3390a237ba809618a 100644 +index f9db41f311ad564380587bb2a0b69129e93ef87c..cf38a82b53d98aae4938fededcdad7d9110f3c40 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1111,6 +1111,7 @@ public class ServerPlayer extends Player { @@ -17,12 +17,12 @@ index f862bd65b535fc9e289b31260af6990773336a5a..092808399b4450e2485d4cc3390a237b if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 48b1cddfca671ac8bcb93a1b60518a4ee9e977e2..a52f8b583b84128b7d68bfced6c41e2c7554469c 100644 +index c906ca07509939a06b9aaf2da0dafb172830a638..d5e2797b392527de4027b20f29c73a16eb0d6af9 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { - private double flyingY = 0.949999988079071D; // Paper - restore vanilla precision - private double flyingZ = 0.949999988079071D; // Paper - restore vanilla precision + private double flyingY = 0.95; + private double flyingZ = 0.95; public double maxSpeed = 0.4D; + public double storedMaxSpeed; // Purpur // CraftBukkit end From 6aec125590f0c6a88858f1541244e95e82bce4cb Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 25 Dec 2023 05:45:38 -0800 Subject: [PATCH 029/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e7e1c8a Fix and add new scoreboard API (#10037) PaperMC/Paper@49f9f6f Add Registry#getKey (#10066) PaperMC/Paper@4adca3d Update to adventure 4.15 (#10045) PaperMC/Paper@ff7b9b0 Increase default custom payload channel size limit (#10006) --- gradle.properties | 2 +- patches/api/0003-Purpur-client-support.patch | 4 ++-- patches/api/0008-AFK-API.patch | 4 ++-- patches/api/0042-Debug-Marker-API.patch | 4 ++-- patches/api/0043-Add-death-screen-API.patch | 4 ++-- patches/server/0001-Rebrand.patch | 12 ++++++------ patches/server/0003-Purpur-client-support.patch | 14 +++++++------- patches/server/0010-AFK-API.patch | 6 +++--- .../0017-Alternative-Keepalive-Handling.patch | 10 +++++----- .../server/0206-Extended-OfflinePlayer-API.patch | 4 ++-- patches/server/0264-Remove-Mojang-Profiler.patch | 6 +++--- patches/server/0267-Debug-Marker-API.patch | 4 ++-- patches/server/0271-Add-death-screen-API.patch | 4 ++-- 13 files changed, 39 insertions(+), 39 deletions(-) diff --git a/gradle.properties b/gradle.properties index a641acaf8..af4e83284 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 1e7dd72f15a1d13b43792367193547c656a16ab6 +paperCommit = ff7b9b03805ae54af82135d66dea75b4e6761343 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0003-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch index f03656601..aea0fd5cd 100644 --- a/patches/api/0003-Purpur-client-support.patch +++ b/patches/api/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index ec937534f049ba25fb359c3e022ebe52ead6abef..a9eca07e4fe39221d3a675482b371a2da74a79d4 100644 +index c09f423fe2a029c933bd2697c8ff104fc4230cf0..0246fdcb873c50cf15581899b951ecb23b51d226 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3507,4 +3507,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3535,4 +3535,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0008-AFK-API.patch index 254d20dd3..800f35d1a 100644 --- a/patches/api/0008-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index a9eca07e4fe39221d3a675482b371a2da74a79d4..7ae6de0bdf01a3c94aa0287354ddfe4c838ff658 100644 +index 0246fdcb873c50cf15581899b951ecb23b51d226..8749e76035350908bbf2d8debd28ea5a2eb2d7ac 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3515,5 +3515,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3543,5 +3543,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0042-Debug-Marker-API.patch b/patches/api/0042-Debug-Marker-API.patch index 9330c5dd0..26fc43f14 100644 --- a/patches/api/0042-Debug-Marker-API.patch +++ b/patches/api/0042-Debug-Marker-API.patch @@ -260,10 +260,10 @@ index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5d /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 7ae6de0bdf01a3c94aa0287354ddfe4c838ff658..36a1952513dcc146c75856a6a5abc61acd1a3e0a 100644 +index 8749e76035350908bbf2d8debd28ea5a2eb2d7ac..ac9f3b74a2c0d2fadb52cc3f3e11d635f9088cf8 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3535,5 +3535,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3563,5 +3563,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0043-Add-death-screen-API.patch b/patches/api/0043-Add-death-screen-API.patch index d52845721..fa384e401 100644 --- a/patches/api/0043-Add-death-screen-API.patch +++ b/patches/api/0043-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 36a1952513dcc146c75856a6a5abc61acd1a3e0a..117e7eda393832cede8fd6443c9fdc794b59d17f 100644 +index ac9f3b74a2c0d2fadb52cc3f3e11d635f9088cf8..ee76f84c8e341e4939ed0082a6ed889b701533cb 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3605,5 +3605,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3633,5 +3633,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 0c6dd80c4..09d900872 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index b12b5a1e82a5ebf47135a3863a390a45a9d8d8ec..d7951a9b3819ddc1d42e10d40bdf57ae47666d89 100644 +index 58da26ad2f128ba0b66f86820f60853f4be352f0..12f4b3d753b56947e3759888ba3d98fa693c2a3f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -27,8 +27,12 @@ repositories { +@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { + val alsoShade: Configuration by configurations.creating dependencies { - extraRuntime(platform("net.kyori:adventure-bom:4.15.0-SNAPSHOT")) - implementation(project(":paper-api")) - implementation(project(":paper-mojangapi")) + // Purpur start @@ -23,7 +23,7 @@ index b12b5a1e82a5ebf47135a3863a390a45a9d8d8ec..d7951a9b3819ddc1d42e10d40bdf57ae // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -65,6 +69,10 @@ dependencies { +@@ -51,6 +55,10 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") @@ -34,7 +34,7 @@ index b12b5a1e82a5ebf47135a3863a390a45a9d8d8ec..d7951a9b3819ddc1d42e10d40bdf57ae testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -84,7 +92,7 @@ tasks.jar { +@@ -70,7 +78,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -43,7 +43,7 @@ index b12b5a1e82a5ebf47135a3863a390a45a9d8d8ec..d7951a9b3819ddc1d42e10d40bdf57ae "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -168,7 +176,7 @@ fun TaskContainer.registerRunTask( +@@ -154,7 +162,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index 64d5ed296..dc5ae85cf 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8efbbd379244e3ed54d4aba199037cc20ccd096a..86cf69de7a35f1ac8e2c56f988e74832332470d2 100644 +index d1f20a8a3ccea1f074624163eb96da023142a459..f45cd36ddc96d19f11bde4db1094d92ae4b13786 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { @@ -17,18 +17,18 @@ index 8efbbd379244e3ed54d4aba199037cc20ccd096a..86cf69de7a35f1ac8e2c56f988e74832 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 4a712f5fc4f0b4a4434ae808c989113bee8d8634..fb03498b355a86e156ed26ee903ba93c03365dcb 100644 +index d28d0ef6105ddeb562ddf31ae9088739856941fc..49aaa5147b9b904fa912c1811dc66d47d2e8dada 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - private volatile boolean suspendFlushingOnServerThread = false; +@@ -56,6 +56,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support + protected static final ResourceLocation PURPUR_CLIENT = new ResourceLocation("purpur", "client"); // Purpur public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit this.server = minecraftserver; -@@ -137,6 +138,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -138,6 +139,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex); this.disconnect("Invalid payload REGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } @@ -43,10 +43,10 @@ index 4a712f5fc4f0b4a4434ae808c989113bee8d8634..fb03498b355a86e156ed26ee903ba93c try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3be5e4df190bff0087c8450b16e4e37b07169040..bb18dc57689c1002ae2ee418f88d2b799beb6fc8 100644 +index fa5024752652b6daf53dbb9e23a9e86fea203fe2..729cdd9cf47fe8c46df9270202cc6a0d78b61052 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3303,4 +3303,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3327,4 +3327,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 0f7b7ffd8..ac3c7aa08 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d5940e560ea890f7f017ff9c37939a485be94540..f862bd65b535fc9e289b31260af6990773336a5a 100644 +index 40044a75ea071829daa5e531add542d2d24b7988..f9db41f311ad564380587bb2a0b69129e93ef87c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2233,8 +2233,68 @@ public class ServerPlayer extends Player { @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bb18dc57689c1002ae2ee418f88d2b799beb6fc8..72bd74a2fd6c9f7aec79ee7e4003cecbb4a3f95a 100644 +index 729cdd9cf47fe8c46df9270202cc6a0d78b61052..6d584e67ac7aac67a93fb369cb3b9f31cd198cb2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index bb18dc57689c1002ae2ee418f88d2b799beb6fc8..72bd74a2fd6c9f7aec79ee7e4003cecb for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3309,5 +3314,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3333,5 +3338,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0017-Alternative-Keepalive-Handling.patch b/patches/server/0017-Alternative-Keepalive-Handling.patch index 5b9f3072c..cd9f3544e 100644 --- a/patches/server/0017-Alternative-Keepalive-Handling.patch +++ b/patches/server/0017-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 13e064451c4d48e873061b6dea431a6b101de2ee..04b9f56134a24385468c16c61cf84327263dcb88 100644 +index 49aaa5147b9b904fa912c1811dc66d47d2e8dada..97914d9c0d8f9ad58fbc79db2afd9cba57bf93b6 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -15,8 +15,8 @@ index 13e064451c4d48e873061b6dea431a6b101de2ee..04b9f56134a24385468c16c61cf84327 + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur private int latency; private volatile boolean suspendFlushingOnServerThread = false; - private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit -@@ -91,6 +92,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks +@@ -92,6 +93,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -33,7 +33,7 @@ index 13e064451c4d48e873061b6dea431a6b101de2ee..04b9f56134a24385468c16c61cf84327 //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); -@@ -204,6 +215,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -217,6 +228,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -56,7 +56,7 @@ index 13e064451c4d48e873061b6dea431a6b101de2ee..04b9f56134a24385468c16c61cf84327 if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 34afed28faeb56352b48faf8078a5fb07912eb5e..ad239ba9259c5a63b40261ebc44224893496b47d 100644 +index 9c5bba0ae119f8d42274455e322530ceb5f67d9b..a14cf3a5dc2ba265de5e400404afcbd9faa3f25a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -198,6 +198,11 @@ public class PurpurConfig { diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch index 5539b215b..afa752fbf 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a7a702ccb7cab7d68758078927544f2928a5ea62..791f030b4912b46ef70f3099eb3537515464c54b 100644 +index 0b20bb986ee71a57a1c01c85ea7ab1292c9bcc52..df3953b541fc85985ded4a89e03bf5d840f7ed6d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2575,6 +2575,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2599,6 +2599,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch index de7649fb4..99aeeef75 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -861,10 +861,10 @@ index f9c516da1cd706095f391e1f64bce581e8dcd676..5cb6f39830c6d4cf31ba011964edbcf9 this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 470b34ace7dc356ce59af11962f232466685eb0a..7372713dc195582f9cc994063541a45988b6b457 100644 +index 97914d9c0d8f9ad58fbc79db2afd9cba57bf93b6..da499e0b21eba40d24d95047e3a9220567d4bae7 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -209,7 +209,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -222,7 +222,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } protected void keepConnectionAlive() { @@ -873,7 +873,7 @@ index 470b34ace7dc356ce59af11962f232466685eb0a..7372713dc195582f9cc994063541a459 // Paper Start - give clients a longer time to respond to pings as per pre 1.12.2 timings // This should effectively place the keepalive handling back to "as it was" before 1.12.2 long currentTime = Util.getMillis(); -@@ -245,7 +245,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -258,7 +258,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } // Paper end diff --git a/patches/server/0267-Debug-Marker-API.patch b/patches/server/0267-Debug-Marker-API.patch index 5f1be1ed8..850a5819d 100644 --- a/patches/server/0267-Debug-Marker-API.patch +++ b/patches/server/0267-Debug-Marker-API.patch @@ -99,10 +99,10 @@ index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa9602436 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 791f030b4912b46ef70f3099eb3537515464c54b..dc156ee88786cdb150850cb1adfc4b10b8441b85 100644 +index df3953b541fc85985ded4a89e03bf5d840f7ed6d..c15d14067e9061172ab0b07056ef8b6aa971790c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3355,5 +3355,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3379,5 +3379,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0271-Add-death-screen-API.patch b/patches/server/0271-Add-death-screen-API.patch index dbbf16cc9..1a2b8a30e 100644 --- a/patches/server/0271-Add-death-screen-API.patch +++ b/patches/server/0271-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index dc156ee88786cdb150850cb1adfc4b10b8441b85..342a41804c8a195ba2e185d3ed08e7fc9c25df50 100644 +index c15d14067e9061172ab0b07056ef8b6aa971790c..1b0c44b7d3c0cd4ba4c9de8b63d94a570af2a0fa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3393,5 +3393,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3417,5 +3417,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } From 10685bb957059b70c15d586f017facc8b13822d6 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 25 Dec 2023 18:45:01 -0800 Subject: [PATCH 030/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1cda66e Hotfix Entity isInRain reobf issue PaperMC/Paper@61768e0 [ci skip] Remove no longer needed mappings change PaperMC/Paper@e035fd7 Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@c215ce1 [ci skip] cleanup patch diff from last commit --- gradle.properties | 2 +- .../0011-LivingEntity-safeFallDistance.patch | 4 ++-- .../0018-LivingEntity-broadcastItemBreak.patch | 4 ++-- ...0028-API-for-any-mob-to-burn-daylight.patch | 4 ++-- .../api/0039-Add-local-difficulty-api.patch | 4 ++-- patches/api/0042-Debug-Marker-API.patch | 4 ++-- patches/server/0001-Rebrand.patch | 4 ++-- .../server/0003-Purpur-client-support.patch | 6 +++--- patches/server/0010-AFK-API.patch | 6 +++--- .../0013-LivingEntity-safeFallDistance.patch | 8 ++++---- ...8-Add-allow-water-in-end-world-option.patch | 6 +++--- ...eleport-to-spawn-if-outside-world-bor.patch | 6 +++--- .../0085-LivingEntity-broadcastItemBreak.patch | 4 ++-- ...MC-Configurable-disable-give-dropping.patch | 6 +++--- patches/server/0115-Implement-TPSBar.patch | 6 +++--- ...0171-API-for-any-mob-to-burn-daylight.patch | 8 ++++---- patches/server/0194-Add-compass-command.patch | 8 ++++---- ...nfig-for-mob-last-hurt-by-player-time.patch | 6 +++--- .../server/0259-Add-local-difficulty-api.patch | 4 ++-- patches/server/0263-Remove-Timings.patch | 14 +++++++------- .../server/0264-Remove-Mojang-Profiler.patch | 18 +++++++++--------- patches/server/0267-Debug-Marker-API.patch | 8 ++++---- patches/server/0271-Add-death-screen-API.patch | 4 ++-- ...272-Implement-ram-and-rambar-commands.patch | 6 +++--- 24 files changed, 75 insertions(+), 75 deletions(-) diff --git a/gradle.properties b/gradle.properties index af4e83284..196dbdad1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = ff7b9b03805ae54af82135d66dea75b4e6761343 +paperCommit = c215ce185861af0fd123a91a79ad8907d9a7951a org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0011-LivingEntity-safeFallDistance.patch b/patches/api/0011-LivingEntity-safeFallDistance.patch index 9c7429c12..4dc0137f2 100644 --- a/patches/api/0011-LivingEntity-safeFallDistance.patch +++ b/patches/api/0011-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index a599ed2795ba1baf2cbb465d1c7145580c27e1ea..539d16791673cfc64231995f7db3176e9332a029 100644 +index e68c71047b2bc1b456c380db25b3ff376852b4a9..ddcfa6a4f678801bb09716c0c7bcc06e37add26d 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1243,4 +1243,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1270,4 +1270,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0018-LivingEntity-broadcastItemBreak.patch b/patches/api/0018-LivingEntity-broadcastItemBreak.patch index 6edf0bd41..2aee7393b 100644 --- a/patches/api/0018-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0018-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 539d16791673cfc64231995f7db3176e9332a029..cadee82cfd27ad48b2bb9e98d1eabb89ce0b59d1 100644 +index ddcfa6a4f678801bb09716c0c7bcc06e37add26d..880b2b045e34eb52a2efcaea4ac4bdfade4c353a 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1258,5 +1258,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1285,5 +1285,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0028-API-for-any-mob-to-burn-daylight.patch b/patches/api/0028-API-for-any-mob-to-burn-daylight.patch index a6ccec6fb..8042a33b2 100644 --- a/patches/api/0028-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0028-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 566c74756c66db859a4f738a7716a61d012c6df1..c20f29e1ddfd1d73df19f6d6f730fa23 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index cadee82cfd27ad48b2bb9e98d1eabb89ce0b59d1..298acbfb93663e40e627f6a47d51fd87a1551feb 100644 +index 880b2b045e34eb52a2efcaea4ac4bdfade4c353a..6b025794c34e1b4b47b4b5ae1375705bdedad078 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1265,5 +1265,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1292,5 +1292,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0039-Add-local-difficulty-api.patch b/patches/api/0039-Add-local-difficulty-api.patch index 9d7fc0257..a99a6a3d1 100644 --- a/patches/api/0039-Add-local-difficulty-api.patch +++ b/patches/api/0039-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 567a36a4887da8994c9170e2885aa8cc357efa0c..26fe07a4429e40da1ce4a0433ae184f594ddb473 100644 +index d3081d4445af73c2c7b23c5fc60861f184ac808e..1173081896ca95ab001175ddf6e269ab5e791896 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4235,6 +4235,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4174,6 +4174,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0042-Debug-Marker-API.patch b/patches/api/0042-Debug-Marker-API.patch index 26fc43f14..009c3eec7 100644 --- a/patches/api/0042-Debug-Marker-API.patch +++ b/patches/api/0042-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index c001488119c64f9ee2babce29a8ff9f86aec9bfb..529fb1beadefc79ce6bf5755d5223301 // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 26fe07a4429e40da1ce4a0433ae184f594ddb473..405d60bd2c99ba741d2614b16f4bda5da48a0387 100644 +index 1173081896ca95ab001175ddf6e269ab5e791896..e4f0d5ee85371374453b837947c7f84c7731128c 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4243,6 +4243,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4182,6 +4182,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 09d900872..68e911c0f 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -237,10 +237,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 25ffc92c3d6055285a64d9fe36c0054228fe81dd..538f385404450132d295707e3bfe19028b05ad9c 100644 +index 1f1ef68a9a449a4a90c284f34a397ab4b6d905f6..1b75b8286f6203a7268746b5a487d6f089405127 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -916,7 +916,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -915,7 +915,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return EntityCategory.WATER; } diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index dc5ae85cf..2fb3a5bfb 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d1f20a8a3ccea1f074624163eb96da023142a459..f45cd36ddc96d19f11bde4db1094d92ae4b13786 100644 +index 0eb3384df396508c3d26d1e155cd0e6d64251346..393edc13408ed8b3aad36121891eddf75ea321ff 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { @@ -43,10 +43,10 @@ index d28d0ef6105ddeb562ddf31ae9088739856941fc..49aaa5147b9b904fa912c1811dc66d47 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index fa5024752652b6daf53dbb9e23a9e86fea203fe2..729cdd9cf47fe8c46df9270202cc6a0d78b61052 100644 +index c54df6e4aed9b7b46a41af4108a8e90d96c1fe1f..3bf86f27beada77d0abf6b91a8fc51e19cc3d787 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3327,4 +3327,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3326,4 +3326,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index ac3c7aa08..a2b380dcc 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 40044a75ea071829daa5e531add542d2d24b7988..f9db41f311ad564380587bb2a0b69129e93ef87c 100644 +index f709667d2efab5f7dac22bb6e4b0bf32917f71e4..387e2423d820e4df1d226ce6159a361d6a808fd9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2233,8 +2233,68 @@ public class ServerPlayer extends Player { @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 729cdd9cf47fe8c46df9270202cc6a0d78b61052..6d584e67ac7aac67a93fb369cb3b9f31cd198cb2 100644 +index 3bf86f27beada77d0abf6b91a8fc51e19cc3d787..5f8b485ed8e0444c8c7e2a438cb65113d35bec68 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index 729cdd9cf47fe8c46df9270202cc6a0d78b61052..6d584e67ac7aac67a93fb369cb3b9f31 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3333,5 +3338,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3332,5 +3337,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/server/0013-LivingEntity-safeFallDistance.patch index 49462de35..4c56e241d 100644 --- a/patches/server/0013-LivingEntity-safeFallDistance.patch +++ b/patches/server/0013-LivingEntity-safeFallDistance.patch @@ -5,11 +5,11 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 23a59cf45f89f3d4d9ac98aada26a9027c2485f0..a8d09f76361cc3146aaeba72b7338049b30eb2cb 100644 +index b8375bba69aa8e46db334a1094a071665d9c1a8b..bcdf09cdc8bd54068440237f0a4a1039c8f0750a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - private boolean skipDropExperience; + protected boolean skipDropExperience; // CraftBukkit start public int expToDrop; + public float safeFallDistance = 3.0F; // Purpur @@ -69,10 +69,10 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 538f385404450132d295707e3bfe19028b05ad9c..5d2d4f765e7720c3e0b41d31182e3a12cc78ef54 100644 +index 1b75b8286f6203a7268746b5a487d6f089405127..a79273b50233cbabad37392b57e6236ad78a981a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1119,4 +1119,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1118,4 +1118,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0068-Add-allow-water-in-end-world-option.patch b/patches/server/0068-Add-allow-water-in-end-world-option.patch index 0d7f7fd1d..e9c394fcc 100644 --- a/patches/server/0068-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0068-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index aa0f09a18ea781e027ea70928b30d3e93061120f..5cb8f1e13f4889792395d6b498c0ade2 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 d89e36f90c7d84eaa627ef1dd9002ea0a03d8a79..4fc9331cda9063d6f3f13572efd7182327c7a9e4 100644 +index e4165be5d645976f4284937b8b1e05fc8a7717d0..8dfad69534dd4d191c7292684e300b5f23a1dc63 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1900,4 +1900,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1894,4 +1894,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } // Paper end - notify observers even if grow failed @@ -68,7 +68,7 @@ index 4ab6997dad5b112f5105f786a6cee78c6c5667e8..bbf19716d84a0d7e71a11559ef4f6259 } else { world.setBlockAndUpdate(pos, IceBlock.meltsInto()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d98e16bc47d3bc458281956bf538f4a37bd0f4b7..387da71594b75a43100790e8e8d69d9246598537 100644 +index 2e78d67201e66c1f3fd1f45ed625e682ea074848..de202a20cdc133d68fb44c56ee017cca153e1cf8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -244,6 +244,11 @@ public class PurpurConfig { diff --git a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index b2fd0dc4e..4aedb8e9b 100644 --- a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0071-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 092808399b4450e2485d4cc3390a237ba809618a..f1260f9d4bd386c1bfddf977dc47a41082bce4f2 100644 +index e2e25a4ac86156f0915a0b9886a6f62b2812920b..47cc6799f0d48debe4b63280a6814eadf9aecb7d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2846,4 +2846,26 @@ public class ServerPlayer extends Player { +@@ -2847,4 +2847,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index 092808399b4450e2485d4cc3390a237ba809618a..f1260f9d4bd386c1bfddf977dc47a410 + // 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 411d204edd6ea805c0566c6d7ac76dbdd4428309..8148c9596a17396d37b820cac40f50c2073a0c00 100644 +index 83e74527b730a644a69f582b218dbc8d4f35ee61..1ba0b1975135eb29d59f1153e9f5c5019e488bd8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0085-LivingEntity-broadcastItemBreak.patch b/patches/server/0085-LivingEntity-broadcastItemBreak.patch index 2a9252488..66e048ff0 100644 --- a/patches/server/0085-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0085-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 5d2d4f765e7720c3e0b41d31182e3a12cc78ef54..c5d245649ce3b609f3de360dc9569af410a1de80 100644 +index a79273b50233cbabad37392b57e6236ad78a981a..12c7505c2ce562b3188c079952e57ae1fab5268b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1130,5 +1130,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1129,5 +1129,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0108-EMC-Configurable-disable-give-dropping.patch b/patches/server/0108-EMC-Configurable-disable-give-dropping.patch index f9d7076a4..d78d867a1 100644 --- a/patches/server/0108-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0108-EMC-Configurable-disable-give-dropping.patch @@ -8,7 +8,7 @@ purpur.yml to disable the /give command from dropping items on the floor when a player's inventory is full. diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java -index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe678ae86c 100644 +index 1b459a8ee8a6bc039e742d65796bc76660a1c765..599172b994d75484f7c7e0ce6d3d3d771c1c44d0 100644 --- a/src/main/java/net/minecraft/server/commands/GiveCommand.java +++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java @@ -59,6 +59,7 @@ public class GiveCommand { @@ -18,9 +18,9 @@ index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemstack1.isEmpty()) { itemstack1.setCount(1); - entityitem = entityplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event + entityitem = entityplayer.drop(itemstack1, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index de1a9b08946005d1235264c7658b51bbdc2c47c2..aaf96399f937fbca30f1ce5d64be4af265a4ed29 100644 +index 8f98f665ec20c2df23a6f8bd891c502aba9a6ada..65c31389566007a11934eff92162a4c410a25213 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,6 +209,11 @@ public class PurpurConfig { diff --git a/patches/server/0115-Implement-TPSBar.patch b/patches/server/0115-Implement-TPSBar.patch index a502d3603..5b206f85f 100644 --- a/patches/server/0115-Implement-TPSBar.patch +++ b/patches/server/0115-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index e5aa98430309eef04770fb68fd8314ac97fde167..cd8e6eaf4148f87e449e90b84a6c2aaa } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 16058e98dbe426791637682316cf0b11160d30f1..3349082af08600894fbca04533f9ab4a9bf2dfd9 100644 +index 82a551caa75fbd50d75a5109cf7e897e829acf19..448394f5ff2d55b099549b49b77114483f0e58bd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -282,6 +282,7 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 16058e98dbe426791637682316cf0b11160d30f1..3349082af08600894fbca04533f9ab4a } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2876,5 +2879,13 @@ public class ServerPlayer extends Player { +@@ -2877,5 +2880,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -103,7 +103,7 @@ index e46fcb5c8bf1047e3f330fd525166aee5f0b646b..61a34f3e49b21254984011bc470d72c8 entityplayer.awardStat(Stats.LEAVE_GAME); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index aaf96399f937fbca30f1ce5d64be4af265a4ed29..61e3bce901bdbf111ffc06521b0e6d5369fce051 100644 +index 65c31389566007a11934eff92162a4c410a25213..57734b187e3a66d0d244db2f7968256884957ff2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,7 @@ public class PurpurConfig { diff --git a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch index 415dea862..e9ca01e96 100644 --- a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0171-API-for-any-mob-to-burn-daylight.patch @@ -32,7 +32,7 @@ index c45e7caa0ecbeaa1b37f722abba2884a6148ca20..01bf0886d8196ec0a09e7b399636874b return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f1f225615dd4a325ea29552f58fb9a6ff982a943..36d4d360c1f60d884f067391b7790e001010b45d 100644 +index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadcef107a11 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -353,7 +353,7 @@ index 52a576a16bfeb7dc6ec97280f9a5e0f408d71e46..9b1ae2fa1681f1212b6a09d5b10b1663 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fb80b7e2edebf915a98ef608d5b2e27a6c9ae79c..1ac0f0faab8d6a22429f16ea745640bba65ef4ab 100644 +index 98d2ef7870c921093a9dbaf0f4de77d86ef81d44..bfd8f6d85272f3ecbb0f7fc5fc92d2055205c0e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -369,10 +369,10 @@ index fb80b7e2edebf915a98ef608d5b2e27a6c9ae79c..1ac0f0faab8d6a22429f16ea745640bb Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index c5d245649ce3b609f3de360dc9569af410a1de80..741207b28a57a92d12d02ce3179eb50482ef0c43 100644 +index 12c7505c2ce562b3188c079952e57ae1fab5268b..10ca0fdb5b92cc4f1d346540c9129d5c55732985 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1136,5 +1136,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1135,5 +1135,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0194-Add-compass-command.patch b/patches/server/0194-Add-compass-command.patch index 3f2789d0b..0489a835c 100644 --- a/patches/server/0194-Add-compass-command.patch +++ b/patches/server/0194-Add-compass-command.patch @@ -17,7 +17,7 @@ index bf51f5e414ab45e33efa4057ab251120290b43e1..428dd75450bdd5daf902a1fbaca7031a if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 95853c833ba47a2c136ba6d237dcdcee09fb8de8..074e718e4081d3e37f774613e6929224f28a3e26 100644 +index 852d773149782f052da7e1937d955ba1d19c7f20..fd44606db9581ec93487c51a955b58cb7f3066da 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -283,6 +283,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index 95853c833ba47a2c136ba6d237dcdcee09fb8de8..074e718e4081d3e37f774613e6929224 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2901,5 +2904,13 @@ public class ServerPlayer extends Player { +@@ -2902,5 +2905,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -59,7 +59,7 @@ index 95853c833ba47a2c136ba6d237dcdcee09fb8de8..074e718e4081d3e37f774613e6929224 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c405b3a8e67 100644 +index 6aa225252d1026979fe88c273652e3d9ebdeb5f3..477639dddb7c5ae0c9cc45a6eca73d82e486409b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -255,6 +255,11 @@ public class PurpurConfig { @@ -89,7 +89,7 @@ index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c40 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 602f8111576de65d6059704cf5d81cba38172236..78381e82ddbfc78ed458908053752f48fee034b0 100644 +index f78716c6d8635c21dacb216760a5ba0ebc33b73f..cc5e11524928bdec5402263eb68a51128b0503df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch index 83f1a740c..ec1f5fee2 100644 --- a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ccf94ec8c0fcff5d75365274f662ff24b3ade75d..0061b6214f87f61f0bb4ddeffed8f719554a6b43 100644 +index df60df664e2fe65f752752bcd084fa68795d4a23..b0db740c43c621daf3d5b6ce7efdd414195c1cd6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1533,13 +1533,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -25,10 +25,10 @@ index ccf94ec8c0fcff5d75365274f662ff24b3ade75d..0061b6214f87f61f0bb4ddeffed8f719 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 741207b28a57a92d12d02ce3179eb50482ef0c43..5e8c2e77ad615aa3b2bfa3414834dca5db024739 100644 +index 10ca0fdb5b92cc4f1d346540c9129d5c55732985..a2d1c22e778aa4c3c44c3a1a604c1656cc86f0da 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -452,7 +452,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; diff --git a/patches/server/0259-Add-local-difficulty-api.patch b/patches/server/0259-Add-local-difficulty-api.patch index 0ac1d7118..a2e4a93f3 100644 --- a/patches/server/0259-Add-local-difficulty-api.patch +++ b/patches/server/0259-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index e1fad381b861471a17529c246bb8a4a9c7646420..648be304b99793fcec850ee6f3965baf1cd679d8 100644 +index 03eab4e7c2648c722c25387ec9353e8dafc09618..96017efa7ab5b43bdd851ce1e78566306254d4a0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2360,6 +2360,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2408,6 +2408,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0263-Remove-Timings.patch b/patches/server/0263-Remove-Timings.patch index 30bd76209..232140ec6 100644 --- a/patches/server/0263-Remove-Timings.patch +++ b/patches/server/0263-Remove-Timings.patch @@ -236,10 +236,10 @@ index 8a4037fd2bd679b9952213e6bcd3e96ce589e8c6..0d3d62620659d7897d4ad92147255a99 @Override diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index caa73632aee15583c6b6ed12a668c8f49b794708..c5a4a6a61c160e1cc29ee3c7d03debc0f51ce204 100644 +index d9cd497bc1b654030ff1a597f038b6a881df9f6b..c2f3f9ea436faed6bb52369136384e086aa1237e 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -548,15 +548,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -547,15 +547,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider protected void tick(BooleanSupplier shouldKeepTicking) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -259,7 +259,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..c5a4a6a61c160e1cc29ee3c7d03debc0 } gameprofilerfiller.pop(); -@@ -1156,24 +1156,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1155,24 +1155,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - optimised tracker private final void processTrackQueue() { @@ -288,7 +288,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..c5a4a6a61c160e1cc29ee3c7d03debc0 } } // Paper end - optimised tracker -@@ -1188,7 +1188,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1187,7 +1187,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -297,7 +297,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..c5a4a6a61c160e1cc29ee3c7d03debc0 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1213,17 +1213,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1212,17 +1212,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -731,7 +731,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index aec194669dbb13563a83abb64df2f0b64cc64cc7..214a18320d450fc318593b147e0010c42977d421 100644 +index 538cd41c655b6995ea9cc72cf3471a59f3461902..c5486e8c4136dac3d2040841027cc14eecbae6ff 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1311,15 +1311,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -753,7 +753,7 @@ index aec194669dbb13563a83abb64df2f0b64cc64cc7..214a18320d450fc318593b147e0010c4 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1354,7 +1354,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0264-Remove-Mojang-Profiler.patch index 99aeeef75..30b9c9f7f 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0264-Remove-Mojang-Profiler.patch @@ -447,10 +447,10 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1df } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index c5a4a6a61c160e1cc29ee3c7d03debc0f51ce204..710156f616afd0a9666b3eede98fb19c0f30e777 100644 +index c2f3f9ea436faed6bb52369136384e086aa1237e..2cc249944649ce188584718be2354efbf95f3233 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -546,20 +546,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -545,20 +545,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -828,7 +828,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f9c516da1cd706095f391e1f64bce581e8dcd676..5cb6f39830c6d4cf31ba011964edbcf9c4f8c75e 100644 +index 2b8f739cb69a67a2926b74fa36ad94f667b836dd..b44dbc0b989658c82aa68e83b094e295dc4e5fe5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1239,7 +1239,7 @@ public class ServerPlayer extends Player { @@ -1213,7 +1213,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0061b6214f87f61f0bb4ddeffed8f719554a6b43..3af72be980ed6cab704eedadeb9a9577aca25fc1 100644 +index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d47dd03c1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1808,7 +1808,7 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..17abd085b3faf88e10a44a6c98af9968 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468a8ef6736 100644 +index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a7688803e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1308,9 +1308,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1823,7 +1823,7 @@ index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468 //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1357,7 +1357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1351,7 +1351,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1832,7 +1832,7 @@ index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468 this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1567,7 +1567,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1561,7 +1561,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1841,7 +1841,7 @@ index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1586,7 +1586,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1580,7 +1580,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1850,7 +1850,7 @@ index 214a18320d450fc318593b147e0010c42977d421..8e411a60cdd39ba1a365b29a6dbbb468 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1845,6 +1845,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1839,6 +1839,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0267-Debug-Marker-API.patch b/patches/server/0267-Debug-Marker-API.patch index 850a5819d..8b6fe2410 100644 --- a/patches/server/0267-Debug-Marker-API.patch +++ b/patches/server/0267-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index 966f8e764c2ad42cdfc84b5037081121937598b6..741a3cf8df218635cb5430db8d2c6129 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa96024361b10f131 100644 +index 96017efa7ab5b43bdd851ce1e78566306254d4a0..7321a8dfc59ccb1ae0b7e2d1ce23cb1a5cfbe029 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2364,6 +2364,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2412,6 +2412,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 648be304b99793fcec850ee6f3965baf1cd679d8..14df9ede813b64f87d97a1ffa9602436 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index df3953b541fc85985ded4a89e03bf5d840f7ed6d..c15d14067e9061172ab0b07056ef8b6aa971790c 100644 +index 55d07278e635f9934418ac5c4e679e99b0b5dbd1..0081992c78ad800c7caeb402e90d6e93d3a2d28e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3379,5 +3379,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3378,5 +3378,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0271-Add-death-screen-API.patch b/patches/server/0271-Add-death-screen-API.patch index 1a2b8a30e..7e6369b13 100644 --- a/patches/server/0271-Add-death-screen-API.patch +++ b/patches/server/0271-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c15d14067e9061172ab0b07056ef8b6aa971790c..1b0c44b7d3c0cd4ba4c9de8b63d94a570af2a0fa 100644 +index 0081992c78ad800c7caeb402e90d6e93d3a2d28e..df4f39d38f1ff4a5e499e227d93d98f531a01419 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3417,5 +3417,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3416,5 +3416,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0272-Implement-ram-and-rambar-commands.patch b/patches/server/0272-Implement-ram-and-rambar-commands.patch index 911b0cef1..7f4064a92 100644 --- a/patches/server/0272-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0272-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index c1202a56b560269e132eafd8bb12383473d4d33e..815af29d1aae935264a400bdb9c3d676 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index adbce4f4334c8857f0ab2fec910ba3883582256b..07c6e9c5a32ef7155525924d1a0e433943787819 100644 +index b44dbc0b989658c82aa68e83b094e295dc4e5fe5..8e36b261a4f8ea82bab778d3abd3326aa347d19a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -284,6 +284,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index adbce4f4334c8857f0ab2fec910ba3883582256b..07c6e9c5a32ef7155525924d1a0e4339 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2913,5 +2916,13 @@ public class ServerPlayer extends Player { +@@ -2914,5 +2917,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } @@ -60,7 +60,7 @@ index adbce4f4334c8857f0ab2fec910ba3883582256b..07c6e9c5a32ef7155525924d1a0e4339 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ed9b2f0b55229848894d9d6b401d050cb031b893..568bb53e91dda4804cd328a81ba12ce735c52603 100644 +index 40922e69274de6bc3da6f74b0216a816a1fb7722..128eab7246bf263e302cbeb5e4c359a41dd2cd3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { From 6f17a3da52ca57ed1647593b8b37e4306fff8b70 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 25 Dec 2023 20:15:34 -0800 Subject: [PATCH 031/148] add back pufferfish patches \o/ --- .../api/0001-Pufferfish-API-Changes.patch | 10 +- .../0002-Fix-pufferfish-issues.patch} | 2 +- ...s.patch => 0003-Purpur-config-files.patch} | 0 ....patch => 0004-Build-System-Changes.patch} | 4 +- ...patch => 0005-Purpur-client-support.patch} | 0 ...s.patch => 0006-Default-permissions.patch} | 0 ...005-Ridables.patch => 0007-Ridables.patch} | 0 ...ch => 0008-Allow-inventory-resizing.patch} | 0 ...7-Llama-API.patch => 0009-Llama-API.patch} | 0 ...{0008-AFK-API.patch => 0010-AFK-API.patch} | 0 ...atch => 0011-Bring-back-server-name.patch} | 0 ...t.patch => 0012-ExecuteCommandEvent.patch} | 0 ... 0013-LivingEntity-safeFallDistance.patch} | 0 ...old.patch => 0014-Lagging-threshold.patch} | 0 ...15-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 ...4-Anvil-API.patch => 0016-Anvil-API.patch} | 0 ... 0017-ItemStack-convenience-methods.patch} | 0 ...d-to-crystals-and-crystals-shoot-ph.patch} | 0 ...atch => 0019-ChatColor-conveniences.patch} | 0 ...020-LivingEntity-broadcastItemBreak.patch} | 0 ...atch => 0021-Item-entity-immunities.patch} | 0 ...able-zombie-aggressiveness-towards-.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...lf-API.patch => 0024-Rabid-Wolf-API.patch} | 0 ...tch => 0025-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 0 ...027-Add-EntityTeleportHinderedEvent.patch} | 0 ...tment-target-for-bows-and-crossbows.patch} | 0 ...> 0029-Iron-golem-poppy-calms-anger.patch} | 0 ...30-API-for-any-mob-to-burn-daylight.patch} | 0 ...d-back-player-spawned-endermite-API.patch} | 0 ... 0032-Fix-default-permission-system.patch} | 0 ...oner-API.patch => 0033-Summoner-API.patch} | 0 ...034-Clean-up-version-command-output.patch} | 0 ... => 0035-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ....patch => 0037-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0038-Grindstone-API.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ... => 0040-Lobotomize-stuck-villagers.patch} | 0 ...ch => 0041-Add-local-difficulty-api.patch} | 0 ...imings.patch => 0042-Remove-Timings.patch} | 0 ...d-Bee-API.patch => 0043-Add-Bee-API.patch} | 0 ...-API.patch => 0044-Debug-Marker-API.patch} | 0 ....patch => 0045-Add-death-screen-API.patch} | 0 ...046-Add-item-packet-serialize-event.patch} | 0 ...uage-API.patch => 0047-Language-API.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...API.patch => 0049-Fire-Immunity-API.patch} | 0 ....patch => 0050-Added-goat-ram-event.patch} | 0 ....patch => 0051-Add-PreExplodeEvents.patch} | 0 ...ee-API.patch => 0052-Stored-Bee-API.patch} | 0 ...-API.patch => 0053-Explorer-Map-API.patch} | 0 ...I.patch => 0054-Add-hover-lines-API.patch} | 0 .../0001-Pufferfish-Server-Changes.patch | 266 ++++++++--------- ...{0001-Rebrand.patch => 0002-Rebrand.patch} | 56 ++-- .../0003-Fix-pufferfish-issues.patch} | 16 +- ...s.patch => 0004-Purpur-config-files.patch} | 20 +- ...patch => 0005-Purpur-client-support.patch} | 0 ....patch => 0006-Fix-decompile-errors.patch} | 0 ...0007-Component-related-conveniences.patch} | 6 +- ...006-Ridables.patch => 0008-Ridables.patch} | 143 ++++----- ...Configurable-entity-base-attributes.patch} | 30 +- ...0010-Barrels-and-enderchests-6-rows.patch} | 2 +- ...9-Llama-API.patch => 0011-Llama-API.patch} | 0 ...{0010-AFK-API.patch => 0012-AFK-API.patch} | 12 +- ...atch => 0013-Bring-back-server-name.patch} | 4 +- ...> 0014-Configurable-server-mod-name.patch} | 10 +- ... 0015-LivingEntity-safeFallDistance.patch} | 10 +- ...old.patch => 0016-Lagging-threshold.patch} | 8 +- ...17-PlayerSetSpawnerTypeWithEggEvent.patch} | 6 +- ...6-Anvil-API.patch => 0018-Anvil-API.patch} | 0 ...0019-Alternative-Keepalive-Handling.patch} | 0 ...s.patch => 0020-Silk-touch-spawners.patch} | 0 ...> 0021-Add-turtle-egg-block-options.patch} | 0 ...settings-suppressing-pointless-logs.patch} | 2 +- ...> 0023-Disable-outdated-build-check.patch} | 2 +- ...gs.patch => 0024-Giants-AI-settings.patch} | 0 ...> 0025-Zombie-horse-naturally-spawn.patch} | 4 +- ...026-Charged-creeper-naturally-spawn.patch} | 2 +- ...it-naturally-spawn-toast-and-killer.patch} | 0 ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0029-Tulips-change-fox-type.patch} | 0 ...patch => 0030-Breedable-Polar-Bears.patch} | 0 ...atch => 0031-Chickens-can-retaliate.patch} | 0 ...ption-to-set-armorstand-step-height.patch} | 2 +- ....patch => 0033-Cat-spawning-options.patch} | 0 ...ms.patch => 0034-Cows-eat-mushrooms.patch} | 0 ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...patch => 0036-Pigs-give-saddle-back.patch} | 0 ...7-Snowman-drop-and-put-back-pumpkin.patch} | 0 ...8-Ender-dragon-always-drop-full-exp.patch} | 0 ...oisten-from-water-directly-under-it.patch} | 0 ...Minecart-settings-and-WASD-controls.patch} | 2 +- ...ble-loot-drops-on-death-by-cramming.patch} | 6 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 0 ...ould-check-if-entity-can-use-portal.patch} | 2 +- ...Skip-events-if-there-s-no-listeners.patch} | 0 ... 0045-Add-permission-for-F3-N-debug.patch} | 0 ...ch => 0046-Configurable-TPS-Catchup.patch} | 6 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 0 ...erman-and-creeper-griefing-controls.patch} | 8 +- ...049-Villagers-follow-emerald-blocks.patch} | 4 +- ...ch => 0050-Allow-leashing-villagers.patch} | 8 +- ... => 0051-Implement-infinite-liquids.patch} | 6 +- ...2-Make-lava-flow-speed-configurable.patch} | 0 ...dd-player-death-exp-control-options.patch} | 0 ...rable-void-damage-height-and-damage.patch} | 8 +- ...=> 0055-Add-canSaveToDisk-to-Entity.patch} | 4 +- ...spenser-curse-of-binding-protection.patch} | 4 +- ...-for-boats-to-eject-players-on-land.patch} | 0 ...-mends-most-damages-equipment-first.patch} | 0 ...059-Add-5-second-tps-average-in-tps.patch} | 10 +- ...h => 0060-Implement-elytra-settings.patch} | 4 +- ...atch => 0061-Item-entity-immunities.patch} | 2 +- ...mand.patch => 0062-Add-ping-command.patch} | 2 +- ...mand.patch => 0063-Add-demo-command.patch} | 2 +- ...d.patch => 0064-Add-credits-command.patch} | 2 +- ...=> 0065-Configurable-jockey-options.patch} | 0 ...d-to-crystals-and-crystals-shoot-ph.patch} | 0 ...> 0067-Add-phantom-spawning-options.patch} | 0 ...068-Implement-bed-explosion-options.patch} | 0 ...nt-respawn-anchor-explosion-options.patch} | 0 ...Add-allow-water-in-end-world-option.patch} | 4 +- ... => 0071-Allow-color-codes-in-books.patch} | 10 +- ...espan.patch => 0072-Entity-lifespan.patch} | 16 +- ...eport-to-spawn-if-outside-world-bor.patch} | 4 +- ...ty.patch => 0074-Squid-EAR-immunity.patch} | 4 +- ...atch => 0075-Phantoms-burn-in-light.patch} | 0 ...0076-Configurable-villager-breeding.patch} | 4 +- ... 0077-Redstone-deactivates-spawners.patch} | 0 ...ch => 0078-Totems-work-in-inventory.patch} | 4 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 0 ...0080-Dispensers-place-anvils-option.patch} | 0 ...rs.patch => 0081-Allow-anvil-colors.patch} | 0 ...-disable-dolphin-treasure-searching.patch} | 0 ...patch => 0083-Short-enderman-height.patch} | 10 +- ...top-squids-floating-on-top-of-water.patch} | 6 +- ...ng-obsidian-valid-for-portal-frames.patch} | 2 +- ...ities-can-use-portals-configuration.patch} | 6 +- ...087-LivingEntity-broadcastItemBreak.patch} | 0 ...tomizable-wither-health-and-healing.patch} | 4 +- ...gling-special-MobSpawners-per-world.patch} | 2 +- ...patch => 0090-Raid-cooldown-setting.patch} | 0 ...-config-options-per-projectile-type.patch} | 0 ...able-zombie-aggressiveness-towards-.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...y.patch => 0094-Flying-squids-Oh-my.patch} | 0 ...patch => 0095-Infinity-bow-settings.patch} | 0 ...=> 0096-Configurable-daylight-cycle.patch} | 10 +- ...e-and-mending-enchantments-together.patch} | 2 +- ...8-Furnace-uses-lava-from-underneath.patch} | 0 ...ws-should-not-reset-despawn-counter.patch} | 0 ...e-add-farmland-mechanics-from-Alpha.patch} | 0 ...ustable-breeding-cooldown-to-config.patch} | 4 +- ...-entity-breeding-times-configurable.patch} | 10 +- ...es-from-item-forms-of-entities-to-e.patch} | 0 ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 0 ...lowing-Endermen-to-despawn-even-whi.patch} | 4 +- ...06-Add-configurable-snowball-damage.patch} | 0 ...7-Changeable-Mob-Left-Handed-Chance.patch} | 4 +- ...=> 0108-Add-boat-fall-damage-config.patch} | 2 +- ...0109-Snow-Golem-rate-of-fire-config.patch} | 0 ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 0 ...le-chance-for-wolves-to-spawn-rabid.patch} | 0 ...4-Configurable-default-collar-color.patch} | 0 ...tch => 0115-Phantom-flames-on-swoop.patch} | 0 ...-to-open-even-with-a-solid-block-on.patch} | 0 ...SBar.patch => 0117-Implement-TPSBar.patch} | 10 +- ...h => 0118-Striders-give-saddle-back.patch} | 0 ...tch => 0119-PlayerBookTooLargeEvent.patch} | 6 +- ...herite-armor-grants-fire-resistance.patch} | 0 ...121-Fix-rotating-UP-DOWN-CW-and-CCW.patch} | 0 ...efing-bypass-to-everything-affected.patch} | 26 +- ...llow-Note-Block-sounds-when-blocked.patch} | 0 ...124-Add-EntityTeleportHinderedEvent.patch} | 4 +- ... => 0125-Farmland-trampling-changes.patch} | 0 ...6-Movement-options-for-armor-stands.patch} | 4 +- ....patch => 0127-Fix-stuck-in-portals.patch} | 6 +- ...ggle-for-water-sensitive-mob-damage.patch} | 22 +- ...9-Config-to-always-tame-in-Creative.patch} | 0 ... 0130-End-crystal-explosion-options.patch} | 0 ...ther-Ender-Dragon-can-ride-vehicles.patch} | 4 +- ...atch => 0132-Dont-run-with-scissors.patch} | 8 +- ...nch-Man.patch => 0133-One-Punch-Man.patch} | 4 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 0 ...to-ignore-nearby-mobs-when-sleeping.patch} | 2 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 2 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 2 +- ...ig.patch => 0139-Tick-fluids-config.patch} | 0 ...40-Config-to-disable-Llama-caravans.patch} | 0 ...g-to-make-Creepers-explode-on-death.patch} | 2 +- ...rable-ravager-griefable-blocks-list.patch} | 0 ...143-Sneak-to-bulk-process-composter.patch} | 0 ...h => 0144-Config-for-skipping-night.patch} | 2 +- ...145-Add-config-for-villager-trading.patch} | 4 +- ...=> 0146-Allow-infinity-on-crossbows.patch} | 2 +- ...ngs.patch => 0147-Drowning-Settings.patch} | 10 +- ...reak-individual-slabs-when-sneaking.patch} | 0 ...to-disable-hostile-mob-spawn-on-ice.patch} | 0 ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 0 ...tion-to-make-doors-require-redstone.patch} | 0 ...Config-to-allow-for-unsafe-enchants.patch} | 2 +- ...0153-Configurable-sponge-absorption.patch} | 0 ...ch => 0154-Projectile-offset-config.patch} | 0 ...or-powered-rail-activation-distance.patch} | 0 ...> 0156-Piglin-portal-spawn-modifier.patch} | 0 ...Config-to-change-max-number-of-bees.patch} | 2 +- ...-Config-for-wither-explosion-radius.patch} | 0 ... => 0159-Gamemode-extra-permissions.patch} | 4 +- ...0160-Configurable-piston-push-limit.patch} | 0 ...161-Configurable-broadcast-settings.patch} | 4 +- ... => 0162-Configurable-mob-blindness.patch} | 4 +- ...hidden-players-from-entity-selector.patch} | 2 +- ...-to-impact-Creeper-explosion-radius.patch} | 2 +- ... 0165-Iron-golem-calm-anger-options.patch} | 0 ...ots.patch => 0166-Breedable-parrots.patch} | 0 ...gurable-powered-rail-boost-modifier.patch} | 2 +- ...ge-multiplier-critical-damage-value.patch} | 0 ...n-to-disable-dragon-egg-teleporting.patch} | 0 ...fig-for-unverified-username-message.patch} | 2 +- ...-anvil-cumulative-cost-configurable.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 0 ...73-API-for-any-mob-to-burn-daylight.patch} | 18 +- ...h => 0174-Config-MobEffect-by-world.patch} | 0 ...eacon-Activation-Range-Configurable.patch} | 0 ...0176-Add-toggle-for-sand-duping-fix.patch} | 0 ...gle-for-end-portal-safe-teleporting.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 6 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 0 ...ayer-join-full-server-by-permission.patch} | 0 ...> 0181-Add-portal-permission-bypass.patch} | 0 ...2-Shulker-spawn-from-bullet-options.patch} | 0 ...ating-glow-berries-adds-glow-effect.patch} | 0 ...-Option-to-make-drowned-break-doors.patch} | 0 ...nfigurable-hunger-starvation-damage.patch} | 0 ...patch => 0186-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0187-Add-uptime-command.patch} | 4 +- ...tch => 0188-Tool-actionable-options.patch} | 0 ...9-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0190-Summoner-API.patch} | 2 +- ...mizable-sleeping-actionbar-messages.patch} | 8 +- ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...tch => 0193-Big-dripleaf-tilt-delay.patch} | 0 ...0194-Player-ridable-in-water-option.patch} | 2 +- ...-Enderman-teleport-on-projectile-hi.patch} | 4 +- ...d.patch => 0196-Add-compass-command.patch} | 0 ...h => 0197-Toggle-for-kinetic-damage.patch} | 6 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 0 ...for-sponges-to-work-on-lava-and-mud.patch} | 0 ...201-Toggle-for-Wither-s-spawn-sound.patch} | 4 +- ...-breaks-from-solid-neighbors-config.patch} | 0 ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0204-Conduit-behavior-configuration.patch} | 0 ...patch => 0205-Cauldron-fill-chances.patch} | 0 ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0207-Shulker-change-color-with-dye.patch} | 0 ... => 0208-Extended-OfflinePlayer-API.patch} | 2 +- ...he-ability-to-add-combustible-items.patch} | 4 +- ...in-and-thunder-should-stop-on-sleep.patch} | 8 +- ...-blocks-to-grow-into-trees-naturall.patch} | 0 ...-right-click-to-use-exp-for-mending.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 0 ...urally-aggressive-to-players-chance.patch} | 0 ...r-beds-to-explode-on-villager-sleep.patch} | 4 +- ...Halloween-options-and-optimizations.patch} | 12 +- ...atch => 0217-Config-for-grindstones.patch} | 2 +- ....patch => 0218-UPnP-Port-Forwarding.patch} | 10 +- ...Campfire-option-for-lit-when-placed.patch} | 0 ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 0 ...nt-BlockEntity-Lore-and-DisplayName.patch} | 2 +- ...tch => 0223-Signs-allow-color-codes.patch} | 4 +- ...-and-twisting-vines-configurable-ma.patch} | 2 +- ...=> 0225-Mobs-always-drop-experience.patch} | 22 +- ....patch => 0226-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0227-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 0 ...ring-jeb-produces-random-color-wool.patch} | 0 ...urtle-eggs-random-tick-crack-chance.patch} | 0 ...=> 0231-Mob-head-visibility-percent.patch} | 4 +- ...able-valid-characters-for-usernames.patch} | 2 +- ...Shears-can-have-looting-enchantment.patch} | 2 +- ...Stop-bees-from-dying-after-stinging.patch} | 0 ...ounts-in-beehives-to-Purpur-clients.patch} | 10 +- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 2 +- ...ng.patch => 0238-Allow-void-trading.patch} | 6 +- ...h => 0239-Configurable-phantom-size.patch} | 0 ...> 0240-Configurable-food-attributes.patch} | 2 +- ....patch => 0241-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 4 +- ... => 0243-Lobotomize-stuck-villagers.patch} | 13 +- ...ion-for-villager-display-trade-item.patch} | 0 ...wner-not-spawning-water-animals-cor.patch} | 0 ...ig-for-mob-last-hurt-by-player-time.patch} | 4 +- ...=> 0247-Anvil-repair-damage-options.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 4 +- ...ge.patch => 0252-Stonecutter-damage.patch} | 0 ...le-damage-settings-for-magma-blocks.patch} | 0 ...254-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0255-Skeletons-eat-wither-roses.patch} | 0 ...56-Enchantment-Table-Persists-Lapis.patch} | 0 ...ofiler.patch => 0257-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 6 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0260-Config-to-not-let-coral-die.patch} | 0 ...ch => 0261-Add-local-difficulty-api.patch} | 0 ...262-Add-toggle-for-RNG-manipulation.patch} | 4 +- ... 0263-Send-client-custom-name-of-BE.patch} | 0 ...=> 0264-Allow-custom-ChatDecorators.patch} | 4 +- ...imings.patch => 0265-Remove-Timings.patch} | 109 +++---- ...atch => 0266-Remove-Mojang-Profiler.patch} | 282 ++++++++++-------- ...r-output-for-invalid-movement-kicks.patch} | 4 +- ...d-Bee-API.patch => 0268-Add-Bee-API.patch} | 0 ...-API.patch => 0269-Debug-Marker-API.patch} | 4 +- ...g-option-to-ignore-creative-players.patch} | 4 +- ...71-Add-skeleton-bow-accuracy-option.patch} | 0 ...atch => 0272-Allay-respect-item-NBT.patch} | 4 +- ....patch => 0273-Add-death-screen-API.patch} | 0 ...-Make-pufferfish-config-relocatable.patch} | 6 +- ...5-Implement-ram-and-rambar-commands.patch} | 0 ...276-Add-item-packet-serialize-event.patch} | 10 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 2 +- ...gurable-block-fall-damage-modifiers.patch} | 2 +- ...uage-API.patch => 0280-Language-API.patch} | 2 +- ... 0281-Milk-Keeps-Beneficial-Effects.patch} | 6 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0285-Fire-Immunity-API.patch} | 10 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0287-Added-got-ram-event.patch} | 4 +- ... 0288-Log-skipped-entity-s-position.patch} | 4 +- ....patch => 0289-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 2 +- ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0294-Add-PreExplodeEvents.patch} | 2 +- ...5-Improve-output-of-plugins-command.patch} | 0 ...atch => 0296-Add-mending-multiplier.patch} | 2 +- ....patch => 0297-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0298-Stored-Bee-API.patch} | 0 ...patch => 0299-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0300-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 2 +- ...0304-place-end-crystal-on-any-block.patch} | 2 +- ...I.patch => 0305-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 2 +- 360 files changed, 841 insertions(+), 820 deletions(-) rename patches/{unapplied => }/api/0001-Pufferfish-API-Changes.patch (98%) rename patches/{unapplied/api/0001-Fix-pufferfish-issues.patch => api/0002-Fix-pufferfish-issues.patch} (90%) rename patches/api/{0001-Purpur-config-files.patch => 0003-Purpur-config-files.patch} (100%) rename patches/api/{0002-Build-System-Changes.patch => 0004-Build-System-Changes.patch} (85%) rename patches/api/{0003-Purpur-client-support.patch => 0005-Purpur-client-support.patch} (100%) rename patches/api/{0004-Default-permissions.patch => 0006-Default-permissions.patch} (100%) rename patches/api/{0005-Ridables.patch => 0007-Ridables.patch} (100%) rename patches/api/{0006-Allow-inventory-resizing.patch => 0008-Allow-inventory-resizing.patch} (100%) rename patches/api/{0007-Llama-API.patch => 0009-Llama-API.patch} (100%) rename patches/api/{0008-AFK-API.patch => 0010-AFK-API.patch} (100%) rename patches/api/{0009-Bring-back-server-name.patch => 0011-Bring-back-server-name.patch} (100%) rename patches/api/{0010-ExecuteCommandEvent.patch => 0012-ExecuteCommandEvent.patch} (100%) rename patches/api/{0011-LivingEntity-safeFallDistance.patch => 0013-LivingEntity-safeFallDistance.patch} (100%) rename patches/api/{0012-Lagging-threshold.patch => 0014-Lagging-threshold.patch} (100%) rename patches/api/{0013-PlayerSetSpawnerTypeWithEggEvent.patch => 0015-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/api/{0014-Anvil-API.patch => 0016-Anvil-API.patch} (100%) rename patches/api/{0015-ItemStack-convenience-methods.patch => 0017-ItemStack-convenience-methods.patch} (100%) rename patches/api/{0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename patches/api/{0017-ChatColor-conveniences.patch => 0019-ChatColor-conveniences.patch} (100%) rename patches/api/{0018-LivingEntity-broadcastItemBreak.patch => 0020-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/api/{0019-Item-entity-immunities.patch => 0021-Item-entity-immunities.patch} (100%) rename patches/api/{0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/api/{0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0022-Rabid-Wolf-API.patch => 0024-Rabid-Wolf-API.patch} (100%) rename patches/api/{0023-PlayerBookTooLargeEvent.patch => 0025-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0024-Full-netherite-armor-grants-fire-resistance.patch => 0026-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0025-Add-EntityTeleportHinderedEvent.patch => 0027-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0026-Add-enchantment-target-for-bows-and-crossbows.patch => 0028-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0027-Iron-golem-poppy-calms-anger.patch => 0029-Iron-golem-poppy-calms-anger.patch} (100%) rename patches/api/{0028-API-for-any-mob-to-burn-daylight.patch => 0030-API-for-any-mob-to-burn-daylight.patch} (100%) rename patches/api/{0029-Add-back-player-spawned-endermite-API.patch => 0031-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/api/{0030-Fix-default-permission-system.patch => 0032-Fix-default-permission-system.patch} (100%) rename patches/api/{0031-Summoner-API.patch => 0033-Summoner-API.patch} (100%) rename patches/api/{0032-Clean-up-version-command-output.patch => 0034-Clean-up-version-command-output.patch} (100%) rename patches/api/{0033-Extended-OfflinePlayer-API.patch => 0035-Extended-OfflinePlayer-API.patch} (100%) rename patches/api/{0034-Added-the-ability-to-add-combustible-items.patch => 0036-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/api/{0035-Potion-NamespacedKey.patch => 0037-Potion-NamespacedKey.patch} (100%) rename patches/api/{0036-Grindstone-API.patch => 0038-Grindstone-API.patch} (100%) rename patches/api/{0037-Shears-can-have-looting-enchantment.patch => 0039-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0038-Lobotomize-stuck-villagers.patch => 0040-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0039-Add-local-difficulty-api.patch => 0041-Add-local-difficulty-api.patch} (100%) rename patches/api/{0040-Remove-Timings.patch => 0042-Remove-Timings.patch} (100%) rename patches/api/{0041-Add-Bee-API.patch => 0043-Add-Bee-API.patch} (100%) rename patches/api/{0042-Debug-Marker-API.patch => 0044-Debug-Marker-API.patch} (100%) rename patches/api/{0043-Add-death-screen-API.patch => 0045-Add-death-screen-API.patch} (100%) rename patches/api/{0044-Add-item-packet-serialize-event.patch => 0046-Add-item-packet-serialize-event.patch} (100%) rename patches/api/{0045-Language-API.patch => 0047-Language-API.patch} (100%) rename patches/api/{0046-Add-log-suppression-for-LibraryLoader.patch => 0048-Add-log-suppression-for-LibraryLoader.patch} (96%) rename patches/api/{0047-Fire-Immunity-API.patch => 0049-Fire-Immunity-API.patch} (100%) rename patches/api/{0048-Added-goat-ram-event.patch => 0050-Added-goat-ram-event.patch} (100%) rename patches/api/{0049-Add-PreExplodeEvents.patch => 0051-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0050-Stored-Bee-API.patch => 0052-Stored-Bee-API.patch} (100%) rename patches/api/{0051-Explorer-Map-API.patch => 0053-Explorer-Map-API.patch} (100%) rename patches/api/{0052-Add-hover-lines-API.patch => 0054-Add-hover-lines-API.patch} (100%) rename patches/{unapplied => }/server/0001-Pufferfish-Server-Changes.patch (93%) rename patches/server/{0001-Rebrand.patch => 0002-Rebrand.patch} (96%) rename patches/{unapplied/server/0002-Fix-pufferfish-issues.patch => server/0003-Fix-pufferfish-issues.patch} (89%) rename patches/server/{0002-Purpur-config-files.patch => 0004-Purpur-config-files.patch} (96%) rename patches/server/{0003-Purpur-client-support.patch => 0005-Purpur-client-support.patch} (100%) rename patches/server/{0004-Fix-decompile-errors.patch => 0006-Fix-decompile-errors.patch} (100%) rename patches/server/{0005-Component-related-conveniences.patch => 0007-Component-related-conveniences.patch} (94%) rename patches/server/{0006-Ridables.patch => 0008-Ridables.patch} (97%) rename patches/server/{0007-Configurable-entity-base-attributes.patch => 0009-Configurable-entity-base-attributes.patch} (99%) rename patches/server/{0008-Barrels-and-enderchests-6-rows.patch => 0010-Barrels-and-enderchests-6-rows.patch} (99%) rename patches/server/{0009-Llama-API.patch => 0011-Llama-API.patch} (100%) rename patches/server/{0010-AFK-API.patch => 0012-AFK-API.patch} (97%) rename patches/server/{0011-Bring-back-server-name.patch => 0013-Bring-back-server-name.patch} (91%) rename patches/server/{0012-Configurable-server-mod-name.patch => 0014-Configurable-server-mod-name.patch} (74%) rename patches/server/{0013-LivingEntity-safeFallDistance.patch => 0015-LivingEntity-safeFallDistance.patch} (92%) rename patches/server/{0014-Lagging-threshold.patch => 0016-Lagging-threshold.patch} (89%) rename patches/server/{0015-PlayerSetSpawnerTypeWithEggEvent.patch => 0017-PlayerSetSpawnerTypeWithEggEvent.patch} (93%) rename patches/server/{0016-Anvil-API.patch => 0018-Anvil-API.patch} (100%) rename patches/server/{0017-Alternative-Keepalive-Handling.patch => 0019-Alternative-Keepalive-Handling.patch} (100%) rename patches/server/{0018-Silk-touch-spawners.patch => 0020-Silk-touch-spawners.patch} (100%) rename patches/server/{0019-Add-turtle-egg-block-options.patch => 0021-Add-turtle-egg-block-options.patch} (100%) rename patches/server/{0020-Logger-settings-suppressing-pointless-logs.patch => 0022-Logger-settings-suppressing-pointless-logs.patch} (98%) rename patches/server/{0021-Disable-outdated-build-check.patch => 0023-Disable-outdated-build-check.patch} (92%) rename patches/server/{0022-Giants-AI-settings.patch => 0024-Giants-AI-settings.patch} (100%) rename patches/server/{0023-Zombie-horse-naturally-spawn.patch => 0025-Zombie-horse-naturally-spawn.patch} (95%) rename patches/server/{0024-Charged-creeper-naturally-spawn.patch => 0026-Charged-creeper-naturally-spawn.patch} (96%) rename patches/server/{0025-Rabbit-naturally-spawn-toast-and-killer.patch => 0027-Rabbit-naturally-spawn-toast-and-killer.patch} (100%) rename patches/server/{0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0027-Tulips-change-fox-type.patch => 0029-Tulips-change-fox-type.patch} (100%) rename patches/server/{0028-Breedable-Polar-Bears.patch => 0030-Breedable-Polar-Bears.patch} (100%) rename patches/server/{0029-Chickens-can-retaliate.patch => 0031-Chickens-can-retaliate.patch} (100%) rename patches/server/{0030-Add-option-to-set-armorstand-step-height.patch => 0032-Add-option-to-set-armorstand-step-height.patch} (96%) rename patches/server/{0031-Cat-spawning-options.patch => 0033-Cat-spawning-options.patch} (100%) rename patches/server/{0032-Cows-eat-mushrooms.patch => 0034-Cows-eat-mushrooms.patch} (100%) rename patches/server/{0033-Fix-cow-rotation-when-shearing-mooshroom.patch => 0035-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0034-Pigs-give-saddle-back.patch => 0036-Pigs-give-saddle-back.patch} (100%) rename patches/server/{0035-Snowman-drop-and-put-back-pumpkin.patch => 0037-Snowman-drop-and-put-back-pumpkin.patch} (100%) rename patches/server/{0036-Ender-dragon-always-drop-full-exp.patch => 0038-Ender-dragon-always-drop-full-exp.patch} (100%) rename patches/server/{0037-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0039-Allow-soil-to-moisten-from-water-directly-under-it.patch} (100%) rename patches/server/{0038-Minecart-settings-and-WASD-controls.patch => 0040-Minecart-settings-and-WASD-controls.patch} (99%) rename patches/server/{0039-Disable-loot-drops-on-death-by-cramming.patch => 0041-Disable-loot-drops-on-death-by-cramming.patch} (91%) rename patches/server/{0040-Option-to-toggle-milk-curing-bad-omen.patch => 0042-Option-to-toggle-milk-curing-bad-omen.patch} (100%) rename patches/server/{0041-End-gateway-should-check-if-entity-can-use-portal.patch => 0043-End-gateway-should-check-if-entity-can-use-portal.patch} (91%) rename patches/server/{0042-Skip-events-if-there-s-no-listeners.patch => 0044-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0043-Add-permission-for-F3-N-debug.patch => 0045-Add-permission-for-F3-N-debug.patch} (100%) rename patches/server/{0044-Configurable-TPS-Catchup.patch => 0046-Configurable-TPS-Catchup.patch} (88%) rename patches/server/{0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (100%) rename patches/server/{0046-Add-enderman-and-creeper-griefing-controls.patch => 0048-Add-enderman-and-creeper-griefing-controls.patch} (93%) rename patches/server/{0047-Villagers-follow-emerald-blocks.patch => 0049-Villagers-follow-emerald-blocks.patch} (97%) rename patches/server/{0048-Allow-leashing-villagers.patch => 0050-Allow-leashing-villagers.patch} (94%) rename patches/server/{0049-Implement-infinite-liquids.patch => 0051-Implement-infinite-liquids.patch} (95%) rename patches/server/{0050-Make-lava-flow-speed-configurable.patch => 0052-Make-lava-flow-speed-configurable.patch} (100%) rename patches/server/{0051-Add-player-death-exp-control-options.patch => 0053-Add-player-death-exp-control-options.patch} (100%) rename patches/server/{0052-Configurable-void-damage-height-and-damage.patch => 0054-Configurable-void-damage-height-and-damage.patch} (90%) rename patches/server/{0053-Add-canSaveToDisk-to-Entity.patch => 0055-Add-canSaveToDisk-to-Entity.patch} (96%) rename patches/server/{0054-Dispenser-curse-of-binding-protection.patch => 0056-Dispenser-curse-of-binding-protection.patch} (95%) rename patches/server/{0055-Add-option-for-boats-to-eject-players-on-land.patch => 0057-Add-option-for-boats-to-eject-players-on-land.patch} (100%) rename patches/server/{0056-Mending-mends-most-damages-equipment-first.patch => 0058-Mending-mends-most-damages-equipment-first.patch} (100%) rename patches/server/{0057-Add-5-second-tps-average-in-tps.patch => 0059-Add-5-second-tps-average-in-tps.patch} (94%) rename patches/server/{0058-Implement-elytra-settings.patch => 0060-Implement-elytra-settings.patch} (98%) rename patches/server/{0059-Item-entity-immunities.patch => 0061-Item-entity-immunities.patch} (98%) rename patches/server/{0060-Add-ping-command.patch => 0062-Add-ping-command.patch} (97%) rename patches/server/{0061-Add-demo-command.patch => 0063-Add-demo-command.patch} (97%) rename patches/server/{0062-Add-credits-command.patch => 0064-Add-credits-command.patch} (97%) rename patches/server/{0063-Configurable-jockey-options.patch => 0065-Configurable-jockey-options.patch} (100%) rename patches/server/{0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename patches/server/{0065-Add-phantom-spawning-options.patch => 0067-Add-phantom-spawning-options.patch} (100%) rename patches/server/{0066-Implement-bed-explosion-options.patch => 0068-Implement-bed-explosion-options.patch} (100%) rename patches/server/{0067-Implement-respawn-anchor-explosion-options.patch => 0069-Implement-respawn-anchor-explosion-options.patch} (100%) rename patches/server/{0068-Add-allow-water-in-end-world-option.patch => 0070-Add-allow-water-in-end-world-option.patch} (96%) rename patches/server/{0069-Allow-color-codes-in-books.patch => 0071-Allow-color-codes-in-books.patch} (92%) rename patches/server/{0070-Entity-lifespan.patch => 0072-Entity-lifespan.patch} (89%) rename patches/server/{0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (96%) rename patches/server/{0072-Squid-EAR-immunity.patch => 0074-Squid-EAR-immunity.patch} (94%) rename patches/server/{0073-Phantoms-burn-in-light.patch => 0075-Phantoms-burn-in-light.patch} (100%) rename patches/server/{0074-Configurable-villager-breeding.patch => 0076-Configurable-villager-breeding.patch} (93%) rename patches/server/{0075-Redstone-deactivates-spawners.patch => 0077-Redstone-deactivates-spawners.patch} (100%) rename patches/server/{0076-Totems-work-in-inventory.patch => 0078-Totems-work-in-inventory.patch} (94%) rename patches/server/{0077-Add-vindicator-johnny-spawn-chance.patch => 0079-Add-vindicator-johnny-spawn-chance.patch} (100%) rename patches/server/{0078-Dispensers-place-anvils-option.patch => 0080-Dispensers-place-anvils-option.patch} (100%) rename patches/server/{0079-Allow-anvil-colors.patch => 0081-Allow-anvil-colors.patch} (100%) rename patches/server/{0080-Add-option-to-disable-dolphin-treasure-searching.patch => 0082-Add-option-to-disable-dolphin-treasure-searching.patch} (100%) rename patches/server/{0081-Short-enderman-height.patch => 0083-Short-enderman-height.patch} (87%) rename patches/server/{0082-Stop-squids-floating-on-top-of-water.patch => 0084-Stop-squids-floating-on-top-of-water.patch} (92%) rename patches/server/{0083-Crying-obsidian-valid-for-portal-frames.patch => 0085-Crying-obsidian-valid-for-portal-frames.patch} (96%) rename patches/server/{0084-Entities-can-use-portals-configuration.patch => 0086-Entities-can-use-portals-configuration.patch} (93%) rename patches/server/{0085-LivingEntity-broadcastItemBreak.patch => 0087-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/server/{0086-Customizable-wither-health-and-healing.patch => 0088-Customizable-wither-health-and-healing.patch} (94%) rename patches/server/{0087-Allow-toggling-special-MobSpawners-per-world.patch => 0089-Allow-toggling-special-MobSpawners-per-world.patch} (98%) rename patches/server/{0088-Raid-cooldown-setting.patch => 0090-Raid-cooldown-setting.patch} (100%) rename patches/server/{0089-Despawn-rate-config-options-per-projectile-type.patch => 0091-Despawn-rate-config-options-per-projectile-type.patch} (100%) rename patches/server/{0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/server/{0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0092-Flying-squids-Oh-my.patch => 0094-Flying-squids-Oh-my.patch} (100%) rename patches/server/{0093-Infinity-bow-settings.patch => 0095-Infinity-bow-settings.patch} (100%) rename patches/server/{0094-Configurable-daylight-cycle.patch => 0096-Configurable-daylight-cycle.patch} (93%) rename patches/server/{0095-Allow-infinite-and-mending-enchantments-together.patch => 0097-Allow-infinite-and-mending-enchantments-together.patch} (95%) rename patches/server/{0096-Furnace-uses-lava-from-underneath.patch => 0098-Furnace-uses-lava-from-underneath.patch} (100%) rename patches/server/{0097-Arrows-should-not-reset-despawn-counter.patch => 0099-Arrows-should-not-reset-despawn-counter.patch} (100%) rename patches/server/{0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (100%) rename patches/server/{0099-Add-adjustable-breeding-cooldown-to-config.patch => 0101-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0100-Make-entity-breeding-times-configurable.patch => 0102-Make-entity-breeding-times-configurable.patch} (99%) rename patches/server/{0101-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0103-Apply-display-names-from-item-forms-of-entities-to-e.patch} (100%) rename patches/server/{0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (100%) rename patches/server/{0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (93%) rename patches/server/{0104-Add-configurable-snowball-damage.patch => 0106-Add-configurable-snowball-damage.patch} (100%) rename patches/server/{0105-Changeable-Mob-Left-Handed-Chance.patch => 0107-Changeable-Mob-Left-Handed-Chance.patch} (91%) rename patches/server/{0106-Add-boat-fall-damage-config.patch => 0108-Add-boat-fall-damage-config.patch} (97%) rename patches/server/{0107-Snow-Golem-rate-of-fire-config.patch => 0109-Snow-Golem-rate-of-fire-config.patch} (100%) rename patches/server/{0108-EMC-Configurable-disable-give-dropping.patch => 0110-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (100%) rename patches/server/{0111-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0113-Configurable-chance-for-wolves-to-spawn-rabid.patch} (100%) rename patches/server/{0112-Configurable-default-collar-color.patch => 0114-Configurable-default-collar-color.patch} (100%) rename patches/server/{0113-Phantom-flames-on-swoop.patch => 0115-Phantom-flames-on-swoop.patch} (100%) rename patches/server/{0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (100%) rename patches/server/{0115-Implement-TPSBar.patch => 0117-Implement-TPSBar.patch} (97%) rename patches/server/{0116-Striders-give-saddle-back.patch => 0118-Striders-give-saddle-back.patch} (100%) rename patches/server/{0117-PlayerBookTooLargeEvent.patch => 0119-PlayerBookTooLargeEvent.patch} (92%) rename patches/server/{0118-Full-netherite-armor-grants-fire-resistance.patch => 0120-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/server/{0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch => 0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch} (100%) rename patches/server/{0120-Add-mobGriefing-bypass-to-everything-affected.patch => 0122-Add-mobGriefing-bypass-to-everything-affected.patch} (97%) rename patches/server/{0121-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0123-Config-to-allow-Note-Block-sounds-when-blocked.patch} (100%) rename patches/server/{0122-Add-EntityTeleportHinderedEvent.patch => 0124-Add-EntityTeleportHinderedEvent.patch} (98%) rename patches/server/{0123-Farmland-trampling-changes.patch => 0125-Farmland-trampling-changes.patch} (100%) rename patches/server/{0124-Movement-options-for-armor-stands.patch => 0126-Movement-options-for-armor-stands.patch} (96%) rename patches/server/{0125-Fix-stuck-in-portals.patch => 0127-Fix-stuck-in-portals.patch} (93%) rename patches/server/{0126-Toggle-for-water-sensitive-mob-damage.patch => 0128-Toggle-for-water-sensitive-mob-damage.patch} (99%) rename patches/server/{0127-Config-to-always-tame-in-Creative.patch => 0129-Config-to-always-tame-in-Creative.patch} (100%) rename patches/server/{0128-End-crystal-explosion-options.patch => 0130-End-crystal-explosion-options.patch} (100%) rename patches/server/{0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (96%) rename patches/server/{0130-Dont-run-with-scissors.patch => 0132-Dont-run-with-scissors.patch} (96%) rename patches/server/{0131-One-Punch-Man.patch => 0133-One-Punch-Man.patch} (94%) rename patches/server/{0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (100%) rename patches/server/{0133-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0135-Config-to-ignore-nearby-mobs-when-sleeping.patch} (96%) rename patches/server/{0134-Add-back-player-spawned-endermite-API.patch => 0136-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0135-Config-Enderman-aggressiveness-towards-Endermites.patch => 0137-Config-Enderman-aggressiveness-towards-Endermites.patch} (97%) rename patches/server/{0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (96%) rename patches/server/{0137-Tick-fluids-config.patch => 0139-Tick-fluids-config.patch} (100%) rename patches/server/{0138-Config-to-disable-Llama-caravans.patch => 0140-Config-to-disable-Llama-caravans.patch} (100%) rename patches/server/{0139-Config-to-make-Creepers-explode-on-death.patch => 0141-Config-to-make-Creepers-explode-on-death.patch} (97%) rename patches/server/{0140-Configurable-ravager-griefable-blocks-list.patch => 0142-Configurable-ravager-griefable-blocks-list.patch} (100%) rename patches/server/{0141-Sneak-to-bulk-process-composter.patch => 0143-Sneak-to-bulk-process-composter.patch} (100%) rename patches/server/{0142-Config-for-skipping-night.patch => 0144-Config-for-skipping-night.patch} (96%) rename patches/server/{0143-Add-config-for-villager-trading.patch => 0145-Add-config-for-villager-trading.patch} (96%) rename patches/server/{0144-Allow-infinity-on-crossbows.patch => 0146-Allow-infinity-on-crossbows.patch} (98%) rename patches/server/{0145-Drowning-Settings.patch => 0147-Drowning-Settings.patch} (89%) rename patches/server/{0146-Break-individual-slabs-when-sneaking.patch => 0148-Break-individual-slabs-when-sneaking.patch} (100%) rename patches/server/{0147-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0149-Config-to-disable-hostile-mob-spawn-on-ice.patch} (100%) rename patches/server/{0148-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0150-Config-to-show-Armor-Stand-arms-on-spawn.patch} (100%) rename patches/server/{0149-Option-to-make-doors-require-redstone.patch => 0151-Option-to-make-doors-require-redstone.patch} (100%) rename patches/server/{0150-Config-to-allow-for-unsafe-enchants.patch => 0152-Config-to-allow-for-unsafe-enchants.patch} (98%) rename patches/server/{0151-Configurable-sponge-absorption.patch => 0153-Configurable-sponge-absorption.patch} (100%) rename patches/server/{0152-Projectile-offset-config.patch => 0154-Projectile-offset-config.patch} (100%) rename patches/server/{0153-Config-for-powered-rail-activation-distance.patch => 0155-Config-for-powered-rail-activation-distance.patch} (100%) rename patches/server/{0154-Piglin-portal-spawn-modifier.patch => 0156-Piglin-portal-spawn-modifier.patch} (100%) rename patches/server/{0155-Config-to-change-max-number-of-bees.patch => 0157-Config-to-change-max-number-of-bees.patch} (96%) rename patches/server/{0156-Config-for-wither-explosion-radius.patch => 0158-Config-for-wither-explosion-radius.patch} (100%) rename patches/server/{0157-Gamemode-extra-permissions.patch => 0159-Gamemode-extra-permissions.patch} (97%) rename patches/server/{0158-Configurable-piston-push-limit.patch => 0160-Configurable-piston-push-limit.patch} (100%) rename patches/server/{0159-Configurable-broadcast-settings.patch => 0161-Configurable-broadcast-settings.patch} (94%) rename patches/server/{0160-Configurable-mob-blindness.patch => 0162-Configurable-mob-blindness.patch} (95%) rename patches/server/{0161-Hide-hidden-players-from-entity-selector.patch => 0163-Hide-hidden-players-from-entity-selector.patch} (98%) rename patches/server/{0162-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0164-Config-for-health-to-impact-Creeper-explosion-radius.patch} (96%) rename patches/server/{0163-Iron-golem-calm-anger-options.patch => 0165-Iron-golem-calm-anger-options.patch} (100%) rename patches/server/{0164-Breedable-parrots.patch => 0166-Breedable-parrots.patch} (100%) rename patches/server/{0165-Configurable-powered-rail-boost-modifier.patch => 0167-Configurable-powered-rail-boost-modifier.patch} (96%) rename patches/server/{0166-Add-config-change-multiplier-critical-damage-value.patch => 0168-Add-config-change-multiplier-critical-damage-value.patch} (100%) rename patches/server/{0167-Option-to-disable-dragon-egg-teleporting.patch => 0169-Option-to-disable-dragon-egg-teleporting.patch} (100%) rename patches/server/{0168-Config-for-unverified-username-message.patch => 0170-Config-for-unverified-username-message.patch} (97%) rename patches/server/{0169-Make-anvil-cumulative-cost-configurable.patch => 0171-Make-anvil-cumulative-cost-configurable.patch} (95%) rename patches/server/{0170-Bee-can-work-when-raining-or-at-night.patch => 0172-Bee-can-work-when-raining-or-at-night.patch} (100%) rename patches/server/{0171-API-for-any-mob-to-burn-daylight.patch => 0173-API-for-any-mob-to-burn-daylight.patch} (96%) rename patches/server/{0172-Config-MobEffect-by-world.patch => 0174-Config-MobEffect-by-world.patch} (100%) rename patches/server/{0173-Beacon-Activation-Range-Configurable.patch => 0175-Beacon-Activation-Range-Configurable.patch} (100%) rename patches/server/{0174-Add-toggle-for-sand-duping-fix.patch => 0176-Add-toggle-for-sand-duping-fix.patch} (100%) rename patches/server/{0175-Add-toggle-for-end-portal-safe-teleporting.patch => 0177-Add-toggle-for-end-portal-safe-teleporting.patch} (95%) rename patches/server/{0176-Make-lightning-rod-range-configurable.patch => 0178-Make-lightning-rod-range-configurable.patch} (89%) rename patches/server/{0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (100%) rename patches/server/{0178-Allow-player-join-full-server-by-permission.patch => 0180-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0179-Add-portal-permission-bypass.patch => 0181-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0180-Shulker-spawn-from-bullet-options.patch => 0182-Shulker-spawn-from-bullet-options.patch} (100%) rename patches/server/{0181-Eating-glow-berries-adds-glow-effect.patch => 0183-Eating-glow-berries-adds-glow-effect.patch} (100%) rename patches/server/{0182-Option-to-make-drowned-break-doors.patch => 0184-Option-to-make-drowned-break-doors.patch} (100%) rename patches/server/{0183-Configurable-hunger-starvation-damage.patch => 0185-Configurable-hunger-starvation-damage.patch} (100%) rename patches/server/{0184-Enhance-SysoutCatcher.patch => 0186-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0185-Add-uptime-command.patch => 0187-Add-uptime-command.patch} (97%) rename patches/server/{0186-Tool-actionable-options.patch => 0188-Tool-actionable-options.patch} (100%) rename patches/server/{0187-Store-placer-on-Block-when-placed.patch => 0189-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0188-Summoner-API.patch => 0190-Summoner-API.patch} (99%) rename patches/server/{0189-Customizable-sleeping-actionbar-messages.patch => 0191-Customizable-sleeping-actionbar-messages.patch} (94%) rename patches/server/{0190-option-to-disable-shulker-box-items-from-dropping-co.patch => 0192-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0191-Big-dripleaf-tilt-delay.patch => 0193-Big-dripleaf-tilt-delay.patch} (100%) rename patches/server/{0192-Player-ridable-in-water-option.patch => 0194-Player-ridable-in-water-option.patch} (96%) rename patches/server/{0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (94%) rename patches/server/{0194-Add-compass-command.patch => 0196-Add-compass-command.patch} (100%) rename patches/server/{0195-Toggle-for-kinetic-damage.patch => 0197-Toggle-for-kinetic-damage.patch} (89%) rename patches/server/{0196-Add-Option-for-disable-observer-clocks.patch => 0198-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0197-Customizeable-Zombie-Villager-curing-times.patch => 0199-Customizeable-Zombie-Villager-curing-times.patch} (100%) rename patches/server/{0198-Option-for-sponges-to-work-on-lava-and-mud.patch => 0200-Option-for-sponges-to-work-on-lava-and-mud.patch} (100%) rename patches/server/{0199-Toggle-for-Wither-s-spawn-sound.patch => 0201-Toggle-for-Wither-s-spawn-sound.patch} (93%) rename patches/server/{0200-Cactus-breaks-from-solid-neighbors-config.patch => 0202-Cactus-breaks-from-solid-neighbors-config.patch} (100%) rename patches/server/{0201-Config-to-remove-curse-of-binding-with-weakness.patch => 0203-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0202-Conduit-behavior-configuration.patch => 0204-Conduit-behavior-configuration.patch} (100%) rename patches/server/{0203-Cauldron-fill-chances.patch => 0205-Cauldron-fill-chances.patch} (100%) rename patches/server/{0204-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0206-Config-to-allow-mobs-to-pathfind-over-rails.patch} (97%) rename patches/server/{0205-Shulker-change-color-with-dye.patch => 0207-Shulker-change-color-with-dye.patch} (100%) rename patches/server/{0206-Extended-OfflinePlayer-API.patch => 0208-Extended-OfflinePlayer-API.patch} (99%) rename patches/server/{0207-Added-the-ability-to-add-combustible-items.patch => 0209-Added-the-ability-to-add-combustible-items.patch} (96%) rename patches/server/{0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (90%) rename patches/server/{0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (100%) rename patches/server/{0210-Shift-right-click-to-use-exp-for-mending.patch => 0212-Shift-right-click-to-use-exp-for-mending.patch} (94%) rename patches/server/{0211-Dolphins-naturally-aggressive-to-players-chance.patch => 0213-Dolphins-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0212-Cows-naturally-aggressive-to-players-chance.patch => 0214-Cows-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0213-Option-for-beds-to-explode-on-villager-sleep.patch => 0215-Option-for-beds-to-explode-on-villager-sleep.patch} (94%) rename patches/server/{0214-Halloween-options-and-optimizations.patch => 0216-Halloween-options-and-optimizations.patch} (92%) rename patches/server/{0215-Config-for-grindstones.patch => 0217-Config-for-grindstones.patch} (98%) rename patches/server/{0216-UPnP-Port-Forwarding.patch => 0218-UPnP-Port-Forwarding.patch} (90%) rename patches/server/{0217-Campfire-option-for-lit-when-placed.patch => 0219-Campfire-option-for-lit-when-placed.patch} (100%) rename patches/server/{0218-options-to-extinguish-fire-blocks-with-snowballs.patch => 0220-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0219-Add-option-to-disable-zombie-villagers-cure.patch => 0221-Add-option-to-disable-zombie-villagers-cure.patch} (100%) rename patches/server/{0220-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0222-Persistent-BlockEntity-Lore-and-DisplayName.patch} (99%) rename patches/server/{0221-Signs-allow-color-codes.patch => 0223-Signs-allow-color-codes.patch} (97%) rename patches/server/{0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0224-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (99%) rename patches/server/{0223-Mobs-always-drop-experience.patch => 0225-Mobs-always-drop-experience.patch} (99%) rename patches/server/{0224-Potion-NamespacedKey.patch => 0226-Potion-NamespacedKey.patch} (100%) rename patches/server/{0225-Grindstone-API.patch => 0227-Grindstone-API.patch} (100%) rename patches/server/{0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (100%) rename patches/server/{0227-Shearing-jeb-produces-random-color-wool.patch => 0229-Shearing-jeb-produces-random-color-wool.patch} (100%) rename patches/server/{0228-Turtle-eggs-random-tick-crack-chance.patch => 0230-Turtle-eggs-random-tick-crack-chance.patch} (100%) rename patches/server/{0229-Mob-head-visibility-percent.patch => 0231-Mob-head-visibility-percent.patch} (97%) rename patches/server/{0230-Configurable-valid-characters-for-usernames.patch => 0232-Configurable-valid-characters-for-usernames.patch} (95%) rename patches/server/{0231-Shears-can-have-looting-enchantment.patch => 0233-Shears-can-have-looting-enchantment.patch} (99%) rename patches/server/{0232-Stop-bees-from-dying-after-stinging.patch => 0234-Stop-bees-from-dying-after-stinging.patch} (100%) rename patches/server/{0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (92%) rename patches/server/{0234-Configurable-farmland-trample-height.patch => 0236-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0235-Configurable-player-pickup-exp-delay.patch => 0237-Configurable-player-pickup-exp-delay.patch} (97%) rename patches/server/{0236-Allow-void-trading.patch => 0238-Allow-void-trading.patch} (91%) rename patches/server/{0237-Configurable-phantom-size.patch => 0239-Configurable-phantom-size.patch} (100%) rename patches/server/{0238-Configurable-food-attributes.patch => 0240-Configurable-food-attributes.patch} (98%) rename patches/server/{0239-Max-joins-per-second.patch => 0241-Max-joins-per-second.patch} (92%) rename patches/server/{0240-Configurable-minimum-demand-for-trades.patch => 0242-Configurable-minimum-demand-for-trades.patch} (95%) rename patches/server/{0241-Lobotomize-stuck-villagers.patch => 0243-Lobotomize-stuck-villagers.patch} (91%) rename patches/server/{0242-Option-for-villager-display-trade-item.patch => 0244-Option-for-villager-display-trade-item.patch} (100%) rename patches/server/{0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (100%) rename patches/server/{0244-Config-for-mob-last-hurt-by-player-time.patch => 0246-Config-for-mob-last-hurt-by-player-time.patch} (96%) rename patches/server/{0245-Anvil-repair-damage-options.patch => 0247-Anvil-repair-damage-options.patch} (100%) rename patches/server/{0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0247-Add-toggle-for-enchant-level-clamping.patch => 0249-Add-toggle-for-enchant-level-clamping.patch} (97%) rename patches/server/{0248-Skip-junit-tests-for-purpur-commands.patch => 0250-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0249-Implement-configurable-search-radius-for-villagers-t.patch => 0251-Implement-configurable-search-radius-for-villagers-t.patch} (94%) rename patches/server/{0250-Stonecutter-damage.patch => 0252-Stonecutter-damage.patch} (100%) rename patches/server/{0251-Configurable-damage-settings-for-magma-blocks.patch => 0253-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0252-Add-config-for-snow-on-blue-ice.patch => 0254-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0253-Skeletons-eat-wither-roses.patch => 0255-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0254-Enchantment-Table-Persists-Lapis.patch => 0256-Enchantment-Table-Persists-Lapis.patch} (100%) rename patches/server/{0255-Spark-Profiler.patch => 0257-Spark-Profiler.patch} (100%) rename patches/server/{0256-Option-to-disable-kick-for-out-of-order-chat.patch => 0258-Option-to-disable-kick-for-out-of-order-chat.patch} (87%) rename patches/server/{0257-Config-for-sculk-shrieker-can_summon-state.patch => 0259-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0258-Config-to-not-let-coral-die.patch => 0260-Config-to-not-let-coral-die.patch} (100%) rename patches/server/{0259-Add-local-difficulty-api.patch => 0261-Add-local-difficulty-api.patch} (100%) rename patches/server/{0260-Add-toggle-for-RNG-manipulation.patch => 0262-Add-toggle-for-RNG-manipulation.patch} (94%) rename patches/server/{0261-Send-client-custom-name-of-BE.patch => 0263-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0262-Allow-custom-ChatDecorators.patch => 0264-Allow-custom-ChatDecorators.patch} (90%) rename patches/server/{0263-Remove-Timings.patch => 0265-Remove-Timings.patch} (92%) rename patches/server/{0264-Remove-Mojang-Profiler.patch => 0266-Remove-Mojang-Profiler.patch} (88%) rename patches/server/{0265-Add-more-logger-output-for-invalid-movement-kicks.patch => 0267-Add-more-logger-output-for-invalid-movement-kicks.patch} (94%) rename patches/server/{0266-Add-Bee-API.patch => 0268-Add-Bee-API.patch} (100%) rename patches/server/{0267-Debug-Marker-API.patch => 0269-Debug-Marker-API.patch} (97%) rename patches/server/{0268-mob-spawning-option-to-ignore-creative-players.patch => 0270-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0269-Add-skeleton-bow-accuracy-option.patch => 0271-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0270-Allay-respect-item-NBT.patch => 0272-Allay-respect-item-NBT.patch} (94%) rename patches/server/{0271-Add-death-screen-API.patch => 0273-Add-death-screen-API.patch} (100%) rename patches/{unapplied/server/0275-Make-pufferfish-config-relocatable.patch => server/0274-Make-pufferfish-config-relocatable.patch} (90%) rename patches/server/{0272-Implement-ram-and-rambar-commands.patch => 0275-Implement-ram-and-rambar-commands.patch} (100%) rename patches/server/{0273-Add-item-packet-serialize-event.patch => 0276-Add-item-packet-serialize-event.patch} (90%) rename patches/server/{0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0275-Configurable-block-blast-resistance.patch => 0278-Configurable-block-blast-resistance.patch} (96%) rename patches/server/{0276-Configurable-block-fall-damage-modifiers.patch => 0279-Configurable-block-fall-damage-modifiers.patch} (98%) rename patches/server/{0277-Language-API.patch => 0280-Language-API.patch} (93%) rename patches/server/{0278-Milk-Keeps-Beneficial-Effects.patch => 0281-Milk-Keeps-Beneficial-Effects.patch} (94%) rename patches/server/{0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0280-Add-log-suppression-for-LibraryLoader.patch => 0283-Add-log-suppression-for-LibraryLoader.patch} (94%) rename patches/server/{0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0282-Fire-Immunity-API.patch => 0285-Fire-Immunity-API.patch} (91%) rename patches/server/{0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (94%) rename patches/server/{0284-Added-got-ram-event.patch => 0287-Added-got-ram-event.patch} (86%) rename patches/server/{0285-Log-skipped-entity-s-position.patch => 0288-Log-skipped-entity-s-position.patch} (86%) rename patches/server/{0286-End-Crystal-Cramming.patch => 0289-End-Crystal-Cramming.patch} (100%) rename patches/server/{0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0288-Add-attribute-clamping-and-armor-limit-config.patch => 0291-Add-attribute-clamping-and-armor-limit-config.patch} (97%) rename patches/server/{0289-Config-to-remove-explosion-radius-clamp.patch => 0292-Config-to-remove-explosion-radius-clamp.patch} (91%) rename patches/server/{0290-bonemealable-sugarcane-cactus-and-netherwart.patch => 0293-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0291-Add-PreExplodeEvents.patch => 0294-Add-PreExplodeEvents.patch} (94%) rename patches/server/{0292-Improve-output-of-plugins-command.patch => 0295-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0293-Add-mending-multiplier.patch => 0296-Add-mending-multiplier.patch} (96%) rename patches/server/{0294-Make-GUI-Great-Again.patch => 0297-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0295-Stored-Bee-API.patch => 0298-Stored-Bee-API.patch} (100%) rename patches/server/{0296-Shears-can-defuse-TNT.patch => 0299-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0297-Explorer-Map-API.patch => 0300-Explorer-Map-API.patch} (100%) rename patches/server/{0298-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0301-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0300-Add-option-for-always-showing-item-in-player-death-m.patch => 0303-Add-option-for-always-showing-item-in-player-death-m.patch} (97%) rename patches/server/{0301-place-end-crystal-on-any-block.patch => 0304-place-end-crystal-on-any-block.patch} (96%) rename patches/server/{0302-Add-hover-lines-API.patch => 0305-Add-hover-lines-API.patch} (100%) rename patches/server/{0303-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0306-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) diff --git a/patches/unapplied/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch similarity index 98% rename from patches/unapplied/api/0001-Pufferfish-API-Changes.patch rename to patches/api/0001-Pufferfish-API-Changes.patch index 1a44d100e..39f27823d 100644 --- a/patches/unapplied/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,18 +20,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index e827ee211e3c65dc68ac5867fd8476639df63645..b9c75a190dbd7a90ac5ef0fbc6e6fe34806acc4e 100644 +index bf01892c248b988531d21d9fb0f74d0adf2205ac..80833c13a2d19e31d6f648e7ef5b3456025e767e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -47,6 +47,7 @@ dependencies { +@@ -51,6 +51,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") + api("io.sentry:sentry:5.4.0") // Pufferfish - implementation("org.ow2.asm:asm:9.4") - implementation("org.ow2.asm:asm-commons:9.4") -@@ -106,6 +107,13 @@ val generateApiVersioningFile by tasks.registering { + implementation("org.ow2.asm:asm:9.5") + implementation("org.ow2.asm:asm-commons:9.5") +@@ -109,6 +110,13 @@ val generateApiVersioningFile by tasks.registering { } } diff --git a/patches/unapplied/api/0001-Fix-pufferfish-issues.patch b/patches/api/0002-Fix-pufferfish-issues.patch similarity index 90% rename from patches/unapplied/api/0001-Fix-pufferfish-issues.patch rename to patches/api/0002-Fix-pufferfish-issues.patch index 08bd8a159..00aeb7539 100644 --- a/patches/unapplied/api/0001-Fix-pufferfish-issues.patch +++ b/patches/api/0002-Fix-pufferfish-issues.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java -index 06e96e5c98f1a7a68c8b4b5e527314c1aa774e38..49bba9a7a02b9cf3a552583315eff2b7dbe060c0 100644 +index 88f1ca89fa640a686231b8eec87e70419b2d73ef..d6b91c49a267c89d7df2ddee7ccfe64675d117be 100644 --- a/src/test/java/org/bukkit/AnnotationTest.java +++ b/src/test/java/org/bukkit/AnnotationTest.java @@ -47,6 +47,10 @@ public class AnnotationTest { diff --git a/patches/api/0001-Purpur-config-files.patch b/patches/api/0003-Purpur-config-files.patch similarity index 100% rename from patches/api/0001-Purpur-config-files.patch rename to patches/api/0003-Purpur-config-files.patch diff --git a/patches/api/0002-Build-System-Changes.patch b/patches/api/0004-Build-System-Changes.patch similarity index 85% rename from patches/api/0002-Build-System-Changes.patch rename to patches/api/0004-Build-System-Changes.patch index 654c62079..26cdf44be 100644 --- a/patches/api/0002-Build-System-Changes.patch +++ b/patches/api/0004-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 9d817bf3f26ffd484945a00a6538970eca22ee20..dc322b5d5458163c5b1de2a74d3d2edb1a4dac76 100644 +index 80833c13a2d19e31d6f648e7ef5b3456025e767e..0a33275fdf16bda47771bab9ddfeb2bf8616c2dc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -121,6 +121,8 @@ tasks.jar { +@@ -129,6 +129,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/api/0003-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch similarity index 100% rename from patches/api/0003-Purpur-client-support.patch rename to patches/api/0005-Purpur-client-support.patch diff --git a/patches/api/0004-Default-permissions.patch b/patches/api/0006-Default-permissions.patch similarity index 100% rename from patches/api/0004-Default-permissions.patch rename to patches/api/0006-Default-permissions.patch diff --git a/patches/api/0005-Ridables.patch b/patches/api/0007-Ridables.patch similarity index 100% rename from patches/api/0005-Ridables.patch rename to patches/api/0007-Ridables.patch diff --git a/patches/api/0006-Allow-inventory-resizing.patch b/patches/api/0008-Allow-inventory-resizing.patch similarity index 100% rename from patches/api/0006-Allow-inventory-resizing.patch rename to patches/api/0008-Allow-inventory-resizing.patch diff --git a/patches/api/0007-Llama-API.patch b/patches/api/0009-Llama-API.patch similarity index 100% rename from patches/api/0007-Llama-API.patch rename to patches/api/0009-Llama-API.patch diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0010-AFK-API.patch similarity index 100% rename from patches/api/0008-AFK-API.patch rename to patches/api/0010-AFK-API.patch diff --git a/patches/api/0009-Bring-back-server-name.patch b/patches/api/0011-Bring-back-server-name.patch similarity index 100% rename from patches/api/0009-Bring-back-server-name.patch rename to patches/api/0011-Bring-back-server-name.patch diff --git a/patches/api/0010-ExecuteCommandEvent.patch b/patches/api/0012-ExecuteCommandEvent.patch similarity index 100% rename from patches/api/0010-ExecuteCommandEvent.patch rename to patches/api/0012-ExecuteCommandEvent.patch diff --git a/patches/api/0011-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/api/0011-LivingEntity-safeFallDistance.patch rename to patches/api/0013-LivingEntity-safeFallDistance.patch diff --git a/patches/api/0012-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch similarity index 100% rename from patches/api/0012-Lagging-threshold.patch rename to patches/api/0014-Lagging-threshold.patch diff --git a/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/api/0014-Anvil-API.patch b/patches/api/0016-Anvil-API.patch similarity index 100% rename from patches/api/0014-Anvil-API.patch rename to patches/api/0016-Anvil-API.patch diff --git a/patches/api/0015-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch similarity index 100% rename from patches/api/0015-ItemStack-convenience-methods.patch rename to patches/api/0017-ItemStack-convenience-methods.patch diff --git a/patches/api/0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/api/0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from patches/api/0016-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/api/0018-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/patches/api/0017-ChatColor-conveniences.patch b/patches/api/0019-ChatColor-conveniences.patch similarity index 100% rename from patches/api/0017-ChatColor-conveniences.patch rename to patches/api/0019-ChatColor-conveniences.patch diff --git a/patches/api/0018-LivingEntity-broadcastItemBreak.patch b/patches/api/0020-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/api/0018-LivingEntity-broadcastItemBreak.patch rename to patches/api/0020-LivingEntity-broadcastItemBreak.patch diff --git a/patches/api/0019-Item-entity-immunities.patch b/patches/api/0021-Item-entity-immunities.patch similarity index 100% rename from patches/api/0019-Item-entity-immunities.patch rename to patches/api/0021-Item-entity-immunities.patch diff --git a/patches/api/0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/api/0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/api/0020-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/api/0022-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0023-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0022-Rabid-Wolf-API.patch b/patches/api/0024-Rabid-Wolf-API.patch similarity index 100% rename from patches/api/0022-Rabid-Wolf-API.patch rename to patches/api/0024-Rabid-Wolf-API.patch diff --git a/patches/api/0023-PlayerBookTooLargeEvent.patch b/patches/api/0025-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0023-PlayerBookTooLargeEvent.patch rename to patches/api/0025-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0026-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0026-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0025-Add-EntityTeleportHinderedEvent.patch b/patches/api/0027-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0025-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0027-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0028-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0028-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0027-Iron-golem-poppy-calms-anger.patch b/patches/api/0029-Iron-golem-poppy-calms-anger.patch similarity index 100% rename from patches/api/0027-Iron-golem-poppy-calms-anger.patch rename to patches/api/0029-Iron-golem-poppy-calms-anger.patch diff --git a/patches/api/0028-API-for-any-mob-to-burn-daylight.patch b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from patches/api/0028-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0030-API-for-any-mob-to-burn-daylight.patch diff --git a/patches/api/0029-Add-back-player-spawned-endermite-API.patch b/patches/api/0031-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/api/0029-Add-back-player-spawned-endermite-API.patch rename to patches/api/0031-Add-back-player-spawned-endermite-API.patch diff --git a/patches/api/0030-Fix-default-permission-system.patch b/patches/api/0032-Fix-default-permission-system.patch similarity index 100% rename from patches/api/0030-Fix-default-permission-system.patch rename to patches/api/0032-Fix-default-permission-system.patch diff --git a/patches/api/0031-Summoner-API.patch b/patches/api/0033-Summoner-API.patch similarity index 100% rename from patches/api/0031-Summoner-API.patch rename to patches/api/0033-Summoner-API.patch diff --git a/patches/api/0032-Clean-up-version-command-output.patch b/patches/api/0034-Clean-up-version-command-output.patch similarity index 100% rename from patches/api/0032-Clean-up-version-command-output.patch rename to patches/api/0034-Clean-up-version-command-output.patch diff --git a/patches/api/0033-Extended-OfflinePlayer-API.patch b/patches/api/0035-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/api/0033-Extended-OfflinePlayer-API.patch rename to patches/api/0035-Extended-OfflinePlayer-API.patch diff --git a/patches/api/0034-Added-the-ability-to-add-combustible-items.patch b/patches/api/0036-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/api/0034-Added-the-ability-to-add-combustible-items.patch rename to patches/api/0036-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/api/0035-Potion-NamespacedKey.patch b/patches/api/0037-Potion-NamespacedKey.patch similarity index 100% rename from patches/api/0035-Potion-NamespacedKey.patch rename to patches/api/0037-Potion-NamespacedKey.patch diff --git a/patches/api/0036-Grindstone-API.patch b/patches/api/0038-Grindstone-API.patch similarity index 100% rename from patches/api/0036-Grindstone-API.patch rename to patches/api/0038-Grindstone-API.patch diff --git a/patches/api/0037-Shears-can-have-looting-enchantment.patch b/patches/api/0039-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0037-Shears-can-have-looting-enchantment.patch rename to patches/api/0039-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0038-Lobotomize-stuck-villagers.patch b/patches/api/0040-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0038-Lobotomize-stuck-villagers.patch rename to patches/api/0040-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0039-Add-local-difficulty-api.patch b/patches/api/0041-Add-local-difficulty-api.patch similarity index 100% rename from patches/api/0039-Add-local-difficulty-api.patch rename to patches/api/0041-Add-local-difficulty-api.patch diff --git a/patches/api/0040-Remove-Timings.patch b/patches/api/0042-Remove-Timings.patch similarity index 100% rename from patches/api/0040-Remove-Timings.patch rename to patches/api/0042-Remove-Timings.patch diff --git a/patches/api/0041-Add-Bee-API.patch b/patches/api/0043-Add-Bee-API.patch similarity index 100% rename from patches/api/0041-Add-Bee-API.patch rename to patches/api/0043-Add-Bee-API.patch diff --git a/patches/api/0042-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch similarity index 100% rename from patches/api/0042-Debug-Marker-API.patch rename to patches/api/0044-Debug-Marker-API.patch diff --git a/patches/api/0043-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch similarity index 100% rename from patches/api/0043-Add-death-screen-API.patch rename to patches/api/0045-Add-death-screen-API.patch diff --git a/patches/api/0044-Add-item-packet-serialize-event.patch b/patches/api/0046-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/api/0044-Add-item-packet-serialize-event.patch rename to patches/api/0046-Add-item-packet-serialize-event.patch diff --git a/patches/api/0045-Language-API.patch b/patches/api/0047-Language-API.patch similarity index 100% rename from patches/api/0045-Language-API.patch rename to patches/api/0047-Language-API.patch diff --git a/patches/api/0046-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch similarity index 96% rename from patches/api/0046-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0048-Add-log-suppression-for-LibraryLoader.patch index 4948f9b89..95e4cd2ac 100644 --- a/patches/api/0046-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..f1e58639213be0c43cd2ff090b625e7d0a67e8be 100644 +index 301e82369603f3dd6e6c1bd380da4bacacd7ef6c..0c6ca7588fb3d6b6497ddf032fe75e5c6c9719e5 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -55,6 +55,7 @@ public final class JavaPluginLoader implements PluginLoader { diff --git a/patches/api/0047-Fire-Immunity-API.patch b/patches/api/0049-Fire-Immunity-API.patch similarity index 100% rename from patches/api/0047-Fire-Immunity-API.patch rename to patches/api/0049-Fire-Immunity-API.patch diff --git a/patches/api/0048-Added-goat-ram-event.patch b/patches/api/0050-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0048-Added-goat-ram-event.patch rename to patches/api/0050-Added-goat-ram-event.patch diff --git a/patches/api/0049-Add-PreExplodeEvents.patch b/patches/api/0051-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0049-Add-PreExplodeEvents.patch rename to patches/api/0051-Add-PreExplodeEvents.patch diff --git a/patches/api/0050-Stored-Bee-API.patch b/patches/api/0052-Stored-Bee-API.patch similarity index 100% rename from patches/api/0050-Stored-Bee-API.patch rename to patches/api/0052-Stored-Bee-API.patch diff --git a/patches/api/0051-Explorer-Map-API.patch b/patches/api/0053-Explorer-Map-API.patch similarity index 100% rename from patches/api/0051-Explorer-Map-API.patch rename to patches/api/0053-Explorer-Map-API.patch diff --git a/patches/api/0052-Add-hover-lines-API.patch b/patches/api/0054-Add-hover-lines-API.patch similarity index 100% rename from patches/api/0052-Add-hover-lines-API.patch rename to patches/api/0054-Add-hover-lines-API.patch diff --git a/patches/unapplied/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch similarity index 93% rename from patches/unapplied/server/0001-Pufferfish-Server-Changes.patch rename to patches/server/0001-Pufferfish-Server-Changes.patch index 25b54b296..41289052f 100644 --- a/patches/unapplied/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 64479f0a892d6847f987d844efe282a6080d607b..9525f76103136dfc900c70f97416864115f75ed5 100644 +index 58da26ad2f128ba0b66f86820f60853f4be352f0..5134bd15ff55d3407dec6756663394535a0ddf69 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -39,8 +39,8 @@ index 64479f0a892d6847f987d844efe282a6080d607b..9525f76103136dfc900c70f974168641 implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") @@ -51,6 +55,13 @@ dependencies { - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + // Pufferfish start + implementation("org.yaml:snakeyaml:1.32") @@ -55,7 +55,7 @@ index 64479f0a892d6847f987d844efe282a6080d607b..9525f76103136dfc900c70f974168641 @@ -58,6 +69,14 @@ dependencies { } - val craftbukkitPackageVersion = "1_20_R2" // Paper + val craftbukkitPackageVersion = "1_20_R3" // Paper + +// Pufferfish Start +tasks.withType { @@ -625,10 +625,10 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..cc66657cb4f978aa2df3ca1be6c683759952cc7a +index 0000000000000000000000000000000000000000..0dd3374468e05f7a312ba5856b9cf8a4787dfa59 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -0,0 +1,294 @@ +@@ -0,0 +1,293 @@ +package gg.pufferfish.pufferfish; + +import gg.pufferfish.pufferfish.simd.SIMDDetection; @@ -913,7 +913,6 @@ index 0000000000000000000000000000000000000000..cc66657cb4f978aa2df3ca1be6c68375 + "the ender dragon whenever a player places an end crystal."); + } + -+ + public static boolean disableMethodProfiler; + public static boolean disableOutOfOrderChat; + private static void miscSettings() { @@ -1464,10 +1463,10 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 8240bb085b619f257f8c0a25775e0b15068e440f..6d9668d993bb922ae9d2b76a4d766903cc3f98a4 100644 +index 200ed770b57e1a9240abf0473968d4b85cbefe3c..0acc7cfc0fb0264dd76a58f7582e79d83fa040eb 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java -@@ -213,7 +213,7 @@ public final class MCUtil { +@@ -212,7 +212,7 @@ public final class MCUtil { } public static long getCoordinateKey(final Entity entity) { @@ -1476,11 +1475,24 @@ index 8240bb085b619f257f8c0a25775e0b15068e440f..6d9668d993bb922ae9d2b76a4d766903 } public static long getCoordinateKey(final ChunkPos pair) { +diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +index 85a8a687b1568a56e3e646b37ef78b562c1b8a82..69971b2c59e541ac4100b84c84e2972de1b44ca9 100644 +--- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java ++++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +@@ -38,7 +38,7 @@ public class SignedMessageChain { + throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause) + } else if (playerPublicKey.data().hasExpired()) { + throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey", org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY), false); // Paper - kick event causes +- } else if (body.timeStamp().isBefore(this.lastTimeStamp)) { ++ } else if (!gg.pufferfish.pufferfish.PufferfishConfig.disableOutOfOrderChat && body.timeStamp().isBefore(this.lastTimeStamp)) { // Pufferfish + throw new SignedMessageChain.DecodeException(Component.translatable("multiplayer.disconnect.out_of_order_chat", org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT), true); // Paper - kick event causes + } else { + this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90 100644 +index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..53d0a930ae5ec34c1f3a58e96e92f54dd9c7881c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -308,6 +308,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1697,7 +1699,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); @@ -1540,7 +1552,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6 // Paper end - optimise chunk tick iteration public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { -@@ -1464,8 +1464,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1463,8 +1463,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -1569,7 +1581,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1477,6 +1497,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1476,6 +1496,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } @@ -1580,10 +1592,10 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6 return this.scaledRange(i); } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..5d26364c0f4ed03bd9994077683c93b9883e5327 100644 +index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..5cf74fe0214191d42e74fc104eba150a95894e0f 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -75,6 +75,9 @@ public class ServerChunkCache extends ChunkSource { +@@ -73,6 +73,9 @@ public class ServerChunkCache extends ChunkSource { final it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap loadedChunkMap = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(8192, 0.5f); private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4]; @@ -1594,77 +1606,57 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..5d26364c0f4ed03bd9994077683c93b9 private static int getChunkCacheKey(int x, int z) { return x & 3 | ((z & 3) << 2); @@ -521,6 +524,7 @@ public class ServerChunkCache extends ChunkSource { - ProfilerFiller gameprofilerfiller = this.level.getProfiler(); - gameprofilerfiller.push("pollingChunks"); + // Paper - optimise chunk tick iteration + + this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random - int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); - boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit - -@@ -530,28 +534,35 @@ public class ServerChunkCache extends ChunkSource { - // Paper start - per player mob spawning - NaturalSpawner.SpawnState spawnercreature_d; // moved down - if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled -- // re-set mob counts -- for (ServerPlayer player : this.level.players) { -- // Paper start - per player mob spawning backoff -- for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) { -- player.mobCounts[ii] = 0; -- -- int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm? -- if (newBackoff < 0) { -- newBackoff = 0; -+ // Pufferfish start - moved down when async processing -+ if (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { -+ // re-set mob counts -+ for (ServerPlayer player : this.level.players) { -+ // Paper start - per player mob spawning backoff -+ for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) { -+ player.mobCounts[ii] = 0; -+ -+ int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm? -+ if (newBackoff < 0) { -+ newBackoff = 0; -+ } -+ player.mobBackoffCounts[ii] = newBackoff; + if (this.level.getServer().tickRateManager().runsNormally()) { + gameprofilerfiller.popPush("naturalSpawnCount"); + this.level.timings.countNaturalMobs.startTiming(); // Paper - timings +@@ -529,6 +533,7 @@ public class ServerChunkCache extends ChunkSource { + int naturalSpawnChunkCount = k; + NaturalSpawner.SpawnState spawnercreature_d; // moved down + if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled ++ if (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { // Pufferfish - moved down when async processing + // re-set mob counts + for (ServerPlayer player : this.level.players) { + // Paper start - per player mob spawning backoff +@@ -543,14 +548,18 @@ public class ServerChunkCache extends ChunkSource { } -- player.mobBackoffCounts[ii] = newBackoff; -+ // Paper end - per player mob spawning backoff + // Paper end - per player mob spawning backoff } -- // Paper end - per player mob spawning backoff -+ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true); +- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); ++ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); // Pufferfish - async mob spawning ++ } // Pufferfish - (endif) moved down when async processing + } else { +- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); ++ // Pufferfish start - async mob spawning ++ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); ++ _pufferfish_spawnCountsReady.set(true); ++ // Pufferfish end } -- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true); -+ // Pufferfish end - } else { -- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); -+ // Pufferfish start -+ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); -+ _pufferfish_spawnCountsReady.set(true); -+ // Pufferfish end - } - // Paper end - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings + // Paper end + this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings -- this.lastSpawnState = spawnercreature_d; -+ //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously - gameprofilerfiller.popPush("filteringLoadedChunks"); - // Paper - optimise chunk tick iteration - // Paper - optimise chunk tick iteration -@@ -644,8 +655,8 @@ public class ServerChunkCache extends ChunkSource { - // Paper end - optimise chunk tick iteration - if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { // Paper - optimise chunk tick iteration - chunk1.incrementInhabitedTime(j); -- if (spawn && flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration -- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); -+ if (spawn && flag2 && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Pufferfish -+ NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish - } +- this.lastSpawnState = spawnercreature_d; ++ // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + gameprofilerfiller.popPush("spawnAndTick"); + boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration -@@ -691,6 +702,40 @@ public class ServerChunkCache extends ChunkSource { +@@ -640,8 +649,8 @@ public class ServerChunkCache extends ChunkSource { + if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { + // Paper end - optimise chunk tick iteration + chunk1.incrementInhabitedTime(j); +- if (spawn && flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration +- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); ++ if (spawn && flag && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Pufferfish ++ NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish + } + + if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration +@@ -688,6 +697,40 @@ public class ServerChunkCache extends ChunkSource { + gameprofilerfiller.pop(); gameprofilerfiller.pop(); - this.chunkMap.tick(); } + + // Pufferfish start - optimize mob spawning @@ -1726,10 +1718,10 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b68f6d494f 100644 +index b78a9628a88f2a495ef6de74446a02a14d41a1f6..66cbea2fd146bdabf1241dae72bd76dc256afe45 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -878,6 +878,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -895,6 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { org.spigotmc.ActivationRange.activateEntities(this); // Spigot this.timings.entityTick.startTiming(); // Spigot this.entityTickList.forEach((entity) -> { @@ -1737,7 +1729,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b6 if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); -@@ -897,7 +898,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -914,7 +915,20 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); @@ -1759,7 +1751,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b6 gameprofilerfiller.pop(); } } -@@ -962,9 +976,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -979,9 +993,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -1772,7 +1764,7 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b6 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -975,7 +991,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -992,7 +1008,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -1782,10 +1774,10 @@ index c88d5b9125f6ee43bf2be60fd1745d836f271b78..945783d090e44ebed1d4968c1d1ec0b6 if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 65bb221993147a558995b36fb835f7b82e0eb4bd..6cc9271ba058f4af759eae34e2f6e9f892b4f6da 100644 +index 30ccbab1586a656e0ae41d7406525fb02d9e025b..20cd751a602593740e87eb79d5059b5fc7856cb5 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1119,6 +1119,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1124,6 +1124,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -1793,14 +1785,6 @@ index 65bb221993147a558995b36fb835f7b82e0eb4bd..6cc9271ba058f4af759eae34e2f6e9f8 // Paper start if (!this.cserver.isPrimaryThread()) { List pageList = packet.getPages(); -@@ -2274,6 +2275,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - } - - private boolean updateChatOrder(Instant timestamp) { -+ if (gg.pufferfish.pufferfish.PufferfishConfig.disableOutOfOrderChat) return true; - Instant instant1; - - do { diff --git a/src/main/java/net/minecraft/world/CompoundContainer.java b/src/main/java/net/minecraft/world/CompoundContainer.java index 241fec02e6869c638d3a160819b32173a081467b..6a8f9e8f5bf108674c47018def28906e2d0a729c 100644 --- a/src/main/java/net/minecraft/world/CompoundContainer.java @@ -1914,10 +1898,10 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0bf55da454 100644 +index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd133a05e06 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -307,7 +307,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double yo; public double zo; private Vec3 position; @@ -1926,7 +1910,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b private ChunkPos chunkPosition; private Vec3 deltaMovement; private float yRot; -@@ -434,6 +434,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -438,6 +438,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.originWorld; } // Paper end @@ -1939,7 +1923,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b public float getBukkitYaw() { return this.yRot; } -@@ -798,6 +804,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -802,6 +808,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public void tick() { @@ -1952,7 +1936,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b this.baseTick(); } -@@ -4362,16 +4374,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4399,16 +4411,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1978,7 +1962,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4379,14 +4393,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4416,14 +4430,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2046,7 +2030,7 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4408,9 +4469,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4445,9 +4506,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end } } @@ -2060,10 +2044,10 @@ index fece91254b10b59474056aa730fd420f90cd7bec..80c9a523e94704f73e833e2255af6b0b if (vec3d.length() > 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c772db442 100644 +index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..a63399eedb896c06e96c7fba5cac7102e1c40ba6 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -301,6 +301,8 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -305,6 +305,8 @@ public class EntityType implements FeatureElement, EntityTypeT private final boolean canSpawnFarFromPlayer; private final int clientTrackingRange; private final int updateInterval; @@ -2073,7 +2057,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d469e877ec1 100644 +index 96885946be3b8e129984353f3dfe4330e73ad84a..88f736e67107d34514eec231070f42d2ee008e5c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2084,7 +2068,7 @@ index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d46 public abstract class LivingEntity extends Entity implements Attackable { -@@ -414,7 +413,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -413,7 +412,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; if (!this.level().isClientSide) { @@ -2093,7 +2077,7 @@ index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d46 this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1409,6 +1408,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1408,6 +1407,19 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } @@ -2113,7 +2097,7 @@ index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d46 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -2004,6 +2016,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2001,6 +2013,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -2135,10 +2119,10 @@ index 15e1d8c09fad181406a6acb8b3f177cd5e6c0f52..3b9ee3324a084271862ed790e8fc0d46 if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 956d05e2ae59978ea9623ca0e167c0afe0b87306..944c22ea172796492a683d2f2bddfb0938d7a8c9 100644 +index 5af48151159135b869ec4753bbcf79dd257c1570..1d65d8b3e21373b0f0d2c633742da52d6b208942 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -220,14 +220,16 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -221,14 +221,16 @@ public abstract class Mob extends LivingEntity implements Targeting { return this.lookControl; } @@ -2157,7 +2141,7 @@ index 956d05e2ae59978ea9623ca0e167c0afe0b87306..944c22ea172796492a683d2f2bddfb09 this.targetSelector.tick(); } } -@@ -911,16 +913,20 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -912,16 +914,20 @@ public abstract class Mob extends LivingEntity implements Targeting { if (i % 2 != 0 && this.tickCount > 1) { this.level().getProfiler().push("targetSelector"); @@ -2245,7 +2229,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..1635818fc4b1788c0d397085239df6dd public boolean hasTasks() { for (WrappedGoal task : this.availableGoals) { diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index 34f319ad09276c6f68dde449c79351de0d7d86f5..a719af0b512d9ef243d0d54f3b744b1b1a5f2772 100644 +index 4bbc36404b396500df0d9db380cf223b5897662e..382e9d18b81bcbeb20cb3b828b66260f07a845e6 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java @@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal { @@ -2282,10 +2266,10 @@ index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..ac5e5676b194a2a99e5cf53eb89c1152 return false; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 5beaa849a250ea005733250ad3edfa8382224667..2c91fe46355c9a201507de5577f693ed4f5fb974 100644 +index 6b614818b14ecfc8fc82b523eeb7e21fdf9bf1ba..8820905ac733a8915cc1697259b2bef14d97e471 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -237,13 +237,22 @@ public class Bat extends AmbientCreature { +@@ -241,13 +241,22 @@ public class Bat extends AmbientCreature { } } @@ -2326,10 +2310,10 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cf this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index d5b97d4316390028f54aa9bb9fa52b0b003e32a0..b4793b88688bd568a428aa520e880f0038de45a7 100644 +index 387006271c246362b0df1bfcadca7b7096660003..9158c5a507904c46a8fe2fdad9a0b6ba3a9b2460 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -280,9 +280,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { - return true; +@@ -159,9 +159,11 @@ public class Frog extends Animal implements VariantHolder { + } + private int behaviorTick = 0; // Pufferfish @@ -2464,10 +2448,10 @@ index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..cfdc1650783d6855e0d4f33ec68aab48 this.level().getProfiler().pop(); PiglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index b2bc3a832c310448046ccde37a04918aa6d63197..5e43912708f9074dee1bb351efa737a7e6796fc3 100644 +index 9f1b7c629644931074293151ed58a523ca6d488c..58a7e61e02b7d72326ed4d57ee514adb63b3873c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -272,11 +272,13 @@ public class Warden extends Monster implements VibrationSystem { +@@ -273,11 +273,13 @@ public class Warden extends Monster implements VibrationSystem { } @@ -2482,7 +2466,7 @@ index b2bc3a832c310448046ccde37a04918aa6d63197..5e43912708f9074dee1bb351efa737a7 this.level().getProfiler().pop(); super.customServerAiStep(); 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 cbe2a37f74f4fb2abd0b3297699e54335aaed64f..2460768aaa7b8e6d183c03c1f0f2ccd6cb61a16f 100644 +index 11935e5b16324af572b07c5b173708f5a91f8289..6b869c05bbdb13e23ecaa2c38e0cb05bda5a083d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -2548,10 +2532,10 @@ index 96d664c28738d6090f7067761c2978dd1aa0fd0e..b1c24a02b87aca7b180a6efbce177f23 return false; } diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index a90317100d32974e481e14476843f66997a2cf3a..cd0629581bae5f805842157af36c2d838e01bee3 100644 +index 2f058cec80c6ef7a5a5ca065dc6c9fe353c521de..a7653d8d7291a537c997364c6222bb84d45f7277 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -44,6 +44,36 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -45,6 +45,36 @@ public abstract class Projectile extends Entity implements TraceableEntity { super(type, world); } @@ -2589,7 +2573,7 @@ index a90317100d32974e481e14476843f66997a2cf3a..cd0629581bae5f805842157af36c2d83 if (entity != null) { this.ownerUUID = entity.getUUID(); diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java -index 00187fbbeddfc17e1b6887f8bf0f50da23938470..f64edfdb03f99624daf1e05b5dc86d845c3018b6 100644 +index 6d23c39e4eadf23616080d6d08672e13b5d3c37d..e7115f1635821e0aab32e8aeea6914388dc24639 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java @@ -27,7 +27,10 @@ import org.bukkit.inventory.InventoryHolder; @@ -2649,7 +2633,7 @@ index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..3688e9f8c6c6d1239095e3a87060ccca } } diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -index 38f7d1ece27ec1a3deda21fb6a6f0e788c8ed718..252fc22844682c0f67dc02a87478e01e49b6430d 100644 +index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b6878314ea2717 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java @@ -26,8 +26,13 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo @@ -2696,10 +2680,10 @@ index 38f7d1ece27ec1a3deda21fb6a6f0e788c8ed718..252fc22844682c0f67dc02a87478e01e autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..99e1c645871be28d130319b65700a1b8db093de4 100644 +index f8e519684d02dff0e26734eb89eca54ae1d9b1ee..3fb317e5df780abb7fa8c3d78717306cad2bc650 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -210,6 +210,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -213,6 +213,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); @@ -2708,7 +2692,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..99e1c645871be28d130319b65700a1b8 protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper -@@ -1308,13 +1310,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1313,13 +1315,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2724,7 +2708,7 @@ index 2354a0e5d15e9be633d9fe3a1a9feefe7b9b7782..99e1c645871be28d130319b65700a1b8 // Paper end } } -@@ -1779,6 +1781,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1793,6 +1795,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -2754,7 +2738,7 @@ index 3cdddda9c0618e95288b81b975d499c8dd30c05f..9c2d62feff1816f5729060c6192269a5 return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 65012a12e1430956ef55ced56773e6354ac26444..ed439b7e94646141c93a7dd3704d1cdeb5c27e16 100644 +index 4f9187d9d640618c40a2fa528f36b845017b4777..efca73d4de33028cf9df944f36e51b7b50f7a4c5 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java @@ -66,14 +66,20 @@ public final class Biome { @@ -2978,10 +2962,10 @@ index d4dcf7fe26474ae07374e7761d823bc5c8b54f97..1d13fabb3f34023b4fbb1be9ad02ebc6 public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index 3e638f12956e57548f76c7e2403ba370f7baa249..02364a148b347e3669275553004391e31d77c0b5 100644 +index 64875525df244db838560f5fefb7b1b07b0f1f51..1436fdbe31c8cdf05ac56f20224fe91de4b1c0c3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -@@ -96,12 +96,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc +@@ -94,12 +94,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc public boolean isEmpty() { this.unpackLootTable((Player)null); // Paper start @@ -3269,10 +3253,10 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 356107688a5d40d1c462b164f61af82f4dfd3926..2ecb8bfd98c141e9f5e7f4e441c8df91e1b9fbc2 100644 +index e011cfcdda2e0a609d4158b0454bdf046b04c9d9..6550d4ea03b5b56159b19e297f03b0b141c59c62 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper +@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -3281,7 +3265,7 @@ index 356107688a5d40d1c462b164f61af82f4dfd3926..2ecb8bfd98c141e9f5e7f4e441c8df91 private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -1124,6 +1124,11 @@ public final class CraftServer implements Server { +@@ -1120,6 +1120,11 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); @@ -3306,10 +3290,10 @@ index 96d772eb02f79f8c478f5e6f065e387aa7665b18..c5ce412f321b8b4f31cc042893659e21 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 548c77592a3520e8053483644eba805079a14f1a..397c10f64db3a4d7296fe18585b56851bc3a1f01 100644 +index ec2396f0e5d62b10450eaa7239a8c5479638b3c3..c909efd2060dc95bd3ecb8c9fec36a1e69a642ff 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -485,7 +485,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -482,7 +482,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0002-Rebrand.patch similarity index 96% rename from patches/server/0001-Rebrand.patch rename to patches/server/0002-Rebrand.patch index 68e911c0f..a9776ca71 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,27 +5,29 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 58da26ad2f128ba0b66f86820f60853f4be352f0..12f4b3d753b56947e3759888ba3d98fa693c2a3f 100644 +index 5134bd15ff55d3407dec6756663394535a0ddf69..a627c4b4814cde0581884145eba498a76baed0b2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { +@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { val alsoShade: Configuration by configurations.creating dependencies { -- implementation(project(":paper-api")) -- implementation(project(":paper-mojangapi")) +- implementation(project(":pufferfish-api")) // Pufferfish // Paper +- // Pufferfish start +- implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") { + // Purpur start + implementation(project(":purpur-api")) + implementation("io.papermc.paper:paper-mojangapi:${project.version}") { -+ exclude("io.papermc.paper", "paper-api") -+ } + exclude("io.papermc.paper", "paper-api") + } +- // Pufferfish end + // Purpur end // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -51,6 +55,10 @@ dependencies { - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") +@@ -62,6 +62,10 @@ dependencies { + } + // Pufferfish end + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur @@ -34,16 +36,16 @@ index 58da26ad2f128ba0b66f86820f60853f4be352f0..12f4b3d753b56947e3759888ba3d98fa testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -70,7 +78,7 @@ tasks.jar { +@@ -89,7 +93,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Paper-$implementationVersion", -+ "Implementation-Version" to "git-Purpur-$implementationVersion", // Purpur +- "Implementation-Version" to "git-Pufferfish-$implementationVersion", // Pufferfish ++ "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -154,7 +162,7 @@ fun TaskContainer.registerRunTask( +@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -175,10 +177,10 @@ index e047dee632022abfe05865d1e71838be8d5d053a..888e31a0454888c36cb27602a28619f1 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..88b79cd90e936e1c48b84d7f762f425e1ae09259 100644 +index 53d0a930ae5ec34c1f3a58e96e92f54dd9c7881c..6e8d7a22e9301704fd8d3e08e806b186f2578038 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -954,7 +954,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Spigot - Spigot > // CraftBukkit - cb > vanilla! -+ return "Purpur"; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! +- return "Pufferfish"; // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! ++ return "Purpur"; // Purpur - Purpur > // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e011cfcdda2e0a609d4158b0454bdf046b04c9d9..ace8ef2a55cf8e87d092f0b67b2d64b3a9e4f366 100644 +index 6550d4ea03b5b56159b19e297f03b0b141c59c62..aa4ec4d17880230bb59b0fa8aabdb2212e95015f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { -- private final String serverName = "Paper"; // Paper -+ private final String serverName = "Purpur"; // Paper // Purpur +- private final String serverName = "Pufferfish"; // Paper // Pufferfish ++ private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); @@ -263,28 +265,28 @@ index 700932b65e4fda560d684b0aa079bcee3923f73e..d1b1bc4845fc9519fc892e962c3e7d89 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index ec2396f0e5d62b10450eaa7239a8c5479638b3c3..72bb60535d2f35435ae8b96faced60a1b8d70db6 100644 +index c909efd2060dc95bd3ecb8c9fec36a1e69a642ff..6eeebfaf577263316f3562a8f968310acd616763 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -482,7 +482,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { -- return new com.destroystokyo.paper.PaperVersionFetcher(); -+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur - TODO: Pufferfish +- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish ++ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 774556a62eb240da42e84db4502e2ed43495be17..fb87620c742ff7912f5e8ccd2a7930dd605576d9 100644 +index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; -- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); -+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Purpur +- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish ++ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur Properties properties = new Properties(); if (stream != null) { diff --git a/patches/unapplied/server/0002-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch similarity index 89% rename from patches/unapplied/server/0002-Fix-pufferfish-issues.patch rename to patches/server/0003-Fix-pufferfish-issues.patch index 6ded7b179..330f063d9 100644 --- a/patches/unapplied/server/0002-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/build.gradle.kts b/build.gradle.kts -index 57739f9dd7d045d1a585a9fc1be290a1a007db6a..f8b27b3992f1d59bf0e95bba0961540e88345754 100644 +index a627c4b4814cde0581884145eba498a76baed0b2..790835a0c4889d17b4efd06cb463744973642a48 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -229,5 +229,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> +@@ -233,5 +233,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> } tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" @@ -18,7 +18,7 @@ index 57739f9dd7d045d1a585a9fc1be290a1a007db6a..f8b27b3992f1d59bf0e95bba0961540e + jvmArgs("-DPaper.isRunDev=true") } diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index cc66657cb4f978aa2df3ca1be6c683759952cc7a..26f08b7fb16484c39135ed172c246f76c9e089c7 100644 +index 0dd3374468e05f7a312ba5856b9cf8a4787dfa59..960c0555a001fe63de78d77d5ea47d08a520d029 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -224,7 +224,7 @@ public class PufferfishConfig { @@ -40,10 +40,10 @@ index cc66657cb4f978aa2df3ca1be6c683759952cc7a..26f08b7fb16484c39135ed172c246f76 "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c1b03e4c37ea85ddf283479682d0eb2eca57ee3c..cf2fd8eba6aa4cf15cac924577507a700f7f72b5 100644 +index 66cbea2fd146bdabf1241dae72bd76dc256afe45..5493e7e8ec1de5bb52ee7bd145e436fdb03e59b6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -976,7 +976,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -993,7 +993,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -53,10 +53,10 @@ index c1b03e4c37ea85ddf283479682d0eb2eca57ee3c..cf2fd8eba6aa4cf15cac924577507a70 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1e2620338f0b6fd1c160a8f8d6b659e273f2f1c9..6c0e33323922de72dcb941a10883a07c72808b5f 100644 +index 3fb317e5df780abb7fa8c3d78717306cad2bc650..879f9ba2395b2856e8cd0c78a2b25782e29a7234 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -210,7 +210,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -213,7 +213,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); @@ -66,7 +66,7 @@ index 1e2620338f0b6fd1c160a8f8d6b659e273f2f1c9..6c0e33323922de72dcb941a10883a07c protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index b78476223637722efe12520d3c2e301603abd8a1..e2ea90469352346b43f0a86746179a6adc53d82a 100644 +index 7fd68d4aba72b15b2e21e5c88b44e677b794fe57..b9aca339851cdaa6325c04e5cea847904752c63c 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -122,7 +122,7 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch similarity index 96% rename from patches/server/0002-Purpur-config-files.patch rename to patches/server/0004-Purpur-config-files.patch index 9a29d40b2..52daf6d04 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 4b002e8b75d117b726b0de274a76d3596fce015b..9713263c3bd34ab8a3bfc0a8797ba0b1b88ed733 100644 +index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -593,7 +593,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { -- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); -+ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur +- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish ++ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); @@ -26,11 +26,11 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..9713263c3bd34ab8a3bfc0a8797ba0b1 - final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion(); - if (implVersion != null) { - final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1); -- paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); +- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish - } else { - paperVersion = "unknown"; - } -- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion)); +- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur + metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur @@ -72,7 +72,7 @@ index 14f4c0a93372a58cf36dc95265b5e210ea1605e5..ff27787313a3337e29eac6f623b08f1f boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 58536aabf607015939a1326f80207c0a06eed8ff..e5aa98430309eef04770fb68fd8314ac97fde167 100644 +index 3b8c810a228a59bf02a8557b229e5eca56c16562..5ebe7e5c4f12ccb8a91a1e6a0f029d0f54b09e15 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -92,7 +92,7 @@ index 58536aabf607015939a1326f80207c0a06eed8ff..e5aa98430309eef04770fb68fd8314ac io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0b56e5f7f18fc4286992af22d402205b771165a3..d89e36f90c7d84eaa627ef1dd9002ea0a03d8a79 100644 +index 879f9ba2395b2856e8cd0c78a2b25782e29a7234..b13b0be860df85af973c36f0ef10bfe09aa0aaf9 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -179,6 +179,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -103,7 +103,7 @@ index 0b56e5f7f18fc4286992af22d402205b771165a3..d89e36f90c7d84eaa627ef1dd9002ea0 public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -216,6 +217,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -218,6 +219,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper @@ -112,7 +112,7 @@ index 0b56e5f7f18fc4286992af22d402205b771165a3..d89e36f90c7d84eaa627ef1dd9002ea0 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index ace8ef2a55cf8e87d092f0b67b2d64b3a9e4f366..29f28a197d39b58c6eb3eac14b788dafb7768d91 100644 +index aa4ec4d17880230bb59b0fa8aabdb2212e95015f..eb6b2727d43ca991ef99a88413de95c1546b7696 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1037,6 +1037,7 @@ public final class CraftServer implements Server { @@ -139,7 +139,7 @@ index ace8ef2a55cf8e87d092f0b67b2d64b3a9e4f366..29f28a197d39b58c6eb3eac14b788daf this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3011,6 +3014,18 @@ public final class CraftServer implements Server { +@@ -3016,6 +3019,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch similarity index 100% rename from patches/server/0003-Purpur-client-support.patch rename to patches/server/0005-Purpur-client-support.patch diff --git a/patches/server/0004-Fix-decompile-errors.patch b/patches/server/0006-Fix-decompile-errors.patch similarity index 100% rename from patches/server/0004-Fix-decompile-errors.patch rename to patches/server/0006-Fix-decompile-errors.patch diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch similarity index 94% rename from patches/server/0005-Component-related-conveniences.patch rename to patches/server/0007-Component-related-conveniences.patch index c415bd65f..fe14a57ff 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 86cf69de7a35f1ac8e2c56f988e74832332470d2..b0e698b2532ed6af84ca2dd0d8b1c795921c5823 100644 +index 393edc13408ed8b3aad36121891eddf75ea321ff..ae9dfb2719ff2372e3a73adc2163330db886dfbe 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1883,6 +1883,26 @@ public class ServerPlayer extends Player { @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf 100644 +index b8810cce6f4995d78dca3691b0a1cbd133a05e06..acb0f8ff57e4e08bdbcb93994064d9d216ac69b5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4125,6 +4125,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4137,6 +4137,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0008-Ridables.patch similarity index 97% rename from patches/server/0006-Ridables.patch rename to patches/server/0008-Ridables.patch index 6bd067d10..0af4dcca0 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,10 +22,10 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 88b79cd90e936e1c48b84d7f762f425e1ae09259..81e4b7254e1c3cb714a9c37d941ff1b5d9e758ed 100644 +index 6e8d7a22e9301704fd8d3e08e806b186f2578038..2dd32f61efa12689b08a54f30deac397ec49cef4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1698,6 +1698,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,7 +34,7 @@ index 88b79cd90e936e1c48b84d7f762f425e1ae09259..81e4b7254e1c3cb714a9c37d941ff1b5 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b78a9628a88f2a495ef6de74446a02a14d41a1f6..d328cc90fc6e333ea3079e462046a017a6cfc6f8 100644 +index 5493e7e8ec1de5bb52ee7bd145e436fdb03e59b6..53131fc1fc02df8f60f0a44dd8c3a5a53e24fddb 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -225,6 +225,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index b78a9628a88f2a495ef6de74446a02a14d41a1f6..d328cc90fc6e333ea3079e462046a017 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b0e698b2532ed6af84ca2dd0d8b1c795921c5823..d5940e560ea890f7f017ff9c37939a485be94540 100644 +index ae9dfb2719ff2372e3a73adc2163330db886dfbe..f709667d2efab5f7dac22bb6e4b0bf32917f71e4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -763,6 +763,15 @@ public class ServerPlayer extends Player { @@ -66,10 +66,10 @@ index b0e698b2532ed6af84ca2dd0d8b1c795921c5823..d5940e560ea890f7f017ff9c37939a48 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 30ccbab1586a656e0ae41d7406525fb02d9e025b..bec249a47f1fbcabd6a121399d19d71e21edccae 100644 +index 20cd751a602593740e87eb79d5059b5fc7856cb5..44b8b9dfc9182a6ce0d01b003749946e90e3aedb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2714,6 +2714,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2715,6 +2715,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index 30ccbab1586a656e0ae41d7406525fb02d9e025b..bec249a47f1fbcabd6a121399d19d71e if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf..3773ae61b9cb747dd33613990339d1e3f363138e 100644 +index acb0f8ff57e4e08bdbcb93994064d9d216ac69b5..7fc1887f68092da224a1ea1c56de474b471a8aee 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -91,7 +91,7 @@ index b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf..3773ae61b9cb747dd33613990339d1e3 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2996,6 +2996,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3008,6 +3008,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf..3773ae61b9cb747dd33613990339d1e3 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3036,6 +3043,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3048,6 +3055,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Spigot end @@ -120,7 +120,7 @@ index b81ec809a0ba2462a9b5a212c0362a6b50d1bfbf..3773ae61b9cb747dd33613990339d1e3 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4925,4 +4940,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4989,4 +5004,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -190,10 +190,10 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e0839a927915 100644 +index 88f736e67107d34514eec231070f42d2ee008e5c..bab5a6c1bcff734620ccb015f071d73b70bbc901 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -206,7 +206,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -285,7 +285,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -215,7 +215,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -336,6 +336,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION); } @@ -223,7 +223,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2701,7 +2702,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2727,7 +2728,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper @@ -232,7 +232,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 Vec3 vec3d = this.getDeltaMovement(); // Paper start long time = System.nanoTime(); -@@ -3479,8 +3480,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3505,8 +3506,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start @@ -245,7 +245,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3490,6 +3493,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3516,6 +3519,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -268,7 +268,7 @@ index 45b1a182acf6b2aef40b714d31ca125d8f74619a..629cfd889ebfbf79b06fc42d81d7e083 // Paper end if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 5af48151159135b869ec4753bbcf79dd257c1570..1fc2b2cee28db5abb8ab33df6fd76de035aef688 100644 +index 1d65d8b3e21373b0f0d2c633742da52d6b208942..05eecaf3147051c44f9c4abce178c3126385c825 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -148,8 +148,8 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -282,7 +282,7 @@ index 5af48151159135b869ec4753bbcf79dd257c1570..1fc2b2cee28db5abb8ab33df6fd76de0 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1384,7 +1384,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1390,7 +1390,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -291,7 +291,7 @@ index 5af48151159135b869ec4753bbcf79dd257c1570..1fc2b2cee28db5abb8ab33df6fd76de0 } public boolean isWithinRestriction() { -@@ -1769,4 +1769,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1775,4 +1775,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -349,13 +349,13 @@ index 5af48151159135b869ec4753bbcf79dd257c1570..1fc2b2cee28db5abb8ab33df6fd76de0 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd21844a12 100644 +index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd44506275206bc9a2d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -23,13 +23,20 @@ public class AttributeMap { - private final Map attributes = Maps.newHashMap(); +@@ -24,14 +24,21 @@ public class AttributeMap { private final Set dirtyAttributes = Sets.newHashSet(); private final AttributeSupplier supplier; + private final java.util.function.Function createInstance; // Pufferfish + private final net.minecraft.world.entity.LivingEntity entity; // Purpur public AttributeMap(AttributeSupplier defaultAttributes) { @@ -366,6 +366,7 @@ index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; + this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { @@ -374,7 +375,7 @@ index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd this.dirtyAttributes.add(instance); } -@@ -41,7 +48,7 @@ public class AttributeMap { +@@ -43,7 +50,7 @@ public class AttributeMap { public Collection getSyncableAttributes() { return this.attributes.values().stream().filter((attribute) -> { @@ -526,7 +527,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5 --this.lookAtCooldown; this.getYRotD().ifPresent((yaw) -> { diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 6b614818b14ecfc8fc82b523eeb7e21fdf9bf1ba..74b28d8a27b702896906603e7a39b91c79561ac5 100644 +index 8820905ac733a8915cc1697259b2bef14d97e471..384fa039b11fb70c2d04df447b689aef3e808968 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -19,6 +19,7 @@ import net.minecraft.world.entity.EntityDimensions; @@ -2125,7 +2126,7 @@ index eecb7511582e5e316b71fa4a4734881424be5ca7..2efa2e19485f9d959a55115ab62f9854 this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..80ff5b8b2041afd7ffef99c33ecd4f5252e827fe 100644 +index d241ca4d0295f9fce39c11197bd435cfac7f6e54..09f796ec491f21520e1fcc454249e4696dad3b1b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -100,10 +100,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -2182,16 +2183,17 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..80ff5b8b2041afd7ffef99c33ecd4f52 @Override protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); -@@ -224,6 +259,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -225,7 +260,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override protected void customServerAiStep() { this.level().getProfiler().push("allayBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 387006271c246362b0df1bfcadca7b7096660003..12fc57798dae50ffdd6118202309c872ab6b332d 100644 +index 9158c5a507904c46a8fe2fdad9a0b6ba3a9b2460..877c1050e4c38943f6e8c3f81fa4f2884aba5b11 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; -@@ -278,6 +295,7 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { @@ -2350,15 +2353,16 @@ index 295769d039f2a1e4f48912a60f9dbe267d8992c1..57a224aa5a1008aa6bdbe268099974f9 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -162,6 +211,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -163,7 +212,7 @@ public class Frog extends Animal implements VariantHolder { @Override protected void customServerAiStep() { this.level().getProfiler().push("frogBrain"); -+ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); -@@ -347,7 +397,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -349,7 +398,7 @@ public class Frog extends Animal implements VariantHolder { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2368,7 +2372,7 @@ index 295769d039f2a1e4f48912a60f9dbe267d8992c1..57a224aa5a1008aa6bdbe268099974f9 super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..e46475c2d44923167da7c654cb8af6b6278c7149 100644 +index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..3103df74b7ae5a5ed841bf97794284cd43ad59de 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish { @@ -2423,17 +2427,18 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..e46475c2d44923167da7c654cb8af6b6 @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); -@@ -80,7 +117,7 @@ public class Tadpole extends AbstractFish { +@@ -81,8 +118,7 @@ public class Tadpole extends AbstractFish { @Override protected void customServerAiStep() { this.level().getProfiler().push("tadpoleBrain"); +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); -+ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.level().getProfiler().pop(); this.level().getProfiler().push("tadpoleActivityUpdate"); TadpoleAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 111a244087e24f25ba8524a46a228da10cd9498a..e48ff5d0592f0d91974a49fd7ed1d0ee97172abe 100644 +index ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b..fef3b7d193d20c4fdd50b38c6a0371f05165a49d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -92,6 +92,23 @@ public class Goat extends Animal { @@ -2460,11 +2465,12 @@ index 111a244087e24f25ba8524a46a228da10cd9498a..e48ff5d0592f0d91974a49fd7ed1d0ee @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -194,6 +211,7 @@ public class Goat extends Animal { +@@ -195,7 +212,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { this.level().getProfiler().push("goatBrain"); -+ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); @@ -2929,7 +2935,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..152111ff4c29e6cf13afeba8c9707f40 this.dragonFight.updateDragon(this); } 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 c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..f0fa5f69985dde27d0e7dd1ed2c96d31137be647 100644 +index 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258ce0f4b46 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 @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -3078,7 +3084,7 @@ index c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..f0fa5f69985dde27d0e7dd1ed2c96d31 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -256,6 +370,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -3095,7 +3101,7 @@ index c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..f0fa5f69985dde27d0e7dd1ed2c96d31 int i; if (this.getInvulnerableTicks() > 0) { -@@ -576,11 +700,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -583,11 +707,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3440,7 +3446,7 @@ index efc1d49c5bfea7d1674b8a9de2c8b617657eda0f..37afe706c5c453003ea96e62f376f45d return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 bd5996eef2d946e9d7765b6b315bc5951158810e..14c614dfdffd27756298b0105f0dbe139047e251 100644 +index 0d51f435f18f3f9d59a3241a0b7fa1c4af841b72..21e5102761876ceafce87fc824bf8392c354341a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -98,9 +98,27 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3488,7 +3494,7 @@ index bd5996eef2d946e9d7765b6b315bc5951158810e..14c614dfdffd27756298b0105f0dbe13 float f = this.getLightLevelDependentMagicValue(); if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -409,6 +428,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -415,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -4831,7 +4837,7 @@ index 1afe8a8694c1fd0bf43ce3c0c36a83fda9aec141..252d2994fac423ea1fef36bdc7c09778 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 4257f2282152aee09533c9a2e53018d3e49effa4..e2ff79328877e417193849a81ae5342a5d0701e2 100644 +index e703320717ff620a19ff76d1c10066117c9895d5..d040198ce528293ed95adcdb17ddf0acbc5a93e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -69,6 +69,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -4858,16 +4864,17 @@ index 4257f2282152aee09533c9a2e53018d3e49effa4..e2ff79328877e417193849a81ae5342a @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -131,6 +148,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -132,7 +149,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("hoglinBrain"); -+ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..89d2a5b17b7f948fff041d8aec51424b54d3ea49 100644 +index cfdc1650783d6855e0d4f33ec68aab48dbee09f0..f57d7fee1ece00aba9bc7b07dda8398e7acc73c3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -96,6 +96,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -4894,11 +4901,12 @@ index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..89d2a5b17b7f948fff041d8aec51424b @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -@@ -303,6 +320,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -304,7 +321,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBrain"); -+ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); PiglinAi.updateActivity(this); @@ -4939,7 +4947,7 @@ index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024 this.level().getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 9f1b7c629644931074293151ed58a523ca6d488c..53035057b715401381b4f5438c82a61fe6012a7e 100644 +index 58a7e61e02b7d72326ed4d57ee514adb63b3873c..63e4688d8055cf4a8883477f7943bf63520c0693 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -123,8 +123,32 @@ public class Warden extends Monster implements VibrationSystem { @@ -4975,7 +4983,7 @@ index 9f1b7c629644931074293151ed58a523ca6d488c..53035057b715401381b4f5438c82a61f @Override public Packet getAddEntityPacket() { return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -396,19 +420,16 @@ public class Warden extends Monster implements VibrationSystem { +@@ -398,19 +422,16 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4999,10 +5007,10 @@ index 9f1b7c629644931074293151ed58a523ca6d488c..53035057b715401381b4f5438c82a61f public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { 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 11935e5b16324af572b07c5b173708f5a91f8289..42cfa847b29d8f265c7059bf4f93319ce938ee05 100644 +index 6b869c05bbdb13e23ecaa2c38e0cb05bda5a083d..4ae36a344143c5aed4266dfef2920ff3d83b1b48 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -157,6 +157,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -5031,21 +5039,22 @@ index 11935e5b16324af572b07c5b173708f5a91f8289..42cfa847b29d8f265c7059bf4f93319c @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -254,7 +276,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -257,11 +279,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void customServerAiStep(final boolean inactive) { // Paper end this.level().getProfiler().push("villagerBrain"); -- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper +- // Pufferfish start +- if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) { + // Purpur start -+ // if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish -+ if (!inactive && (getRider() == null || !this.isControllable())) { // Purpur - only use brain if no rider -+ this.getBrain().tick((ServerLevel) this.level(), this); // Paper -+ } ++ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider + this.getBrain().tick((ServerLevel) this.level(), this); // Paper + } +- // Pufferfish end + // Purpur end this.level().getProfiler().pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -311,7 +338,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -318,7 +340,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -5054,7 +5063,7 @@ index 11935e5b16324af572b07c5b173708f5a91f8289..42cfa847b29d8f265c7059bf4f93319c } else { boolean flag = this.getOffers().isEmpty(); -@@ -324,8 +351,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -331,8 +353,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { @@ -5163,7 +5172,7 @@ index 78dd3365dc4d1265fc2102f740d75a384f5df5c5..4a2331c22a022881d66bcfd4134b0ffe public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1727e932ac6b9ca09b5df96f9547ff125114e15a..f8ac77be62ee1220e0373ade55fdee1cb32750e9 100644 +index 17113544383fb4e6373d8f6151c536fecb00e0be..1c89cbf1a582604ed4be0849bd65dae5eb17f28a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1227,4 +1227,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch similarity index 99% rename from patches/server/0007-Configurable-entity-base-attributes.patch rename to patches/server/0009-Configurable-entity-base-attributes.patch index 3aa2dae30..aefc5e19b 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index eed3fa6b14b1e93f8d6571bba5675796e3418f49..dc685733cbbd83408437085602e7a7c18d109e29 100644 +index 7fc1887f68092da224a1ea1c56de474b471a8aee..90c3abe376a89179662022bed1ed390c89ec4279 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -157,7 +157,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,10 +34,10 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 629cfd889ebfbf79b06fc42d81d7e0839a927915..23a59cf45f89f3d4d9ac98aada26a9027c2485f0 100644 +index bab5a6c1bcff734620ccb015f071d73b70bbc901..0ec25e8bc94b8abb144b47d60e6cfa54c360156f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,7 +45,7 @@ index 629cfd889ebfbf79b06fc42d81d7e0839a927915..23a59cf45f89f3d4d9ac98aada26a902 this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -302,6 +303,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -301,6 +302,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -55,7 +55,7 @@ index 629cfd889ebfbf79b06fc42d81d7e0839a927915..23a59cf45f89f3d4d9ac98aada26a902 return this.brain; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 74b28d8a27b702896906603e7a39b91c79561ac5..6aec149f450e0559c613dcc272ba48634d0083c0 100644 +index 384fa039b11fb70c2d04df447b689aef3e808968..92777e7f6c6293c5b5689cfa5f992335629d05eb 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -268,6 +268,18 @@ public class Bat extends AmbientCreature { @@ -459,7 +459,7 @@ index 2efa2e19485f9d959a55115ab62f985454689379..eecdb1f1d49951cb8a294d176afd12c6 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 12fc57798dae50ffdd6118202309c872ab6b332d..287fa341c3ec5c3e63c6646b0f88485fcbbdbe51 100644 +index 877c1050e4c38943f6e8c3f81fa4f2884aba5b11..c7d9c34582b52d0bb088c624bd909ad5acb248fa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -115,6 +115,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder= items.length) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8ad548fc059568d37675e017548b171d4dd1d555..7937023274acf3a1efdd21bbdd2f933f4399baeb 100644 +index 463af65182c0894a75a138df8100f3f616143f4c..a0eb18409f72afe393581e6dc8e2260b3a25197f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -177,4 +177,39 @@ public class PurpurConfig { diff --git a/patches/server/0009-Llama-API.patch b/patches/server/0011-Llama-API.patch similarity index 100% rename from patches/server/0009-Llama-API.patch rename to patches/server/0011-Llama-API.patch diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0012-AFK-API.patch similarity index 97% rename from patches/server/0010-AFK-API.patch rename to patches/server/0012-AFK-API.patch index a2b380dcc..24f8600ac 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index f709667d2efab5f7dac22bb6e4b0bf32917f71e4..387e2423d820e4df1d226ce6159a361d return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index bec249a47f1fbcabd6a121399d19d71e21edccae..85d927e7970480f98ceeb7926e27413f893ec5a6 100644 +index 44b8b9dfc9182a6ce0d01b003749946e90e3aedb..57fb7dc5bb61f4433c6569c8d46656762dcc0cc1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -326,6 +326,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -124,7 +124,7 @@ index bec249a47f1fbcabd6a121399d19d71e21edccae..85d927e7970480f98ceeb7926e27413f // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1495,7 +1517,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { flag2 = true; // Paper - diff on change, this should be moved wrongly if (event.getLogWarning()) @@ -133,7 +133,7 @@ index bec249a47f1fbcabd6a121399d19d71e21edccae..85d927e7970480f98ceeb7926e27413f } // Paper end } -@@ -1556,6 +1578,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1557,6 +1579,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -177,7 +177,7 @@ index 2986c3b1c9dd7f3a00ed7f25b25bfc2b513b35eb..8d199ed2f0b2f50a57f9854cc1400548 private EntitySelector() {} // Paper start diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..631b6f26c96e7de65c8ab5377f1b82c7f56df96c 100644 +index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195c47cc9f8 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -317,10 +317,10 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 59103744ac6beeb12719fdefcda54eeff498229e..30050800118a474dfd0a23cb66fd55de4c65ca1e 100644 +index c0333ba8e57cd284bb8ab15181da6b39d55872f9..282a57df4e2e5708e9cfd9c76b1d7de2a8a23900 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -199,6 +199,7 @@ public class ActivationRange +@@ -203,6 +203,7 @@ public class ActivationRange continue; } diff --git a/patches/server/0011-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch similarity index 91% rename from patches/server/0011-Bring-back-server-name.patch rename to patches/server/0013-Bring-back-server-name.patch index b147679cb..c5b93a6cb 100644 --- a/patches/server/0011-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 1643186bcb2caf5d29fd551afd35830726dbb80a..d53e0b67d847dfec2f4b118b5ca3f0ed public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 29f28a197d39b58c6eb3eac14b788dafb7768d91..519a42c881c05db60f7e9efd22f1692ccf7359d3 100644 +index eb6b2727d43ca991ef99a88413de95c1546b7696..95ecdbc0d06d4ca7afb1be62d25a09cda33a236b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3244,4 +3244,11 @@ public final class CraftServer implements Server { +@@ -3249,4 +3249,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0014-Configurable-server-mod-name.patch similarity index 74% rename from patches/server/0012-Configurable-server-mod-name.patch rename to patches/server/0014-Configurable-server-mod-name.patch index 699e110d8..c6cba8379 100644 --- a/patches/server/0012-Configurable-server-mod-name.patch +++ b/patches/server/0014-Configurable-server-mod-name.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 81e4b7254e1c3cb714a9c37d941ff1b5d9e758ed..6339131c21398928e771a3172603da3a9c02561b 100644 +index 2dd32f61efa12689b08a54f30deac397ec49cef4..c19d456168d36c1c2ea7823f47b25644798a97c7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1867,7 +1867,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! -+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! +- return "Purpur"; // Purpur - Purpur > // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! ++ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3fba9f640ef03219c89a2a405e4d5a5870e366bf..bb7acf61cf2928181d014a17166d4d1414218e01 100644 +index 7312ae7323032a0ba3c47aa7bdfe5dffe9674535..881c5654f181ea9b66e1cdf3bc3bf46869e8557f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -188,6 +188,11 @@ public class PurpurConfig { diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch similarity index 92% rename from patches/server/0013-LivingEntity-safeFallDistance.patch rename to patches/server/0015-LivingEntity-safeFallDistance.patch index 4c56e241d..808fa632e 100644 --- a/patches/server/0013-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b8375bba69aa8e46db334a1094a071665d9c1a8b..bcdf09cdc8bd54068440237f0a4a1039c8f0750a 100644 +index 0ec25e8bc94b8abb144b47d60e6cfa54c360156f..0dceaee37d67d64f73d0434f480934aab320b0e6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -252,6 +252,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected boolean skipDropExperience; // CraftBukkit start public int expToDrop; @@ -16,7 +16,7 @@ index b8375bba69aa8e46db334a1094a071665d9c1a8b..bcdf09cdc8bd54068440237f0a4a1039 public boolean forceDrops; public ArrayList drops = new ArrayList<>(); // Paper public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -352,7 +353,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); } @@ -25,7 +25,7 @@ index b8375bba69aa8e46db334a1094a071665d9c1a8b..bcdf09cdc8bd54068440237f0a4a1039 double d1 = this.getX(); double d2 = this.getY(); double d3 = this.getZ(); -@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -367,7 +368,7 @@ public abstract class LivingEntity extends Entity implements Attackable { d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; } @@ -34,7 +34,7 @@ index b8375bba69aa8e46db334a1094a071665d9c1a8b..bcdf09cdc8bd54068440237f0a4a1039 double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2068,7 +2069,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2094,7 +2095,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch similarity index 89% rename from patches/server/0014-Lagging-threshold.patch rename to patches/server/0016-Lagging-threshold.patch index 566fa0db3..6becde628 100644 --- a/patches/server/0014-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6339131c21398928e771a3172603da3a9c02561b..c442cf9a6856715ab7c404eb8e287bd67e20ae06 100644 +index c19d456168d36c1c2ea7823f47b25644798a97c7..9c176d77420ffe0acdb57b333602c5e2102660a6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -307,6 +307,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT +@@ -320,6 +320,16 @@ public class EntityType implements FeatureElement, EntityTypeT return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error } @@ -25,7 +25,7 @@ index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..b04f03d422a9ed4c6bf090e895a2d9a7 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -533,6 +543,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -535,6 +545,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0018-Anvil-API.patch similarity index 100% rename from patches/server/0016-Anvil-API.patch rename to patches/server/0018-Anvil-API.patch diff --git a/patches/server/0017-Alternative-Keepalive-Handling.patch b/patches/server/0019-Alternative-Keepalive-Handling.patch similarity index 100% rename from patches/server/0017-Alternative-Keepalive-Handling.patch rename to patches/server/0019-Alternative-Keepalive-Handling.patch diff --git a/patches/server/0018-Silk-touch-spawners.patch b/patches/server/0020-Silk-touch-spawners.patch similarity index 100% rename from patches/server/0018-Silk-touch-spawners.patch rename to patches/server/0020-Silk-touch-spawners.patch diff --git a/patches/server/0019-Add-turtle-egg-block-options.patch b/patches/server/0021-Add-turtle-egg-block-options.patch similarity index 100% rename from patches/server/0019-Add-turtle-egg-block-options.patch rename to patches/server/0021-Add-turtle-egg-block-options.patch diff --git a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch similarity index 98% rename from patches/server/0020-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0022-Logger-settings-suppressing-pointless-logs.patch index 810a3a38a..c74a616ec 100644 --- a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch @@ -53,7 +53,7 @@ index 2677e21d8239bf0361a3bc5c9a50c328e54d70f6..544a79d5da661aff19e2019f7b83a3a4 if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { new Exception().printStackTrace(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ad239ba9259c5a63b40261ebc44224893496b47d..308d7556f5b12c0aa5b2fde5a23ef6fbacb303de 100644 +index a14cf3a5dc2ba265de5e400404afcbd9faa3f25a..a14879f4266c71b7493c05e105114590c6709045 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -237,4 +237,15 @@ public class PurpurConfig { diff --git a/patches/server/0021-Disable-outdated-build-check.patch b/patches/server/0023-Disable-outdated-build-check.patch similarity index 92% rename from patches/server/0021-Disable-outdated-build-check.patch rename to patches/server/0023-Disable-outdated-build-check.patch index 18c82283b..e2fc69e4c 100644 --- a/patches/server/0021-Disable-outdated-build-check.patch +++ b/patches/server/0023-Disable-outdated-build-check.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index fa38d6dd3a7439de3b2503a90637eabb3e6dd8ec..f93c8a4ca38e7d892b6941d3669445789c2fc227 100644 +index 4f81321727b754c0e101bb05bc6474203412e89e..cce747b8a2d87d81429dfaf1e0073b1ea4b1a5d2 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -301,7 +301,7 @@ public class Main { diff --git a/patches/server/0022-Giants-AI-settings.patch b/patches/server/0024-Giants-AI-settings.patch similarity index 100% rename from patches/server/0022-Giants-AI-settings.patch rename to patches/server/0024-Giants-AI-settings.patch diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0025-Zombie-horse-naturally-spawn.patch similarity index 95% rename from patches/server/0023-Zombie-horse-naturally-spawn.patch rename to patches/server/0025-Zombie-horse-naturally-spawn.patch index e84f9f734..7bad0655a 100644 --- a/patches/server/0023-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0025-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 35cc427755cccb123a866220bd2a72cdbd723465..231d4065b1129815d443e76269eefba45857b59a 100644 +index 53131fc1fc02df8f60f0a44dd8c3a5a53e24fddb..7126dacffb7302927a6ca88ce3bfdec975ee342f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1001,10 +1001,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1017,10 +1017,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0024-Charged-creeper-naturally-spawn.patch b/patches/server/0026-Charged-creeper-naturally-spawn.patch similarity index 96% rename from patches/server/0024-Charged-creeper-naturally-spawn.patch rename to patches/server/0026-Charged-creeper-naturally-spawn.patch index 17b39e014..8442e2226 100644 --- a/patches/server/0024-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0026-Charged-creeper-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index e31094f270117dec3053620c06e409953fb6d710..a1e3f29ce49dc41ad70f74ee224250fe9ebea175 100644 +index 33ba948bafc879f6e9cd28f7fe6bce85628cc463..7770880c9525805b67199f3c6b54618af15d106f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob { diff --git a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 100% rename from patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch diff --git a/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0027-Tulips-change-fox-type.patch b/patches/server/0029-Tulips-change-fox-type.patch similarity index 100% rename from patches/server/0027-Tulips-change-fox-type.patch rename to patches/server/0029-Tulips-change-fox-type.patch diff --git a/patches/server/0028-Breedable-Polar-Bears.patch b/patches/server/0030-Breedable-Polar-Bears.patch similarity index 100% rename from patches/server/0028-Breedable-Polar-Bears.patch rename to patches/server/0030-Breedable-Polar-Bears.patch diff --git a/patches/server/0029-Chickens-can-retaliate.patch b/patches/server/0031-Chickens-can-retaliate.patch similarity index 100% rename from patches/server/0029-Chickens-can-retaliate.patch rename to patches/server/0031-Chickens-can-retaliate.patch diff --git a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch similarity index 96% rename from patches/server/0030-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0032-Add-option-to-set-armorstand-step-height.patch index 811dd9eab..2bb7ff6f8 100644 --- a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4e21ff640261d95f7db1134793fb5e2e91015fd6..e664ca676c21b1c7fdc9df00797060053901e1f7 100644 +index 90c3abe376a89179662022bed1ed390c89ec4279..5cc0caee5ba7d63fb1ec4144623ec9a94401c86c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -335,7 +335,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0031-Cat-spawning-options.patch b/patches/server/0033-Cat-spawning-options.patch similarity index 100% rename from patches/server/0031-Cat-spawning-options.patch rename to patches/server/0033-Cat-spawning-options.patch diff --git a/patches/server/0032-Cows-eat-mushrooms.patch b/patches/server/0034-Cows-eat-mushrooms.patch similarity index 100% rename from patches/server/0032-Cows-eat-mushrooms.patch rename to patches/server/0034-Cows-eat-mushrooms.patch diff --git a/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0034-Pigs-give-saddle-back.patch b/patches/server/0036-Pigs-give-saddle-back.patch similarity index 100% rename from patches/server/0034-Pigs-give-saddle-back.patch rename to patches/server/0036-Pigs-give-saddle-back.patch diff --git a/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch similarity index 100% rename from patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch diff --git a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch b/patches/server/0038-Ender-dragon-always-drop-full-exp.patch similarity index 100% rename from patches/server/0036-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0038-Ender-dragon-always-drop-full-exp.patch diff --git a/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 100% rename from patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch diff --git a/patches/server/0038-Minecart-settings-and-WASD-controls.patch b/patches/server/0040-Minecart-settings-and-WASD-controls.patch similarity index 99% rename from patches/server/0038-Minecart-settings-and-WASD-controls.patch rename to patches/server/0040-Minecart-settings-and-WASD-controls.patch index ff2930545..cccdbf951 100644 --- a/patches/server/0038-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0040-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f9db41f311ad564380587bb2a0b69129e93ef87c..cf38a82b53d98aae4938fededcdad7d9110f3c40 100644 +index 387e2423d820e4df1d226ce6159a361d6a808fd9..e2e25a4ac86156f0915a0b9886a6f62b2812920b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1111,6 +1111,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch similarity index 91% rename from patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch index 9de211d4e..cb6cab43c 100644 --- a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a8d09f76361cc3146aaeba72b7338049b30eb2cb..ade6fcdf6f6fd80bc91ffc313226a41ba0c4e18d 100644 +index 0dceaee37d67d64f73d0434f480934aab320b0e6..4d0332666d705610d3e48c96462ef655f2fd2ed5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1828,6 +1828,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1840,6 +1840,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index a8d09f76361cc3146aaeba72b7338049b30eb2cb..ade6fcdf6f6fd80bc91ffc313226a41b this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1836,6 +1837,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1848,6 +1849,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch similarity index 100% rename from patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch diff --git a/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 91% rename from patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch index bfc7326f3..7d51111f6 100644 --- a/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch +++ b/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch @@ -5,7 +5,7 @@ Subject: [PATCH] End gateway should check if entity can use portal diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 1ec80f9c901dff1c9f29befa5a8e3c3f6f37aaf7..9717b37aef9f487502e696c209ae209ab3b8f000 100644 +index 7491e075baebc7d412d35593bb844b200e304447..2e264b8b13df9da9163a80b3dd4345af3cff431c 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -177,6 +177,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { diff --git a/patches/server/0042-Skip-events-if-there-s-no-listeners.patch b/patches/server/0044-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0042-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0044-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0043-Add-permission-for-F3-N-debug.patch b/patches/server/0045-Add-permission-for-F3-N-debug.patch similarity index 100% rename from patches/server/0043-Add-permission-for-F3-N-debug.patch rename to patches/server/0045-Add-permission-for-F3-N-debug.patch diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0046-Configurable-TPS-Catchup.patch similarity index 88% rename from patches/server/0044-Configurable-TPS-Catchup.patch rename to patches/server/0046-Configurable-TPS-Catchup.patch index f2f87875a..bc442083b 100644 --- a/patches/server/0044-Configurable-TPS-Catchup.patch +++ b/patches/server/0046-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c442cf9a6856715ab7c404eb8e287bd67e20ae06..0d4d62757e7b15767ec62f59e287ab3a94be8c03 100644 +index 9c176d77420ffe0acdb57b333602c5e2102660a6..9b757a89bc00deef41bd9adc614bbeff30975034 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1218,7 +1218,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return Component.Serializer.toJson(Component.literal(s)); -@@ -1251,10 +1254,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1252,10 +1255,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 34a369dd615c4701d1bfb66a51623eab8e0b3080..2d29caa16c754b06cbfe91038b673668 Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1264,11 +1270,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1265,11 +1271,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 34a369dd615c4701d1bfb66a51623eab8e0b3080..2d29caa16c754b06cbfe91038b673668 } } -@@ -1281,6 +1287,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1282,6 +1288,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch similarity index 89% rename from patches/server/0070-Entity-lifespan.patch rename to patches/server/0072-Entity-lifespan.patch index 096a3e99c..bfc4acf23 100644 --- a/patches/server/0070-Entity-lifespan.patch +++ b/patches/server/0072-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 22e0370498dac0f56e29ae483097bf453a277450..224e0453fc51224e8a4937a1d089053e54b6f9e0 100644 +index 166943d26c1123d07080cb1d0e0f081cfff06246..18c614881388610fb78bd5101c54ffbb3c753e55 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2741,6 +2741,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2742,6 +2742,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { @@ -17,7 +17,7 @@ index 22e0370498dac0f56e29ae483097bf453a277450..224e0453fc51224e8a4937a1d089053e 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 ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b997397cc 100644 +index a05a7cf2c28b62011a3477c5155a05a93ecab548..906f3ed7883cd220734a92a5f032ec89674f5b97 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -28,7 +28,7 @@ index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -323,6 +324,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -325,6 +326,7 @@ public abstract class Mob extends LivingEntity implements Targeting { entityliving = null; } } @@ -36,7 +36,7 @@ index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b this.target = entityliving; return true; // CraftBukkit end -@@ -370,8 +372,28 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -372,8 +374,28 @@ public abstract class Mob extends LivingEntity implements Targeting { } this.level().getProfiler().pop(); @@ -65,7 +65,7 @@ index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b @Override protected void playHurtSound(DamageSource source) { this.resetAmbientSoundTime(); -@@ -561,6 +583,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -563,6 +585,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b } @Override -@@ -631,6 +654,11 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -633,6 +656,11 @@ public abstract class Mob extends LivingEntity implements Targeting { this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,7 +85,7 @@ index ed72f020394f4dd0f1fb21953e69b1aa9716b262..b98bf8243e8014f8ef4aa0cfaddf301b } @Override -@@ -1703,6 +1731,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1709,6 +1737,7 @@ public abstract class Mob extends LivingEntity implements Targeting { this.setLastHurtMob(target); } diff --git a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 96% rename from patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 4aedb8e9b..260e98fd4 100644 --- a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,10 +36,10 @@ index e2e25a4ac86156f0915a0b9886a6f62b2812920b..47cc6799f0d48debe4b63280a6814ead + // 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 83e74527b730a644a69f582b218dbc8d4f35ee61..1ba0b1975135eb29d59f1153e9f5c5019e488bd8 100644 +index 57ffb039cf27117ec1ec1c822f9693a8ef03f6b7..f3d882c889fc6eab2ced0efd0f17404ca6905a5d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -426,6 +426,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { diff --git a/patches/server/0072-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch similarity index 94% rename from patches/server/0072-Squid-EAR-immunity.patch rename to patches/server/0074-Squid-EAR-immunity.patch index e308ba494..6b0852511 100644 --- a/patches/server/0072-Squid-EAR-immunity.patch +++ b/patches/server/0074-Squid-EAR-immunity.patch @@ -25,7 +25,7 @@ index 3d7726bd54781e922f9d2b5b1fea510d6295919e..3557d668d5117aaaef2fde0792b58c7e public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 30050800118a474dfd0a23cb66fd55de4c65ca1e..3fb2ae23bcbf0c397e91a958796f13a2dfedd152 100644 +index 282a57df4e2e5708e9cfd9c76b1d7de2a8a23900..a7ecbd77d0017a298b94cceeddc049eff713f60f 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -36,7 +36,7 @@ index 30050800118a474dfd0a23cb66fd55de4c65ca1e..3fb2ae23bcbf0c397e91a958796f13a2 import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -379,6 +380,7 @@ public class ActivationRange +@@ -402,6 +403,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0073-Phantoms-burn-in-light.patch b/patches/server/0075-Phantoms-burn-in-light.patch similarity index 100% rename from patches/server/0073-Phantoms-burn-in-light.patch rename to patches/server/0075-Phantoms-burn-in-light.patch diff --git a/patches/server/0074-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch similarity index 93% rename from patches/server/0074-Configurable-villager-breeding.patch rename to patches/server/0076-Configurable-villager-breeding.patch index db9640681..adbfde3fc 100644 --- a/patches/server/0074-Configurable-villager-breeding.patch +++ b/patches/server/0076-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 0df7acbdf1c8d0546eb57291bfa952943a5f6520..ee8661840ddfbdf4a4726f96da61253a96878dfc 100644 +index f4ed6ae7e8f122a0a2ce7f4488b0fe1ed0c7da3d..ce450d4b0d42443a47861dcb54b78a01ede734d1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -784,7 +784,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -786,7 +786,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/server/0075-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch similarity index 100% rename from patches/server/0075-Redstone-deactivates-spawners.patch rename to patches/server/0077-Redstone-deactivates-spawners.patch diff --git a/patches/server/0076-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch similarity index 94% rename from patches/server/0076-Totems-work-in-inventory.patch rename to patches/server/0078-Totems-work-in-inventory.patch index 5bb581d07..f87153669 100644 --- a/patches/server/0076-Totems-work-in-inventory.patch +++ b/patches/server/0078-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 8148c9596a17396d37b820cac40f50c2073a0c00..d512d16abc1dff33e9b430d9ba5b960f1460f9ab 100644 +index f3d882c889fc6eab2ced0efd0f17404ca6905a5d..1ff77c524464a256913b063bf621b850255885ba 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1618,6 +1618,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1630,6 +1630,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/server/0077-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0079-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/server/0078-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch similarity index 100% rename from patches/server/0078-Dispensers-place-anvils-option.patch rename to patches/server/0080-Dispensers-place-anvils-option.patch diff --git a/patches/server/0079-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch similarity index 100% rename from patches/server/0079-Allow-anvil-colors.patch rename to patches/server/0081-Allow-anvil-colors.patch diff --git a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 100% rename from patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch diff --git a/patches/server/0081-Short-enderman-height.patch b/patches/server/0083-Short-enderman-height.patch similarity index 87% rename from patches/server/0081-Short-enderman-height.patch rename to patches/server/0083-Short-enderman-height.patch index b9b018f25..3359afa18 100644 --- a/patches/server/0081-Short-enderman-height.patch +++ b/patches/server/0083-Short-enderman-height.patch @@ -5,10 +5,10 @@ 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 b04f03d422a9ed4c6bf090e895a2d9a74f48ea61..ef01a87a77954f19f017129ab186afea9e6389a2 100644 +index 44aa32b49fa32fbaf86625c0eed7c2e01d8f212c..e5aa1bac908f947f2ed70a05194bf30b4cb55115 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -311,7 +311,8 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -313,7 +313,8 @@ public class EntityType implements FeatureElement, EntityTypeT private Component description; @Nullable private ResourceLocation lootTable; @@ -19,10 +19,10 @@ index b04f03d422a9ed4c6bf090e895a2d9a74f48ea61..ef01a87a77954f19f017129ab186afea private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error 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 4530193e6b5d67cc6a1783b6ea537764bb5725cd..6f7f4dd703a6a2cf2d90102b23538bb2104fb464 100644 +index 2af9b2334a4baa15620b06ffddfbc60833bd4187..760a26722144da3f547802975484b01c377afe17 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -434,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -440,6 +440,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 4530193e6b5d67cc6a1783b6ea537764bb5725cd..6f7f4dd703a6a2cf2d90102b23538bb2 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 387da71594b75a43100790e8e8d69d9246598537..e813c87f4cc90fd31a4a48fcfffbe2b4407e5f5d 100644 +index de202a20cdc133d68fb44c56ee017cca153e1cf8..98cadc2f78cc259e3e81958bdc89ef81b8b6b1c3 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/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch similarity index 92% rename from patches/server/0082-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0084-Stop-squids-floating-on-top-of-water.patch index 8338b1296..fba12436a 100644 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 bc59457a526232f7b962d3fb575d0678524eba0a..8f8a17180f8010a62af9b59faf035ec10bd8967a 100644 +index c1d82f042da0628450cbbf4b45f6db7552ba268a..38bed7071513e9449d970ecfb628bd1ba37cd45f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4431,6 +4431,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4443,6 +4443,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } @@ -19,7 +19,7 @@ index bc59457a526232f7b962d3fb575d0678524eba0a..8f8a17180f8010a62af9b59faf035ec1 + // Purpur end + public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { - if (this.touchingUnloadedChunk()) { + if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip 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 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308bbb8ccf8 100644 diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch similarity index 96% rename from patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch index 0263d28ae..2b58bd680 100644 --- a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch @@ -18,7 +18,7 @@ index 590cd053a1b1c2a489772a2879998725fe0d783c..ba3f79cc1f7e672f0a9d32d262122ec6 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 e813c87f4cc90fd31a4a48fcfffbe2b4407e5f5d..6470f383b6f044877f0a4d8c91119d0eae451b8f 100644 +index 98cadc2f78cc259e3e81958bdc89ef81b8b6b1c3..0f67955a289d904ea72f7c24d097f2f1c5a4a8f2 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/server/0084-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch similarity index 93% rename from patches/server/0084-Entities-can-use-portals-configuration.patch rename to patches/server/0086-Entities-can-use-portals-configuration.patch index 550c92359..4b1d40c04 100644 --- a/patches/server/0084-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8f8a17180f8010a62af9b59faf035ec10bd8967a..77ada6859c6fcc6929be5da350ac0f483dd1ae00 100644 +index 38bed7071513e9449d970ecfb628bd1ba37cd45f..6651c11dfa81d4289637555f24c91f5f03a8c750 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3137,7 +3137,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3149,7 +3149,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 8f8a17180f8010a62af9b59faf035ec10bd8967a..77ada6859c6fcc6929be5da350ac0f48 if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3846,7 +3846,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3858,7 +3858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { diff --git a/patches/server/0085-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0085-LivingEntity-broadcastItemBreak.patch rename to patches/server/0087-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0086-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch similarity index 94% rename from patches/server/0086-Customizable-wither-health-and-healing.patch rename to patches/server/0088-Customizable-wither-health-and-healing.patch index f1c6b7254..4f63bad7b 100644 --- a/patches/server/0086-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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 8dc320e1b5bdb042d87d4d0f6380ca19bf50a1f3..61abb5ac7de7a71d7d652b134e3b75551a14961d 100644 +index 8ae399d7e0ff706b0486f198b16dadfe8b5ca32a..84bd2cf1797f68eadbd0a21f2cfb6ce85710d928 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 -@@ -518,8 +518,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -525,8 +525,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } diff --git a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch similarity index 98% rename from patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch index 43620fb3b..44352f049 100644 --- a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ 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 231d4065b1129815d443e76269eefba45857b59a..361037daa20a2b262b68d9b717ee35dbc8a5c41b 100644 +index 7126dacffb7302927a6ca88ce3bfdec975ee342f..dfec321501523e1d953811961d1b5495cb41d815 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -709,7 +709,24 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0088-Raid-cooldown-setting.patch b/patches/server/0090-Raid-cooldown-setting.patch similarity index 100% rename from patches/server/0088-Raid-cooldown-setting.patch rename to patches/server/0090-Raid-cooldown-setting.patch diff --git a/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch similarity index 100% rename from patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch diff --git a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0092-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch similarity index 100% rename from patches/server/0092-Flying-squids-Oh-my.patch rename to patches/server/0094-Flying-squids-Oh-my.patch diff --git a/patches/server/0093-Infinity-bow-settings.patch b/patches/server/0095-Infinity-bow-settings.patch similarity index 100% rename from patches/server/0093-Infinity-bow-settings.patch rename to patches/server/0095-Infinity-bow-settings.patch diff --git a/patches/server/0094-Configurable-daylight-cycle.patch b/patches/server/0096-Configurable-daylight-cycle.patch similarity index 93% rename from patches/server/0094-Configurable-daylight-cycle.patch rename to patches/server/0096-Configurable-daylight-cycle.patch index e6ecc1728..c586f6a85 100644 --- a/patches/server/0094-Configurable-daylight-cycle.patch +++ b/patches/server/0096-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae 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 6206d19c2861996699ced5eccfff8ee8ab3a7727..de211102edf78f645d3129e690e9214b47935003 100644 +index 2bc4073bb331e4b3beae9cccb06d3ca46f9d3b24..9de37c25f7a970326dc96a3dd4b2fddf59f404c9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1690,7 +1690,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -346,7 +346,7 @@ index 57a224aa5a1008aa6bdbe268099974f9b8bf70d3..44a0c13c57e0823938938de4d89921cb protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index e48ff5d0592f0d91974a49fd7ed1d0ee97172abe..599a980c1b66215c4430a5b11acfbc4e451f724f 100644 +index fef3b7d193d20c4fdd50b38c6a0371f05165a49d..93295d9683293121f2267350194f18e97b2421c2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -109,6 +109,11 @@ public class Goat extends Animal { @@ -506,7 +506,7 @@ index 9b853fd05a3a851cb08d7f849b51f2b220780982..10136a5062d154456c962e7d1a99c2de BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 3a98f2fab709cd83f853f59a5678fdd4b7bd70d3..e2c26768fe87ee6a8e4dada7280c09a6e5210503 100644 +index 22788892f7286f3fa6b40059b2bedaf0c6ec5ef3..80f91a11c04763c1c9ed2bd242b88b5a473560d7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -91,6 +91,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { diff --git a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 100% rename from patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch diff --git a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 93% rename from patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 805305067..b803c2a6a 100644 --- a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 6f7f4dd703a6a2cf2d90102b23538bb2104fb464..2566cabec8ede95d2b7ea7c063ae9cb8a1a0bdf1 100644 +index 760a26722144da3f547802975484b01c377afe17..c8f1d2de8682761ef8d4d50302c211f32b086783 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -495,7 +495,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -501,7 +501,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { diff --git a/patches/server/0104-Add-configurable-snowball-damage.patch b/patches/server/0106-Add-configurable-snowball-damage.patch similarity index 100% rename from patches/server/0104-Add-configurable-snowball-damage.patch rename to patches/server/0106-Add-configurable-snowball-damage.patch diff --git a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch similarity index 91% rename from patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch index 9e3c2f351..e6476f8e5 100644 --- a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index b98bf8243e8014f8ef4aa0cfaddf301b997397cc..9794b8262028db136e7282c5451e18b7f5d70f88 100644 +index 906f3ed7883cd220734a92a5f032ec89674f5b97..f04fd84be60d5fc866aa6bf0b711c7e34c5c6369 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1298,7 +1298,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1304,7 +1304,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); diff --git a/patches/server/0106-Add-boat-fall-damage-config.patch b/patches/server/0108-Add-boat-fall-damage-config.patch similarity index 97% rename from patches/server/0106-Add-boat-fall-damage-config.patch rename to patches/server/0108-Add-boat-fall-damage-config.patch index 01f2bb01b..36ecd720c 100644 --- a/patches/server/0106-Add-boat-fall-damage-config.patch +++ b/patches/server/0108-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f1260f9d4bd386c1bfddf977dc47a41082bce4f2..16058e98dbe426791637682316cf0b11160d30f1 100644 +index 47cc6799f0d48debe4b63280a6814eadf9aecb7d..82a551caa75fbd50d75a5109cf7e897e829acf19 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1111,7 +1111,16 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0107-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/server/0107-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0109-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/server/0108-EMC-Configurable-disable-give-dropping.patch b/patches/server/0110-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0108-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0110-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 59acbaf7b..d63ac52e4 100644 --- a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,10 +136,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index ee8661840ddfbdf4a4726f96da61253a96878dfc..192e6af840ce939fd8e008a80ee0c6ad43cb51e6 100644 +index ce450d4b0d42443a47861dcb54b78a01ede734d1..833db485054338cd4a5e626b35ec050c35f15477 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index ee8661840ddfbdf4a4726f96da61253a96878dfc..192e6af840ce939fd8e008a80ee0c6ad } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -977,6 +977,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -979,6 +979,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { diff --git a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 100% rename from patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch diff --git a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 100% rename from patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0114-Configurable-default-collar-color.patch similarity index 100% rename from patches/server/0112-Configurable-default-collar-color.patch rename to patches/server/0114-Configurable-default-collar-color.patch diff --git a/patches/server/0113-Phantom-flames-on-swoop.patch b/patches/server/0115-Phantom-flames-on-swoop.patch similarity index 100% rename from patches/server/0113-Phantom-flames-on-swoop.patch rename to patches/server/0115-Phantom-flames-on-swoop.patch diff --git a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 100% rename from patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch diff --git a/patches/server/0115-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch similarity index 97% rename from patches/server/0115-Implement-TPSBar.patch rename to patches/server/0117-Implement-TPSBar.patch index 5b206f85f..5215c5c12 100644 --- a/patches/server/0115-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -17,10 +17,10 @@ index 575f026c086e24663b5d38222915460923937723..77cced190bd287ff3f5bc8697f16b333 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index de211102edf78f645d3129e690e9214b47935003..e7f3034fbb3cb6c606724bb6e2a8e0102b06b56f 100644 +index 9de37c25f7a970326dc96a3dd4b2fddf59f404c9..fb3b7f0d6e1577f4bba4589dc454ed6d064bd49f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1052,6 +1052,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1180,6 +1185,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1181,6 +1186,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch similarity index 100% rename from patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename to patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch diff --git a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 97% rename from patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index ccb40a3c2..800b3923f 100644 --- a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d512d16abc1dff33e9b430d9ba5b960f1460f9ab..ae3be8f490a245a76a76a85d12ba26906c499981 100644 +index 1ff77c524464a256913b063bf621b850255885ba..b0071e7f3b540569364a53bc6c5c022d2ea8a7cf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1795,7 +1795,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1807,7 +1807,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index d512d16abc1dff33e9b430d9ba5b960f1460f9ab..ae3be8f490a245a76a76a85d12ba2690 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 9794b8262028db136e7282c5451e18b7f5d70f88..ab459c32467e67b1a813ecdc56a12e2372e03faa 100644 +index f04fd84be60d5fc866aa6bf0b711c7e34c5c6369..7de69da2c723f1ad4a2e62e792a49cbc47202977 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -703,7 +703,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { public void aiStep() { super.aiStep(); this.level().getProfiler().push("looting"); @@ -144,10 +144,10 @@ index cfe7086b0259eefcd221a54529c111f7eb1adc38..5381ee91770a0f1012b5478d66155402 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 61abb5ac7de7a71d7d652b134e3b75551a14961d..16c88fc3c865652496f0ecf6b7e92a97d20eeb00 100644 +index 84bd2cf1797f68eadbd0a21f2cfb6ce85710d928..bd4658651ba8bccdc5b8a7d59e70e527942615dd 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 -@@ -485,7 +485,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -157,10 +157,10 @@ index 61abb5ac7de7a71d7d652b134e3b75551a14961d..16c88fc3c865652496f0ecf6b7e92a97 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 2566cabec8ede95d2b7ea7c063ae9cb8a1a0bdf1..c17a01a995eb3fe46403f241effec86694ad0eaf 100644 +index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e911902b23 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -543,7 +543,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index 2566cabec8ede95d2b7ea7c063ae9cb8a1a0bdf1..c17a01a995eb3fe46403f241effec866 } @Override -@@ -589,7 +597,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -595,7 +603,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -243,10 +243,10 @@ index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 7c1e3bdd68433319681c67251c82c6810e69dbcb..92d90700cf06ac06b6c13abc78f6dc771e11bd7a 100644 +index d9b1bde3ce458b7e50f7645d07ee578d13006a0a..d133820c47ecda733aa8242acdb2cd3ba0f0b677 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -423,7 +423,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -424,7 +424,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ItemStack stack) { @@ -284,10 +284,10 @@ index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e8303 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 2f058cec80c6ef7a5a5ca065dc6c9fe353c521de..e8036e3b124b9357a54a0f30e8610cbd885f5644 100644 +index a7653d8d7291a537c997364c6222bb84d45f7277..9daf8a85ed3f429bfb287d099be23bca847a7671 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -304,7 +304,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -334,7 +334,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); diff --git a/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 100% rename from patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch diff --git a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch similarity index 98% rename from patches/server/0122-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0124-Add-EntityTeleportHinderedEvent.patch index ca91c17d8..405bcc937 100644 --- a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 2e264b8b13df9da9163a80b3dd4345af3cff431c..7b27852682909b7d19942bbb517e6107 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f8ac77be62ee1220e0373ade55fdee1cb32750e9..fb80b7e2edebf915a98ef608d5b2e27a6c9ae79c 100644 +index 1c89cbf1a582604ed4be0849bd65dae5eb17f28a..98d2ef7870c921093a9dbaf0f4de77d86ef81d44 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -252,6 +252,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,7 +89,7 @@ index f8ac77be62ee1220e0373ade55fdee1cb32750e9..fb80b7e2edebf915a98ef608d5b2e27a } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 72bd74a2fd6c9f7aec79ee7e4003cecbb4a3f95a..a7a702ccb7cab7d68758078927544f2928a5ea62 100644 +index 5f8b485ed8e0444c8c7e2a438cb65113d35bec68..df8f06c898155955fed05c0b41b8ce14b13ec920 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1368,6 +1368,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0123-Farmland-trampling-changes.patch b/patches/server/0125-Farmland-trampling-changes.patch similarity index 100% rename from patches/server/0123-Farmland-trampling-changes.patch rename to patches/server/0125-Farmland-trampling-changes.patch diff --git a/patches/server/0124-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0124-Movement-options-for-armor-stands.patch rename to patches/server/0126-Movement-options-for-armor-stands.patch index 062b6ae1d..8dfcddde5 100644 --- a/patches/server/0124-Movement-options-for-armor-stands.patch +++ b/patches/server/0126-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 77ada6859c6fcc6929be5da350ac0f483dd1ae00..63c195ece6a96940bc059251bb40ab9129196fe1 100644 +index 6651c11dfa81d4289637555f24c91f5f03a8c750..fe793f51e9f81d14d6b2614c2da33f6d9e347fd2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1858,7 +1858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1870,7 +1870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } diff --git a/patches/server/0125-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch similarity index 93% rename from patches/server/0125-Fix-stuck-in-portals.patch rename to patches/server/0127-Fix-stuck-in-portals.patch index 3d584387a..e376d7c68 100644 --- a/patches/server/0125-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3349082af08600894fbca04533f9ab4a9bf2dfd9..c63502c452c3804fafe31fe4daf2aed8f16427a0 100644 +index 448394f5ff2d55b099549b49b77114483f0e58bd..f2c388370be9765c15982f522a13cb21ad0f3f1d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1270,6 +1270,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index 3349082af08600894fbca04533f9ab4a9bf2dfd9..c63502c452c3804fafe31fe4daf2aed8 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 63c195ece6a96940bc059251bb40ab9129196fe1..1bf2960f34b120f258bc75bba6552c8b22ce9ed7 100644 +index fe793f51e9f81d14d6b2614c2da33f6d9e347fd2..0647431984d263fcd90ca4273626973c44716734 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3134,12 +3134,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3146,12 +3146,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch similarity index 99% rename from patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index c758ae8d3..4d726d82b 100644 --- a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -21,7 +21,7 @@ index 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e29 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 6aec149f450e0559c613dcc272ba48634d0083c0..0ed3d4f4cb9e2d11391c39633267becfd457102d 100644 +index 92777e7f6c6293c5b5689cfa5f992335629d05eb..39dc169eedc407284452380a883e8a2735cc46cb 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -280,6 +280,11 @@ public class Bat extends AmbientCreature { @@ -411,7 +411,7 @@ index bbecb3894d0f4a24442e8833f4d828e6173287da..f79dff635b09300f8d2cff0562f71587 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 216e7ad8c096d526d91b1099932070128e200b0c..fb5b7e88825348e1c05c9b9f9621bc60a6b7114e 100644 +index 4e8f5d80949f251af2740f2e1ceee203783cc839..9d52d0f1b57565bdea0333626d8dba9c01607a30 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -125,6 +125,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 599a980c1b66215c4430a5b11acfbc4e451f724f..b41509e26808a025bc247fa209d3b9df10368013 100644 +index 93295d9683293121f2267350194f18e97b2421c2..26062173d137e26abdc452f7b2e0be0ee6dddfa3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -114,6 +114,11 @@ public class Goat extends Animal { @@ -571,7 +571,7 @@ index 5381ee91770a0f1012b5478d6615540263e46533..5643f35f02fff5a2d4072d246f864677 return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } 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 16c88fc3c865652496f0ecf6b7e92a97d20eeb00..138e38945fdfff919b1afabcfdf3424267027161 100644 +index bd4658651ba8bccdc5b8a7d59e70e527942615dd..aea64f97be2430e92cb45d43e1b50c0e32eebdf9 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 @@ -117,6 +117,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -625,7 +625,7 @@ index c8bac8cb738ad96003a014b468681c43512ac4c4..5dc0b3d04bfc01cd2cb004c182798408 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 5bfeb39a23a72f57523a3c2db1d79c7aef70eb02..e8191f0df3420d5a531cf226547a177732ff65ea 100644 +index 54184d7641e435654e987f866162b610a9352947..63d51f6f792f951a1db5f8f7c9b359898968cd85 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -263,6 +263,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -673,7 +673,7 @@ index 971210c1199ec48f28446e75d8d796a1f3f9a734..cd1f830bf28b1c68e2b9cc7daa77f696 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 c17a01a995eb3fe46403f241effec86694ad0eaf..145726402118057161982f5f1cf712177c81d4de 100644 +index 51524661a62cbfe5ff7a3b7d640260e911902b23..013fd016d384f1bf94b875bc71139e0ea4e12d21 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -95,7 +95,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -935,7 +935,7 @@ index 28ee425910a6c2412dc4b4a7f7986e479be06b88..9363ec4aad2179274e4076c2acae5779 public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater; diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index f8e842327375497416783aef486e6960653b0184..0f41e7127ece3c60500ab3cbb2e5bbc9c0bf013b 100644 +index 333b064383e9ee3b075429f8cd14b4b71cec1853..93eaa95e38304a4b86cda693289f60ad4923b5b8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -75,6 +75,11 @@ public class Spider extends Monster { @@ -1117,7 +1117,7 @@ index b2d77117309e81db60e7e50911247793fa829755..3574a1e641d8af34a0ff7ea8dcfb0864 public boolean jockeyOnlyBaby() { return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index e2c26768fe87ee6a8e4dada7280c09a6e5210503..d1501c1048417defdf1766366b572f2c98989cc9 100644 +index 80f91a11c04763c1c9ed2bd242b88b5a473560d7..d0144c99cf5c755c81fc0f9457b462c98ff3e804 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1133,7 +1133,7 @@ index e2c26768fe87ee6a8e4dada7280c09a6e5210503..d1501c1048417defdf1766366b572f2c public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 92d90700cf06ac06b6c13abc78f6dc771e11bd7a..f9e03dc7178c76ea70e45f265d9b42f9d2fe960d 100644 +index d133820c47ecda733aa8242acdb2cd3ba0f0b677..e506dcf390ecb5cce8ae6993df7ec91b3ebc125e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1165,10 +1165,10 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 192e6af840ce939fd8e008a80ee0c6ad43cb51e6..375192fbc04bd4dd5fa178bd26eaa1b00c9b58db 100644 +index 833db485054338cd4a5e626b35ec050c35f15477..9ed51efc1a42a792b652e7c958c06fa5b572e4bf 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } diff --git a/patches/server/0127-Config-to-always-tame-in-Creative.patch b/patches/server/0129-Config-to-always-tame-in-Creative.patch similarity index 100% rename from patches/server/0127-Config-to-always-tame-in-Creative.patch rename to patches/server/0129-Config-to-always-tame-in-Creative.patch diff --git a/patches/server/0128-End-crystal-explosion-options.patch b/patches/server/0130-End-crystal-explosion-options.patch similarity index 100% rename from patches/server/0128-End-crystal-explosion-options.patch rename to patches/server/0130-End-crystal-explosion-options.patch diff --git a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 96% rename from patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 32841fab2..733c95e29 100644 --- a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -17,10 +17,10 @@ index 5643f35f02fff5a2d4072d246f8646772695b797..dc7804371b65c43367ec87e79433106e } 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 138e38945fdfff919b1afabcfdf3424267027161..b0d0ed64919a0acea70554b6600cf6ba9566a178 100644 +index aea64f97be2430e92cb45d43e1b50c0e32eebdf9..81084ec809a2c4602d92f3736fab4eeaf80e6fa4 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 -@@ -731,6 +731,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -738,6 +738,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected boolean canRide(Entity entity) { diff --git a/patches/server/0130-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch similarity index 96% rename from patches/server/0130-Dont-run-with-scissors.patch rename to patches/server/0132-Dont-run-with-scissors.patch index 80a12a00e..edc1fdcf6 100644 --- a/patches/server/0130-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5ab5c85a4c3d03dba2a3943462ccff0a3e725555..0b5c6557afa83fb018bf3843f2f290e3d1925487 100644 +index 935d8b9f81d243716f340b0a16f6f99bc0bf88a8..78dcf97e46b6888d25cc685bc4216f02b4b079da 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1640,6 +1640,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1641,6 +1641,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 5ab5c85a4c3d03dba2a3943462ccff0a3e725555..0b5c6557afa83fb018bf3843f2f290e3 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1691,6 +1698,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1692,6 +1699,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes @@ -82,7 +82,7 @@ index 4604f8b38460e9113e966889a679d4547f24aff6..813916852774d6482791989252ecb67b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 61e3bce901bdbf111ffc06521b0e6d5369fce051..ea9d99990b718beaef4bee3ff75340656f3c76c5 100644 +index 57734b187e3a66d0d244db2f7968256884957ff2..6714c095714c3a34464b9190be964ceaac718d45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -183,6 +183,7 @@ public class PurpurConfig { diff --git a/patches/server/0131-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch similarity index 94% rename from patches/server/0131-One-Punch-Man.patch rename to patches/server/0133-One-Punch-Man.patch index 4a8aecfcb..f0b8fa459 100644 --- a/patches/server/0131-One-Punch-Man.patch +++ b/patches/server/0133-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ae3be8f490a245a76a76a85d12ba26906c499981..e8d6b832ae9a04e4505eaf9e693454cc6e85962e 100644 +index b0071e7f3b540569364a53bc6c5c022d2ea8a7cf..5ac686c5d3fc20d55899eb7ffafa48c4130344cf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2307,6 +2307,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2333,6 +2333,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 96% rename from patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch index 7cfd76c77..f7118d8fe 100644 --- a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c63502c452c3804fafe31fe4daf2aed8f16427a0..ab259fb1e247ae53a3af57f297ebaa4ce8959ba6 100644 +index f2c388370be9765c15982f522a13cb21ad0f3f1d..6ae52065abb4559ee53e2603224f2555952e50af 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1427,7 +1427,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0134-Add-back-player-spawned-endermite-API.patch b/patches/server/0136-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0134-Add-back-player-spawned-endermite-API.patch rename to patches/server/0136-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 97% rename from patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch index 1a82d64c6..c3a9201ec 100644 --- a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 145726402118057161982f5f1cf712177c81d4de..c0fbb6687b2f83287f371e2158b37309fea64c3d 100644 +index 013fd016d384f1bf94b875bc71139e0ea4e12d21..cf9eb1ac36a5c9d3c73b981e1649bb23c7bfaf39 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob { diff --git a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 96% rename from patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index aa5aa2caa..4a11dbbb0 100644 --- a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index c0fbb6687b2f83287f371e2158b37309fea64c3d..6519fb56a7c6fd2e9ce3f4a0504053ed05eb0e14 100644 +index cf9eb1ac36a5c9d3c73b981e1649bb23c7bfaf39..ca0269c2977b07cf77f7e0e1faa4cb16008ac74d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob { diff --git a/patches/server/0137-Tick-fluids-config.patch b/patches/server/0139-Tick-fluids-config.patch similarity index 100% rename from patches/server/0137-Tick-fluids-config.patch rename to patches/server/0139-Tick-fluids-config.patch diff --git a/patches/server/0138-Config-to-disable-Llama-caravans.patch b/patches/server/0140-Config-to-disable-Llama-caravans.patch similarity index 100% rename from patches/server/0138-Config-to-disable-Llama-caravans.patch rename to patches/server/0140-Config-to-disable-Llama-caravans.patch diff --git a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch similarity index 97% rename from patches/server/0139-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0141-Config-to-make-Creepers-explode-on-death.patch index 571f65efc..25e8c394e 100644 --- a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index e8191f0df3420d5a531cf226547a177732ff65ea..fd3b1e92a626402112bbd371a0ac1264a2c19c32 100644 +index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470d167443b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -63,6 +63,7 @@ public class Creeper extends Monster implements PowerableMob { diff --git a/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch similarity index 100% rename from patches/server/0140-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0142-Configurable-ravager-griefable-blocks-list.patch diff --git a/patches/server/0141-Sneak-to-bulk-process-composter.patch b/patches/server/0143-Sneak-to-bulk-process-composter.patch similarity index 100% rename from patches/server/0141-Sneak-to-bulk-process-composter.patch rename to patches/server/0143-Sneak-to-bulk-process-composter.patch diff --git a/patches/server/0142-Config-for-skipping-night.patch b/patches/server/0144-Config-for-skipping-night.patch similarity index 96% rename from patches/server/0142-Config-for-skipping-night.patch rename to patches/server/0144-Config-for-skipping-night.patch index a8ad4f17c..6f68736c2 100644 --- a/patches/server/0142-Config-for-skipping-night.patch +++ b/patches/server/0144-Config-for-skipping-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e07d38b987cef9bddce3bee592f597a0e279f7e3..2d8cb768429a77547ae2904b11614d66459332fd 100644 +index 3f95ede3602c3dea611ba9a6b4f6891419638283..b8bb7281208a03202bd0575e8dc998190751d46e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -841,7 +841,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0143-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch similarity index 96% rename from patches/server/0143-Add-config-for-villager-trading.patch rename to patches/server/0145-Add-config-for-villager-trading.patch index 1e885c7bc..d7ea956de 100644 --- a/patches/server/0143-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading 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 375192fbc04bd4dd5fa178bd26eaa1b00c9b58db..29916aa09d867ef3fa4dc8248b174bf8f97853b7 100644 +index 9ed51efc1a42a792b652e7c958c06fa5b572e4bf..6857eeb9a93850594cbdb634dfbdf6cb6d82ced5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -370,7 +370,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur diff --git a/patches/server/0144-Allow-infinity-on-crossbows.patch b/patches/server/0146-Allow-infinity-on-crossbows.patch similarity index 98% rename from patches/server/0144-Allow-infinity-on-crossbows.patch rename to patches/server/0146-Allow-infinity-on-crossbows.patch index 4ae0f4653..fce993e23 100644 --- a/patches/server/0144-Allow-infinity-on-crossbows.patch +++ b/patches/server/0146-Allow-infinity-on-crossbows.patch @@ -77,7 +77,7 @@ index 4daf2c54c7127e8e091ffc49362f288594956143..f81faaf6d69b09f635d71491303fca1d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ea9d99990b718beaef4bee3ff75340656f3c76c5..55963ed03a2e552636035b498cf7441bd4c3ee59 100644 +index 6714c095714c3a34464b9190be964ceaac718d45..0e254b7b1709f745a7d7c0e3cefda96d726de556 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -284,6 +284,7 @@ public class PurpurConfig { diff --git a/patches/server/0145-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch similarity index 89% rename from patches/server/0145-Drowning-Settings.patch rename to patches/server/0147-Drowning-Settings.patch index 376c73c21..03089f61f 100644 --- a/patches/server/0145-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1bf2960f34b120f258bc75bba6552c8b22ce9ed7..c45e7caa0ecbeaa1b37f722abba2884a6148ca20 100644 +index 0647431984d263fcd90ca4273626973c44716734..7ecc956aa2907090c9b0c9dcaf674330bb18f3d3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3383,7 +3383,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3395,7 +3395,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index 1bf2960f34b120f258bc75bba6552c8b22ce9ed7..c45e7caa0ecbeaa1b37f722abba2884a public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e8d6b832ae9a04e4505eaf9e693454cc6e85962e..6efffa178d2f051c2d50672d861aee854f1ff874 100644 +index 5ac686c5d3fc20d55899eb7ffafa48c4130344cf..b320b4bc692efdd9f7efd4f3fa195bc26512cf66 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -438,7 +438,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index e8d6b832ae9a04e4505eaf9e693454cc6e85962e..6efffa178d2f051c2d50672d861aee85 this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -451,7 +451,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -450,7 +450,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/server/0146-Break-individual-slabs-when-sneaking.patch b/patches/server/0148-Break-individual-slabs-when-sneaking.patch similarity index 100% rename from patches/server/0146-Break-individual-slabs-when-sneaking.patch rename to patches/server/0148-Break-individual-slabs-when-sneaking.patch diff --git a/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 100% rename from patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch diff --git a/patches/server/0149-Option-to-make-doors-require-redstone.patch b/patches/server/0151-Option-to-make-doors-require-redstone.patch similarity index 100% rename from patches/server/0149-Option-to-make-doors-require-redstone.patch rename to patches/server/0151-Option-to-make-doors-require-redstone.patch diff --git a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch similarity index 98% rename from patches/server/0150-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index df1cf6ba5..18442c1eb 100644 --- a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -91,7 +91,7 @@ index f6274690538d55becb9afe0d5a87213cb2e396a0..05f4670df6b45d7d9cd4ff78a0e10587 this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 55963ed03a2e552636035b498cf7441bd4c3ee59..5697ce5ead8dc7e463206a56d489c99c861a9bb1 100644 +index 0e254b7b1709f745a7d7c0e3cefda96d726de556..1b7aad41427a945ae4309d95f6371ca8aba1149a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -285,14 +285,34 @@ public class PurpurConfig { diff --git a/patches/server/0151-Configurable-sponge-absorption.patch b/patches/server/0153-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0151-Configurable-sponge-absorption.patch rename to patches/server/0153-Configurable-sponge-absorption.patch diff --git a/patches/server/0152-Projectile-offset-config.patch b/patches/server/0154-Projectile-offset-config.patch similarity index 100% rename from patches/server/0152-Projectile-offset-config.patch rename to patches/server/0154-Projectile-offset-config.patch diff --git a/patches/server/0153-Config-for-powered-rail-activation-distance.patch b/patches/server/0155-Config-for-powered-rail-activation-distance.patch similarity index 100% rename from patches/server/0153-Config-for-powered-rail-activation-distance.patch rename to patches/server/0155-Config-for-powered-rail-activation-distance.patch diff --git a/patches/server/0154-Piglin-portal-spawn-modifier.patch b/patches/server/0156-Piglin-portal-spawn-modifier.patch similarity index 100% rename from patches/server/0154-Piglin-portal-spawn-modifier.patch rename to patches/server/0156-Piglin-portal-spawn-modifier.patch diff --git a/patches/server/0155-Config-to-change-max-number-of-bees.patch b/patches/server/0157-Config-to-change-max-number-of-bees.patch similarity index 96% rename from patches/server/0155-Config-to-change-max-number-of-bees.patch rename to patches/server/0157-Config-to-change-max-number-of-bees.patch index 3d9b8cb1a..bb56df6c3 100644 --- a/patches/server/0155-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0157-Config-to-change-max-number-of-bees.patch @@ -18,7 +18,7 @@ index dfd364ac4b7551a13c4c6c100b5e62c0dfb10595..312ee43ad1a35918fc359f7ebb574200 public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5697ce5ead8dc7e463206a56d489c99c861a9bb1..85a41b50a1f0a89264585ecd621e7e5a1de67efc 100644 +index 1b7aad41427a945ae4309d95f6371ca8aba1149a..d0e3dceec5f7c1d3fed1d6dc0f2a5c1ca2ed09f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -250,6 +250,7 @@ public class PurpurConfig { diff --git a/patches/server/0156-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch similarity index 100% rename from patches/server/0156-Config-for-wither-explosion-radius.patch rename to patches/server/0158-Config-for-wither-explosion-radius.patch diff --git a/patches/server/0157-Gamemode-extra-permissions.patch b/patches/server/0159-Gamemode-extra-permissions.patch similarity index 97% rename from patches/server/0157-Gamemode-extra-permissions.patch rename to patches/server/0159-Gamemode-extra-permissions.patch index 43f6d91a1..b60266c46 100644 --- a/patches/server/0157-Gamemode-extra-permissions.patch +++ b/patches/server/0159-Gamemode-extra-permissions.patch @@ -52,7 +52,7 @@ index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec for(ServerPlayer serverPlayer : targets) { diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java -index ea732f8fe7b5dd56aab5d3a061a1cad19c49ae0b..8d2b0dc792120eda396947f5935052346f770567 100644 +index dd95b3bfe59f2bb635afe92317288efcd2986326..11f43f44f359ce57d3a8f3322e58b9f5dfdaf00a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java +++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java @@ -23,7 +23,15 @@ public final class CommandPermissions { @@ -73,7 +73,7 @@ index ea732f8fe7b5dd56aab5d3a061a1cad19c49ae0b..8d2b0dc792120eda396947f593505234 DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 85a41b50a1f0a89264585ecd621e7e5a1de67efc..a66c35ce86437311b38d1787c766bbe179cc5dfa 100644 +index d0e3dceec5f7c1d3fed1d6dc0f2a5c1ca2ed09f5..aeabbffef660ddcb113a33f1dd7f7b8504c07794 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -233,6 +233,7 @@ public class PurpurConfig { diff --git a/patches/server/0158-Configurable-piston-push-limit.patch b/patches/server/0160-Configurable-piston-push-limit.patch similarity index 100% rename from patches/server/0158-Configurable-piston-push-limit.patch rename to patches/server/0160-Configurable-piston-push-limit.patch diff --git a/patches/server/0159-Configurable-broadcast-settings.patch b/patches/server/0161-Configurable-broadcast-settings.patch similarity index 94% rename from patches/server/0159-Configurable-broadcast-settings.patch rename to patches/server/0161-Configurable-broadcast-settings.patch index 33f38e59c..ba2051c39 100644 --- a/patches/server/0159-Configurable-broadcast-settings.patch +++ b/patches/server/0161-Configurable-broadcast-settings.patch @@ -17,7 +17,7 @@ index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14c // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ab259fb1e247ae53a3af57f297ebaa4ce8959ba6..3c6331f703acc59f1764f7ef474b242cfeeb63aa 100644 +index 6ae52065abb4559ee53e2603224f2555952e50af..d846b4c0cd204ed2a17b883f37a83e2e049f7561 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1011,6 +1011,7 @@ public class ServerPlayer extends Player { @@ -29,7 +29,7 @@ index ab259fb1e247ae53a3af57f297ebaa4ce8959ba6..3c6331f703acc59f1764f7ef474b242c if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a66c35ce86437311b38d1787c766bbe179cc5dfa..a0f45333ef049ac950295504bb7526f949dcbede 100644 +index aeabbffef660ddcb113a33f1dd7f7b8504c07794..bf59250dd3813d2eaf51f2bde0692eea9a83c710 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -203,6 +203,18 @@ public class PurpurConfig { diff --git a/patches/server/0160-Configurable-mob-blindness.patch b/patches/server/0162-Configurable-mob-blindness.patch similarity index 95% rename from patches/server/0160-Configurable-mob-blindness.patch rename to patches/server/0162-Configurable-mob-blindness.patch index fde80cd3b..853d8da9d 100644 --- a/patches/server/0160-Configurable-mob-blindness.patch +++ b/patches/server/0162-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6efffa178d2f051c2d50672d861aee854f1ff874..f1f225615dd4a325ea29552f58fb9a6ff982a943 100644 +index b320b4bc692efdd9f7efd4f3fa195bc26512cf66..879ddc26235e9361afe55fffb5ca64cb63dfe552 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1036,6 +1036,17 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1035,6 +1035,17 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } diff --git a/patches/server/0161-Hide-hidden-players-from-entity-selector.patch b/patches/server/0163-Hide-hidden-players-from-entity-selector.patch similarity index 98% rename from patches/server/0161-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0163-Hide-hidden-players-from-entity-selector.patch index f70ac362e..60e62c866 100644 --- a/patches/server/0161-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0163-Hide-hidden-players-from-entity-selector.patch @@ -59,7 +59,7 @@ index 73c15a0c56a103ba4e62f0a51af8d42566b07245..d630c5a1aed706265d1e077da540c0bf + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a0f45333ef049ac950295504bb7526f949dcbede..8b2ec98b74f441b36acb94e0c6477ddaa2d333e8 100644 +index bf59250dd3813d2eaf51f2bde0692eea9a83c710..7fe47715413f6a1c21f9b4afb93a6dee4e0f0fe2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -246,6 +246,7 @@ public class PurpurConfig { diff --git a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 96% rename from patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch index 331ee36e5..43671818b 100644 --- a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index fd3b1e92a626402112bbd371a0ac1264a2c19c32..a8bc27c858c6ddec2ff2f84b5c1dc51c3b1b04b0 100644 +index f043b6da9649c8c9e6a9cf5172e95470d167443b..1a33d4e855a85b0a0d51c29dbb4042d30918684c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -371,9 +371,10 @@ public class Creeper extends Monster implements PowerableMob { diff --git a/patches/server/0163-Iron-golem-calm-anger-options.patch b/patches/server/0165-Iron-golem-calm-anger-options.patch similarity index 100% rename from patches/server/0163-Iron-golem-calm-anger-options.patch rename to patches/server/0165-Iron-golem-calm-anger-options.patch diff --git a/patches/server/0164-Breedable-parrots.patch b/patches/server/0166-Breedable-parrots.patch similarity index 100% rename from patches/server/0164-Breedable-parrots.patch rename to patches/server/0166-Breedable-parrots.patch diff --git a/patches/server/0165-Configurable-powered-rail-boost-modifier.patch b/patches/server/0167-Configurable-powered-rail-boost-modifier.patch similarity index 96% rename from patches/server/0165-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0167-Configurable-powered-rail-boost-modifier.patch index 8bc001868..13cf4abb4 100644 --- a/patches/server/0165-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0167-Configurable-powered-rail-boost-modifier.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable powered rail boost modifier diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index a52f8b583b84128b7d68bfced6c41e2c7554469c..0eca1c61991b0d344d0810239d9cab2873216f04 100644 +index d5e2797b392527de4027b20f29c73a16eb0d6af9..c809e370ab61811c7e2fa3d6f207ae04fcb6749b 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -676,7 +676,7 @@ public abstract class AbstractMinecart extends VehicleEntity { diff --git a/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch similarity index 100% rename from patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch diff --git a/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch similarity index 100% rename from patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch diff --git a/patches/server/0168-Config-for-unverified-username-message.patch b/patches/server/0170-Config-for-unverified-username-message.patch similarity index 97% rename from patches/server/0168-Config-for-unverified-username-message.patch rename to patches/server/0170-Config-for-unverified-username-message.patch index f340dc05a..395825dce 100644 --- a/patches/server/0168-Config-for-unverified-username-message.patch +++ b/patches/server/0170-Config-for-unverified-username-message.patch @@ -18,7 +18,7 @@ index 89b3184be952fd0803520dd0f717f3acfc3cb496..8acb4ab02e57f63f4b0f3c1420d9880d } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8b2ec98b74f441b36acb94e0c6477ddaa2d333e8..bda7ebcedcfc7086dcbd3a402e4c5ace3c508037 100644 +index 7fe47715413f6a1c21f9b4afb93a6dee4e0f0fe2..23d131fa6b91ba62475dd3f825711f7c0796e3c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -184,6 +184,7 @@ public class PurpurConfig { diff --git a/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0171-Make-anvil-cumulative-cost-configurable.patch similarity index 95% rename from patches/server/0169-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0171-Make-anvil-cumulative-cost-configurable.patch index c00fd38cc..fa79bdda3 100644 --- a/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0171-Make-anvil-cumulative-cost-configurable.patch @@ -18,7 +18,7 @@ index ceac7d74f6fbe6519535357a03a0e4d1214d6a1d..27d76e0c4809d333c548379bf78ec2db public boolean setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bda7ebcedcfc7086dcbd3a402e4c5ace3c508037..cb0125f7aaa514578465d455b2b1fab98d7b13c1 100644 +index 23d131fa6b91ba62475dd3f825711f7c0796e3c7..09c777f83a74501d76f6e15a61d7c433599cf6cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -269,6 +269,7 @@ public class PurpurConfig { diff --git a/patches/server/0170-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0172-Bee-can-work-when-raining-or-at-night.patch similarity index 100% rename from patches/server/0170-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0172-Bee-can-work-when-raining-or-at-night.patch diff --git a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch similarity index 96% rename from patches/server/0171-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0173-API-for-any-mob-to-burn-daylight.patch index e9ca01e96..4498f49ec 100644 --- a/patches/server/0171-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c45e7caa0ecbeaa1b37f722abba2884a6148ca20..01bf0886d8196ec0a09e7b399636874bb8e6baa9 100644 +index 7ecc956aa2907090c9b0c9dcaf674330bb18f3d3..9552fbbb3bebe5adc2361f4abb676bfafbb4c00c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -495,6 +495,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -501,6 +501,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return true; } @@ -32,10 +32,10 @@ index c45e7caa0ecbeaa1b37f722abba2884a6148ca20..01bf0886d8196ec0a09e7b399636874b return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadcef107a11 100644 +index 879ddc26235e9361afe55fffb5ca64cb63dfe552..09c24ff6dd0c8bdabc25e69101f229b982822ca5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -262,6 +262,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -43,7 +43,7 @@ index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadc @Override public float getBukkitYaw() { -@@ -804,6 +805,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -803,6 +804,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadc } @Override -@@ -888,6 +890,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -887,6 +889,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadc } // CraftBukkit start -@@ -3558,6 +3565,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3584,6 +3591,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -92,10 +92,10 @@ index 460619aabe69e8837f413c65aa4a575cd5d0d620..bfdfb7cfc36fa3eb4c8c2cfa293dcadc public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index ab459c32467e67b1a813ecdc56a12e2372e03faa..7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce 100644 +index 7de69da2c723f1ad4a2e62e792a49cbc47202977..31f1a485fc3e8d40f7181a5f8af4f56d9c25e2fc 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1748,17 +1748,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1754,17 +1754,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { diff --git a/patches/server/0172-Config-MobEffect-by-world.patch b/patches/server/0174-Config-MobEffect-by-world.patch similarity index 100% rename from patches/server/0172-Config-MobEffect-by-world.patch rename to patches/server/0174-Config-MobEffect-by-world.patch diff --git a/patches/server/0173-Beacon-Activation-Range-Configurable.patch b/patches/server/0175-Beacon-Activation-Range-Configurable.patch similarity index 100% rename from patches/server/0173-Beacon-Activation-Range-Configurable.patch rename to patches/server/0175-Beacon-Activation-Range-Configurable.patch diff --git a/patches/server/0174-Add-toggle-for-sand-duping-fix.patch b/patches/server/0176-Add-toggle-for-sand-duping-fix.patch similarity index 100% rename from patches/server/0174-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0176-Add-toggle-for-sand-duping-fix.patch diff --git a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 95% rename from patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch index 44d1b2f1d..a02f10f60 100644 --- a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 01bf0886d8196ec0a09e7b399636874bb8e6baa9..e0a3c7e23ebf6b8994d82964dd38cc8342e81aa3 100644 +index 9552fbbb3bebe5adc2361f4abb676bfafbb4c00c..a94d7fcec60ffd9826f7c4828f0d98461261fb0b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3208,7 +3208,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3220,7 +3220,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); diff --git a/patches/server/0176-Make-lightning-rod-range-configurable.patch b/patches/server/0178-Make-lightning-rod-range-configurable.patch similarity index 89% rename from patches/server/0176-Make-lightning-rod-range-configurable.patch rename to patches/server/0178-Make-lightning-rod-range-configurable.patch index 640bbf2f1..8ef7dfdaf 100644 --- a/patches/server/0176-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0178-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2d8cb768429a77547ae2904b11614d66459332fd..67d343ddfd665164219f5645e8a912134170d386 100644 +index b8bb7281208a03202bd0575e8dc998190751d46e..735be788e584152bd2c33eaf9c08ebb21769a1db 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1177,7 +1177,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1193,7 +1193,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,7 +18,7 @@ index 2d8cb768429a77547ae2904b11614d66459332fd..67d343ddfd665164219f5645e8a91213 return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cb0125f7aaa514578465d455b2b1fab98d7b13c1..b1450f979efb13a31f96b0638d415f807c5c6a4f 100644 +index 09c777f83a74501d76f6e15a61d7c433599cf6cc..a268dcb3a0465425bb3c59edfc0f7897ea6626c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -270,6 +270,7 @@ public class PurpurConfig { diff --git a/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 100% rename from patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch diff --git a/patches/server/0178-Allow-player-join-full-server-by-permission.patch b/patches/server/0180-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0178-Allow-player-join-full-server-by-permission.patch rename to patches/server/0180-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0181-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0179-Add-portal-permission-bypass.patch rename to patches/server/0181-Add-portal-permission-bypass.patch diff --git a/patches/server/0180-Shulker-spawn-from-bullet-options.patch b/patches/server/0182-Shulker-spawn-from-bullet-options.patch similarity index 100% rename from patches/server/0180-Shulker-spawn-from-bullet-options.patch rename to patches/server/0182-Shulker-spawn-from-bullet-options.patch diff --git a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0183-Eating-glow-berries-adds-glow-effect.patch similarity index 100% rename from patches/server/0181-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0183-Eating-glow-berries-adds-glow-effect.patch diff --git a/patches/server/0182-Option-to-make-drowned-break-doors.patch b/patches/server/0184-Option-to-make-drowned-break-doors.patch similarity index 100% rename from patches/server/0182-Option-to-make-drowned-break-doors.patch rename to patches/server/0184-Option-to-make-drowned-break-doors.patch diff --git a/patches/server/0183-Configurable-hunger-starvation-damage.patch b/patches/server/0185-Configurable-hunger-starvation-damage.patch similarity index 100% rename from patches/server/0183-Configurable-hunger-starvation-damage.patch rename to patches/server/0185-Configurable-hunger-starvation-damage.patch diff --git a/patches/server/0184-Enhance-SysoutCatcher.patch b/patches/server/0186-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0184-Enhance-SysoutCatcher.patch rename to patches/server/0186-Enhance-SysoutCatcher.patch diff --git a/patches/server/0185-Add-uptime-command.patch b/patches/server/0187-Add-uptime-command.patch similarity index 97% rename from patches/server/0185-Add-uptime-command.patch rename to patches/server/0187-Add-uptime-command.patch index b990e82cb..33fc91637 100644 --- a/patches/server/0185-Add-uptime-command.patch +++ b/patches/server/0187-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 77cced190bd287ff3f5bc8697f16b333da0bc786..bf51f5e414ab45e33efa4057ab251120 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e7f3034fbb3cb6c606724bb6e2a8e0102b06b56f..b2690db071a9ae26218406de09e37150a9d3eb66 100644 +index fb3b7f0d6e1577f4bba4589dc454ed6d064bd49f..60d2f483de06ca661aad809425d8b52397273732 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -294,6 +294,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 36d4d360c1f60d884f067391b7790e001010b45d..cbf14a9f6c4059ac2246d840ff901113 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 78381e82ddbfc78ed458908053752f48fee034b0..46c1ace4cce14e11ab957df1077625657ea3798b 100644 +index cc5e11524928bdec5402263eb68a51128b0503df..1714f839c688129184947c789731ac4d2b1c2fe1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0196-Add-Option-for-disable-observer-clocks.patch b/patches/server/0198-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/server/0196-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0198-Add-Option-for-disable-observer-clocks.patch index 8092e1228..607b819cb 100644 --- a/patches/server/0196-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0198-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index 713352b68f82d4c4a19a712d5207de0f99456713..d056e80c98973e9ba64adc5a8554acc8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46c1ace4cce14e11ab957df1077625657ea3798b..6c5fc242df9b0bf4d79a091105b7b113d801bf05 100644 +index 1714f839c688129184947c789731ac4d2b1c2fe1..a56818870503b2694d9e4dd232b91e1c6a54333f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -369,6 +369,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch similarity index 100% rename from patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch diff --git a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0200-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 100% rename from patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0200-Option-for-sponges-to-work-on-lava-and-mud.patch diff --git a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch similarity index 93% rename from patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch index 468e6822d..da430330d 100644 --- a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound 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 d2640173f3eca484123eb7bc9f6c4f796c9178fb..73c967330cc793acc029c17f037d985e6ba919de 100644 +index 2447d89f1219736bda0ee80bb5dcf11cc61f5863..dd5552f87ec78c3b16aebe0767e124c368aa8c24 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 -@@ -418,7 +418,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end diff --git a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0202-Cactus-breaks-from-solid-neighbors-config.patch similarity index 100% rename from patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0202-Cactus-breaks-from-solid-neighbors-config.patch diff --git a/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 96% rename from patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch index 88d1a0b17..99bddbd68 100644 --- a/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,7 +18,7 @@ index 9af1da3858d6cf79b8bfaf99dde1370ccc50d023..1acb41fab25bdbc4109913b111dbe3b0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80f13907f068fc6c52595ea3cf93c1a4d5d03b69..073bd3a0c0d06269738b406b8de08db99e914f8d 100644 +index 3dd2e8c271bbd24f2b4712934fc19a982ed4d1d2..3deab8fff2c67fdc47db8c739a29173d65b13bbf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -404,6 +404,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Conduit-behavior-configuration.patch b/patches/server/0204-Conduit-behavior-configuration.patch similarity index 100% rename from patches/server/0202-Conduit-behavior-configuration.patch rename to patches/server/0204-Conduit-behavior-configuration.patch diff --git a/patches/server/0203-Cauldron-fill-chances.patch b/patches/server/0205-Cauldron-fill-chances.patch similarity index 100% rename from patches/server/0203-Cauldron-fill-chances.patch rename to patches/server/0205-Cauldron-fill-chances.patch diff --git a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 97% rename from patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch index 1e95c8846..c61b54286 100644 --- a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index 2aca9b193db5dadc4fb90b8d7548277b698924aa..7702cd386247c1a850bb22ccf8c0724d if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b27849dbddadf4388e5909b8fe74bcdab20c552f..46b70a1fa8109fd1a6056dc5a854f6b3fdfb3034 100644 +index 2f5662582492573aef4efee54def5921be7351ea..9bc0c44fa2f02596b716f4c180178b419e6c1194 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -138,6 +138,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0205-Shulker-change-color-with-dye.patch b/patches/server/0207-Shulker-change-color-with-dye.patch similarity index 100% rename from patches/server/0205-Shulker-change-color-with-dye.patch rename to patches/server/0207-Shulker-change-color-with-dye.patch diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0208-Extended-OfflinePlayer-API.patch similarity index 99% rename from patches/server/0206-Extended-OfflinePlayer-API.patch rename to patches/server/0208-Extended-OfflinePlayer-API.patch index afa752fbf..11c86cd4c 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0208-Extended-OfflinePlayer-API.patch @@ -223,7 +223,7 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0b20bb986ee71a57a1c01c85ea7ab1292c9bcc52..df3953b541fc85985ded4a89e03bf5d840f7ed6d 100644 +index df8f06c898155955fed05c0b41b8ce14b13ec920..55d07278e635f9934418ac5c4e679e99b0b5dbd1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2599,6 +2599,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch b/patches/server/0209-Added-the-ability-to-add-combustible-items.patch similarity index 96% rename from patches/server/0207-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0209-Added-the-ability-to-add-combustible-items.patch index d1baf7915..c9c72ee83 100644 --- a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0209-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 19d2c4c6de4cd5130be06fb368cd12b9581984a1..966f8e764c2ad42cdfc84b5037081121937598b6 100644 +index c0bb753a844507fb1f892826b50f23ba17a2e5bd..cca5519dd1b19e86372222d052c5ca2b992bfff8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1568,6 +1568,19 @@ public final class CraftServer implements Server { +@@ -1573,6 +1573,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 90% rename from patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 39fce7cd6..cf21eda12 100644 --- a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 36f3a94499deb1344c3b7628c08adf6e49be26a8..5db8e4c8879d355843c196b17b8f39e9fe5d9a6a 100644 +index 64a56285c32fa70454371db366982f2530df0df5..59d6729e5e96ff34fd9cd31b2938a1da3826fa57 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1386,6 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1402,6 +1402,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 36f3a94499deb1344c3b7628c08adf6e49be26a8..5db8e4c8879d355843c196b17b8f39e9 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1393,6 +1394,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1409,6 +1410,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index 36f3a94499deb1344c3b7628c08adf6e49be26a8..5db8e4c8879d355843c196b17b8f39e9 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0ba55821e2d2a0c78c06e5756d8a591af85a536..8fe41200b26c0a17b6b65178aa858a74494471a6 100644 +index f9b529da8e9367c3a7c9d89eb16760bc691ea59d..f75b12f80e02c2b85c55c41096b4ee4759ce63b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 100% rename from patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch diff --git a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch similarity index 94% rename from patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch index 819e0908a..953b93d02 100644 --- a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 5de06447de2ab2c45debf314aecd39722d4a7af6..3a50342ff3e8b9685b5595bf78c05bfe + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0b5c6557afa83fb018bf3843f2f290e3d1925487..ab20edfc54b37e06d5a775ec8e98f4875513bcae 100644 +index 78dcf97e46b6888d25cc685bc4216f02b4b079da..92e10daff379ed5a3b9cff6d3ab12bd96ab62da1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2050,6 +2050,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,7 +48,7 @@ index 0b5c6557afa83fb018bf3843f2f290e3d1925487..ab20edfc54b37e06d5a775ec8e98f487 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0be19b3fc5fa6af23a3930a63e62199dffd538ea..c06d51200346d524a81e2d7a735db668da16c580 100644 +index 767659256e391854c0cd3035f138d86bbcaf6949..857df6dd4d1d598857d977107dcabbb25307ceab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -411,6 +411,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 94% rename from patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch index 4f0823d95..0a1f3fd1d 100644 --- a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 29916aa09d867ef3fa4dc8248b174bf8f97853b7..f78c41833169264fabc76d13bb4b9a89169aa0fe 100644 +index 6857eeb9a93850594cbdb634dfbdf6cb6d82ced5..20b3872b1f8464579ddd4324c9b09170f8ae4778 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1108,6 +1108,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1110,6 +1110,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/patches/server/0214-Halloween-options-and-optimizations.patch b/patches/server/0216-Halloween-options-and-optimizations.patch similarity index 92% rename from patches/server/0214-Halloween-options-and-optimizations.patch rename to patches/server/0216-Halloween-options-and-optimizations.patch index 45abb5be1..42e869702 100644 --- a/patches/server/0214-Halloween-options-and-optimizations.patch +++ b/patches/server/0216-Halloween-options-and-optimizations.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 0ed3d4f4cb9e2d11391c39633267becfd457102d..7d540fce81885776b417d6348dfffb6eb515beb5 100644 +index 39dc169eedc407284452380a883e8a2735cc46cb..980f2426a5052117f03ebb1ed3f7882b236ad86e 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -304,7 +304,7 @@ public class Bat extends AmbientCreature { @@ -17,14 +17,14 @@ index 0ed3d4f4cb9e2d11391c39633267becfd457102d..7d540fce81885776b417d6348dfffb6e b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -314,6 +314,7 @@ public class Bat extends AmbientCreature { - } - } - +@@ -318,6 +318,7 @@ public class Bat extends AmbientCreature { + private static boolean isSpookySeason = false; + private static final int ONE_HOUR = 20 * 60 * 60; + private static int lastSpookyCheck = -ONE_HOUR; + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur private static boolean isHalloween() { + if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) { LocalDate localdate = LocalDate.now(); - int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java index f35637a105d5aa12fb57c2456f2b2a7db12a49f0..f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java diff --git a/patches/server/0215-Config-for-grindstones.patch b/patches/server/0217-Config-for-grindstones.patch similarity index 98% rename from patches/server/0215-Config-for-grindstones.patch rename to patches/server/0217-Config-for-grindstones.patch index 39bb5e3d8..7c738dfc0 100644 --- a/patches/server/0215-Config-for-grindstones.patch +++ b/patches/server/0217-Config-for-grindstones.patch @@ -57,7 +57,7 @@ index 076c2b2938c9b88b7e71dbc2aa9d8c7e90d4fe75..c79e87fde9de55dbfe8c3deaf725e2a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 62fa79eccbb6f679c0460a6dfd457c405b3a8e67..f3449eb7a1433a8420c0de6f4649f0fae70b2294 100644 +index 477639dddb7c5ae0c9cc45a6eca73d82e486409b..7161b449b20b6fb39a16df7a2da652168ccced97 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -309,6 +309,9 @@ public class PurpurConfig { diff --git a/patches/server/0216-UPnP-Port-Forwarding.patch b/patches/server/0218-UPnP-Port-Forwarding.patch similarity index 90% rename from patches/server/0216-UPnP-Port-Forwarding.patch rename to patches/server/0218-UPnP-Port-Forwarding.patch index 4d3b7849d..f43f5e8e4 100644 --- a/patches/server/0216-UPnP-Port-Forwarding.patch +++ b/patches/server/0218-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b2690db071a9ae26218406de09e37150a9d3eb66..bd89b6f3570998a6e9c9bb5cdf3b22e052269d89 100644 +index 60d2f483de06ca661aad809425d8b52397273732..4ac5205cb47dbe9d8fec7da19467f2060436cd9c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -309,6 +309,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index b41509e26808a025bc247fa209d3b9df10368013..5ac471fdc1acfd04a8cdf3e044949e48a6df208d 100644 +index 26062173d137e26abdc452f7b2e0be0ee6dddfa3..fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -119,6 +119,11 @@ public class Goat extends Animal { @@ -549,7 +549,7 @@ index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); } 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 73c967330cc793acc029c17f037d985e6ba919de..8f8a3e03eec72cd48b10649778ec2f26016c419a 100644 +index dd5552f87ec78c3b16aebe0767e124c368aa8c24..939f003dd488fe7e6c63db38fddebfb6b5cc0f38 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 @@ -132,6 +132,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -597,7 +597,7 @@ index 5dc0b3d04bfc01cd2cb004c18279840861dc4a57..c9bd400473166999479f5eef1edad529 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index a8bc27c858c6ddec2ff2f84b5c1dc51c3b1b04b0..304ea7fdcd410a7c88ec61143364e14de8db0b0c 100644 +index 1a33d4e855a85b0a0d51c29dbb4042d30918684c..64f6b5f44db4fd90e789032e3833da60cfcfbef1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -277,6 +277,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -645,7 +645,7 @@ index cd1f830bf28b1c68e2b9cc7daa77f696234a22c9..df8d1b34078031001c50325b8cf5bfa9 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 3583d0c01410987584a53bb6e717d5636e2c9f69..c0180f3d7ef4f22bf967b2acc3dde3925283415d 100644 +index 02998e2f3d912d47641e7c9199467b5301de1e4c..4c9ffa8e1ab97d8156ead0ed189c769ffd9b4aae 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -120,6 +120,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -901,7 +901,7 @@ index 9363ec4aad2179274e4076c2acae577962a52d4b..8b6f8fca8402c177c399824c6bf0bdef public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater; diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 0f41e7127ece3c60500ab3cbb2e5bbc9c0bf013b..43ce5ffc6fc1853875f446b543d5b57502a21dc7 100644 +index 93eaa95e38304a4b86cda693289f60ad4923b5b8..241a6851179cfa566417a655bff7b06bdb7f9f4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -80,6 +80,11 @@ public class Spider extends Monster { @@ -1077,7 +1077,7 @@ index 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dc public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index d1501c1048417defdf1766366b572f2c98989cc9..a3a21f0c102cadcbe5882de716e90272fddd7f8c 100644 +index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9f3dd4d14 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1093,7 +1093,7 @@ index d1501c1048417defdf1766366b572f2c98989cc9..a3a21f0c102cadcbe5882de716e90272 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index f9e03dc7178c76ea70e45f265d9b42f9d2fe960d..7612a361645018a4f81c374c523bb191e0ff40f0 100644 +index e506dcf390ecb5cce8ae6993df7ec91b3ebc125e..9ca1618ab945ad834c5fc221ada49058f806e79c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1125,10 +1125,10 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index f78c41833169264fabc76d13bb4b9a89169aa0fe..9eaa0908a9251a53e9d0434a6bf5105033b6fcd2 100644 +index 20b3872b1f8464579ddd4324c9b09170f8ae4778..9c86dc4b9cd558f0e8f97b63d6cab746bd30d10c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } diff --git a/patches/server/0224-Potion-NamespacedKey.patch b/patches/server/0226-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0224-Potion-NamespacedKey.patch rename to patches/server/0226-Potion-NamespacedKey.patch diff --git a/patches/server/0225-Grindstone-API.patch b/patches/server/0227-Grindstone-API.patch similarity index 100% rename from patches/server/0225-Grindstone-API.patch rename to patches/server/0227-Grindstone-API.patch diff --git a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0229-Shearing-jeb-produces-random-color-wool.patch similarity index 100% rename from patches/server/0227-Shearing-jeb-produces-random-color-wool.patch rename to patches/server/0229-Shearing-jeb-produces-random-color-wool.patch diff --git a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0230-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0230-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0229-Mob-head-visibility-percent.patch b/patches/server/0231-Mob-head-visibility-percent.patch similarity index 97% rename from patches/server/0229-Mob-head-visibility-percent.patch rename to patches/server/0231-Mob-head-visibility-percent.patch index f352e546b..a02d6c88b 100644 --- a/patches/server/0229-Mob-head-visibility-percent.patch +++ b/patches/server/0231-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cbf14a9f6c4059ac2246d840ff901113fb03f8cc..ccf94ec8c0fcff5d75365274f662ff24b3ade75d 100644 +index 2cefad6730dbd50e41917af287c041a13d81ba2e..fc5dfbeae6bf9256e98eae774ccd77111d3ba280 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1039,9 +1039,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); diff --git a/patches/server/0230-Configurable-valid-characters-for-usernames.patch b/patches/server/0232-Configurable-valid-characters-for-usernames.patch similarity index 95% rename from patches/server/0230-Configurable-valid-characters-for-usernames.patch rename to patches/server/0232-Configurable-valid-characters-for-usernames.patch index 3e98b0367..9625e8b9c 100644 --- a/patches/server/0230-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0232-Configurable-valid-characters-for-usernames.patch @@ -17,7 +17,7 @@ index fd67cefb971b394042c0fdd845c20cf55d8efc2f..fab644c79287a444fd58c43547beba3e if (name == null || name.isEmpty() || name.length() > 16) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f562729f543ef2b5998c6c38c0a08b3ae4dab1bf..d56c2776d08306245618dca04cd39891bb61c1bd 100644 +index fe5a35568fdcd24c5020f003f85f3b4d3b4ac631..e24cd4274bfe7d8694a91f74a2f4674befb13bd6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -452,4 +452,11 @@ public class PurpurConfig { diff --git a/patches/server/0231-Shears-can-have-looting-enchantment.patch b/patches/server/0233-Shears-can-have-looting-enchantment.patch similarity index 99% rename from patches/server/0231-Shears-can-have-looting-enchantment.patch rename to patches/server/0233-Shears-can-have-looting-enchantment.patch index 97a8b881d..b6a180596 100644 --- a/patches/server/0231-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0233-Shears-can-have-looting-enchantment.patch @@ -170,7 +170,7 @@ index f81faaf6d69b09f635d71491303fca1d494001c5..f782e8dd9d3456f345859dffd69e5830 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d56c2776d08306245618dca04cd39891bb61c1bd..730a4a2e46aeb233d8036e8d7e1749dcb397e6c0 100644 +index e24cd4274bfe7d8694a91f74a2f4674befb13bd6..ffff69021335ca52d10a07bb3b3f272eea6ebcb5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -391,6 +391,7 @@ public class PurpurConfig { diff --git a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch b/patches/server/0234-Stop-bees-from-dying-after-stinging.patch similarity index 100% rename from patches/server/0232-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0234-Stop-bees-from-dying-after-stinging.patch diff --git a/patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 92% rename from patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 4b95f55b2..e8979ed0f 100644 --- a/patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index bd89b6f3570998a6e9c9bb5cdf3b22e052269d89..c3e3f70b560206b42b4b5eac4fa47540a899706d 100644 +index 4ac5205cb47dbe9d8fec7da19467f2060436cd9c..878a1d7bd73924b0d311fcc1f3e9fd23dbfa649a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1063,6 +1063,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> { @@ -31,7 +31,7 @@ index c0ea20dcee8bb293df96bc6ee019e50ad6b383fd..ff99d6fa919391d43b7737a2819cf9eb } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fa81039056af14c37426a508b7b2da77e8b50737..44e8822dae170c07e48ae016826a6710b7d7e29a 100644 +index 590286e593fec706a3f16f0080b35aa0637ca06d..f17b160b304b1adbde80690ae482986309f3befe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -451,8 +451,10 @@ public class PurpurConfig { diff --git a/patches/server/0240-Configurable-minimum-demand-for-trades.patch b/patches/server/0242-Configurable-minimum-demand-for-trades.patch similarity index 95% rename from patches/server/0240-Configurable-minimum-demand-for-trades.patch rename to patches/server/0242-Configurable-minimum-demand-for-trades.patch index 353474477..4f656ed7e 100644 --- a/patches/server/0240-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0242-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. 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 9eaa0908a9251a53e9d0434a6bf5105033b6fcd2..7b685f44109c44d7779a1fbf0152031193175bec 100644 +index 9c86dc4b9cd558f0e8f97b63d6cab746bd30d10c..cb6ca99d429b395c0c79b57b1709eb1b8899da82 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -544,7 +544,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -546,7 +546,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); diff --git a/patches/server/0241-Lobotomize-stuck-villagers.patch b/patches/server/0243-Lobotomize-stuck-villagers.patch similarity index 91% rename from patches/server/0241-Lobotomize-stuck-villagers.patch rename to patches/server/0243-Lobotomize-stuck-villagers.patch index ade6ab128..61b484841 100644 --- a/patches/server/0241-Lobotomize-stuck-villagers.patch +++ b/patches/server/0243-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers 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 7b685f44109c44d7779a1fbf0152031193175bec..52650c912b72de99a23eebf04c9a63945f04359c 100644 +index cb6ca99d429b395c0c79b57b1709eb1b8899da82..27e8f8bbaa25227c19399fab2bce8953d098e612 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -15,9 +15,9 @@ index 7b685f44109c44d7779a1fbf0152031193175bec..52650c912b72de99a23eebf04c9a6394 + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private int notLobotomizedCount = 0; // Purpur - public Villager(EntityType entityType, Level world) { - this(entityType, world, VillagerType.PLAINS); -@@ -198,6 +200,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + public long nextGolemPanic = -1; // Pufferfish + +@@ -200,6 +202,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -65,7 +65,7 @@ index 7b685f44109c44d7779a1fbf0152031193175bec..52650c912b72de99a23eebf04c9a6394 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -294,14 +337,20 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -297,13 +340,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -80,8 +80,7 @@ index 7b685f44109c44d7779a1fbf0152031193175bec..52650c912b72de99a23eebf04c9a6394 + } else { + this.isLobotomized = false; + } - // if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - if (!inactive && (getRider() == null || !this.isControllable())) { // Purpur - only use brain if no rider + if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); // Paper - } + } else if (this.isLobotomized && shouldRestock()) restock(); diff --git a/patches/server/0242-Option-for-villager-display-trade-item.patch b/patches/server/0244-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0242-Option-for-villager-display-trade-item.patch rename to patches/server/0244-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0243-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch similarity index 96% rename from patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch index ec1f5fee2..ccb84dd6f 100644 --- a/patches/server/0244-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index df60df664e2fe65f752752bcd084fa68795d4a23..b0db740c43c621daf3d5b6ce7efdd414195c1cd6 100644 +index fc5dfbeae6bf9256e98eae774ccd77111d3ba280..139f0f8b04c743df6c0534d09493d4f46407006e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1533,13 +1533,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1545,13 +1545,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; diff --git a/patches/server/0245-Anvil-repair-damage-options.patch b/patches/server/0247-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0245-Anvil-repair-damage-options.patch rename to patches/server/0247-Anvil-repair-damage-options.patch diff --git a/patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0246-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0247-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch similarity index 97% rename from patches/server/0247-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0249-Add-toggle-for-enchant-level-clamping.patch index 685312949..61827c78c 100644 --- a/patches/server/0247-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch @@ -31,7 +31,7 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 44e8822dae170c07e48ae016826a6710b7d7e29a..4d147845402a26957c905dd600bf0657bb7bd714 100644 +index f17b160b304b1adbde80690ae482986309f3befe..c6628a28387023b334dd99a4e469126a2108c38b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -398,6 +398,7 @@ public class PurpurConfig { diff --git a/patches/server/0248-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0250-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0248-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0250-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch similarity index 94% rename from patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch index a3a279fbe..d65ed8771 100644 --- a/patches/server/0249-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 52650c912b72de99a23eebf04c9a63945f04359c..a46fc13b3072b65dc9284ece6cbf63a743b5c1a7 100644 +index 27e8f8bbaa25227c19399fab2bce8953d098e612..576ac084a97a59f2bd3a1be3d70515649091e593 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1098,6 +1098,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1100,6 +1100,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { diff --git a/patches/server/0250-Stonecutter-damage.patch b/patches/server/0252-Stonecutter-damage.patch similarity index 100% rename from patches/server/0250-Stonecutter-damage.patch rename to patches/server/0252-Stonecutter-damage.patch diff --git a/patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0251-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0252-Add-config-for-snow-on-blue-ice.patch b/patches/server/0254-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0252-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0254-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0253-Skeletons-eat-wither-roses.patch b/patches/server/0255-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0253-Skeletons-eat-wither-roses.patch rename to patches/server/0255-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0254-Enchantment-Table-Persists-Lapis.patch b/patches/server/0256-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0254-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0256-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0255-Spark-Profiler.patch b/patches/server/0257-Spark-Profiler.patch similarity index 100% rename from patches/server/0255-Spark-Profiler.patch rename to patches/server/0257-Spark-Profiler.patch diff --git a/patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 87% rename from patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch index 16a157569..b7a0bd06d 100644 --- a/patches/server/0256-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ab20edfc54b37e06d5a775ec8e98f4875513bcae..70c8b4ac1d1a06af280dcecafa6ccf4093b69c13 100644 +index 92e10daff379ed5a3b9cff6d3ab12bd96ab62da1..c3c5e08f76ea0c23261ae1235ca9a3948b7a1885 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1715,7 +1715,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { @@ -18,7 +18,7 @@ index ab20edfc54b37e06d5a775ec8e98f4875513bcae..70c8b4ac1d1a06af280dcecafa6ccf40 voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e78e809cc7644d5007b149d5940f8cc164a76975..ed9b2f0b55229848894d9d6b401d050cb031b893 100644 +index 3a49455509a26063a62e39fb3d3ad81e80bced54..40922e69274de6bc3da6f74b0216a816a1fb7722 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -456,9 +456,11 @@ public class PurpurConfig { diff --git a/patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0257-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0258-Config-to-not-let-coral-die.patch b/patches/server/0260-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0258-Config-to-not-let-coral-die.patch rename to patches/server/0260-Config-to-not-let-coral-die.patch diff --git a/patches/server/0259-Add-local-difficulty-api.patch b/patches/server/0261-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0259-Add-local-difficulty-api.patch rename to patches/server/0261-Add-local-difficulty-api.patch diff --git a/patches/server/0260-Add-toggle-for-RNG-manipulation.patch b/patches/server/0262-Add-toggle-for-RNG-manipulation.patch similarity index 94% rename from patches/server/0260-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0262-Add-toggle-for-RNG-manipulation.patch index 9cba5076f..a971edea8 100644 --- a/patches/server/0260-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0262-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e0a3c7e23ebf6b8994d82964dd38cc8342e81aa3..24365907591a7e35fff0bc64a1f00e6e907c3bb7 100644 +index a94d7fcec60ffd9826f7c4828f0d98461261fb0b..67ebbf6005cdef280d62e2150287f18699b2fe6a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -592,7 +592,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -598,7 +598,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0261-Send-client-custom-name-of-BE.patch b/patches/server/0263-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0261-Send-client-custom-name-of-BE.patch rename to patches/server/0263-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0262-Allow-custom-ChatDecorators.patch b/patches/server/0264-Allow-custom-ChatDecorators.patch similarity index 90% rename from patches/server/0262-Allow-custom-ChatDecorators.patch rename to patches/server/0264-Allow-custom-ChatDecorators.patch index 67db06b22..95e8cd3c6 100644 --- a/patches/server/0262-Allow-custom-ChatDecorators.patch +++ b/patches/server/0264-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c3e3f70b560206b42b4b5eac4fa47540a899706d..a751b8dce17aae891fe0400f52ecdb6e3784ee0a 100644 +index 878a1d7bd73924b0d311fcc1f3e9fd23dbfa649a..af2138126c52b6997851f142a702b5dba6259294 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2849,6 +2849,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index a751b8dce17aae891fe0400f52ecdb6e3784ee0a..f1037c50605f1bf0f5dad383e245d93a // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1679,21 +1679,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return ichunkaccess1; -@@ -445,17 +445,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -448,17 +448,17 @@ public class ServerChunkCache extends ChunkSource { public void save(boolean flush) { this.runDistanceManagerUpdates(); @@ -357,7 +357,7 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad } // Paper end -@@ -485,23 +485,23 @@ public class ServerChunkCache extends ChunkSource { +@@ -488,23 +488,23 @@ public class ServerChunkCache extends ChunkSource { @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -387,7 +387,7 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad this.level.getProfiler().pop(); this.clearCache(); } -@@ -517,13 +517,13 @@ public class ServerChunkCache extends ChunkSource { +@@ -520,14 +520,14 @@ public class ServerChunkCache extends ChunkSource { gameprofilerfiller.push("pollingChunks"); gameprofilerfiller.push("filteringLoadedChunks"); // Paper - optimise chunk tick iteration @@ -396,6 +396,7 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad // Paper - optimise chunk tick iteration + this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random if (this.level.getServer().tickRateManager().runsNormally()) { gameprofilerfiller.popPush("naturalSpawnCount"); - this.level.timings.countNaturalMobs.startTiming(); // Paper - timings @@ -403,16 +404,16 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning int naturalSpawnChunkCount = k; -@@ -548,7 +548,7 @@ public class ServerChunkCache extends ChunkSource { - spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); +@@ -557,7 +557,7 @@ public class ServerChunkCache extends ChunkSource { + // Pufferfish end } // Paper end - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings + // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - this.lastSpawnState = spawnercreature_d; + // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously gameprofilerfiller.popPush("spawnAndTick"); -@@ -657,19 +657,19 @@ public class ServerChunkCache extends ChunkSource { +@@ -666,19 +666,19 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -436,7 +437,7 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -683,7 +683,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -692,7 +692,7 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -446,7 +447,7 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..e2b02a6f18932478c534a4eb4d349bad gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6 100644 +index 9121c5371b083d07d6b488e1a49d24a91ecccba0..1d8d1c4499c901f2675ef9a0e6f9dcb851217680 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -867,7 +867,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -506,9 +507,9 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 - this.timings.entityTick.startTiming(); // Spigot + //this.timings.entityTick.startTiming(); // Spigot // Purpur this.entityTickList.forEach((entity) -> { + entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { - if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -941,8 +941,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -955,8 +955,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -519,7 +520,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -1084,7 +1084,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1100,7 +1100,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper gameprofilerfiller.popPush("tickBlocks"); @@ -528,7 +529,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 if (randomTickSpeed > 0) { // Paper start - optimize random block ticking LevelChunkSection[] sections = chunk.getSections(); -@@ -1118,7 +1118,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1134,7 +1134,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking @@ -537,7 +538,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 gameprofilerfiller.pop(); } -@@ -1462,8 +1462,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1478,8 +1478,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -548,7 +549,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1479,7 +1479,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1495,7 +1495,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -557,7 +558,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1502,8 +1502,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1518,8 +1518,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -568,7 +569,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1533,7 +1533,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1549,7 +1549,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -577,7 +578,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 } } else { passenger.stopRiding(); -@@ -1553,14 +1553,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1569,14 +1569,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -595,7 +596,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1572,7 +1572,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1588,7 +1588,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -604,7 +605,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 } // Paper end -@@ -1586,7 +1586,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1602,7 +1602,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -613,7 +614,7 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1596,11 +1596,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1612,11 +1612,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -629,10 +630,10 @@ index 90328eec0aefa1447e03e0003f43f2a27959cab0..3c0b3db58f31c7b63ab798a7be6076c6 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a8c7534e50e89b281cc9dca8bacc3a00c219bcb0..bff8e4f1b6494ca9728a717199a051b3256cbd16 100644 +index c3c5e08f76ea0c23261ae1235ca9a3948b7a1885..95d5995d967f8a0a06aaaf81d6af7ae9ac83c731 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2453,7 +2453,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -641,7 +642,7 @@ index a8c7534e50e89b281cc9dca8bacc3a00c219bcb0..bff8e4f1b6494ca9728a717199a051b3 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2462,7 +2462,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2463,7 +2463,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -650,7 +651,7 @@ index a8c7534e50e89b281cc9dca8bacc3a00c219bcb0..bff8e4f1b6494ca9728a717199a051b3 return; } -@@ -2475,7 +2475,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2476,7 +2476,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -731,10 +732,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 538cd41c655b6995ea9cc72cf3471a59f3461902..c5486e8c4136dac3d2040841027cc14eecbae6ff 100644 +index d4da05d29545a4a40f4b6489aa22813d580874c4..5777e5e31b1a7a7911c183db990f16fe7fc9b9ef 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1311,15 +1311,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1313,15 +1313,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -753,7 +754,7 @@ index 538cd41c655b6995ea9cc72cf3471a59f3461902..c5486e8c4136dac3d2040841027cc14e // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1350,7 +1350,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -763,7 +764,7 @@ index 538cd41c655b6995ea9cc72cf3471a59f3461902..c5486e8c4136dac3d2040841027cc14e co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde84744083392 100644 +index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf3de2ac5b 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -133,7 +133,7 @@ public final class NaturalSpawner { @@ -785,10 +786,10 @@ index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde847 } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index fa170cc1ce7011d201295b89718292d696c7fc24..5e91f70a994ffa92e3aa794b52441790766cd774 100644 +index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d64717a422 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -786,7 +786,7 @@ public class LevelChunk extends ChunkAccess { +@@ -800,7 +800,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -797,7 +798,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..5e91f70a994ffa92e3aa794b52441790 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -806,7 +806,7 @@ public class LevelChunk extends ChunkAccess { +@@ -820,7 +820,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -806,7 +807,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..5e91f70a994ffa92e3aa794b52441790 } } } -@@ -1164,7 +1164,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1178,7 +1178,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -815,7 +816,7 @@ index fa170cc1ce7011d201295b89718292d696c7fc24..5e91f70a994ffa92e3aa794b52441790 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1186,7 +1186,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1200,7 +1200,7 @@ public class LevelChunk extends ChunkAccess { // Paper end // Spigot start } finally { @@ -902,10 +903,10 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 3fb2ae23bcbf0c397e91a958796f13a2dfedd152..a828dbdd755368b74501cc0bab2e38e7fde6f2bd 100644 +index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438daccf0e4f5fa 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -166,7 +166,7 @@ public class ActivationRange +@@ -170,7 +170,7 @@ public class ActivationRange */ public static void activateEntities(Level world) { @@ -914,7 +915,7 @@ index 3fb2ae23bcbf0c397e91a958796f13a2dfedd152..a828dbdd755368b74501cc0bab2e38e7 final int miscActivationRange = world.spigotConfig.miscActivationRange; final int raiderActivationRange = world.spigotConfig.raiderActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -227,7 +227,7 @@ public class ActivationRange +@@ -250,7 +250,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/server/0264-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch similarity index 88% rename from patches/server/0264-Remove-Mojang-Profiler.patch rename to patches/server/0266-Remove-Mojang-Profiler.patch index 30b9c9f7f..81a068032 100644 --- a/patches/server/0264-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -89,10 +89,10 @@ index 821dc4aeaf48460000682604fba51b340b9738e7..3aa2ce6a2a3d3cdfc372a60419a09f49 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f1037c50605f1bf0f5dad383e245d93a8bcf6f8b..e764ad7096852d8905422e8d0f140ed16c5b4498 100644 +index a74a0746c1757b4ff0bc75416fd22f6ed907b6da..b563b1d4129cf3fb15f5ab4e08acfd380d0ddf12 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -342,13 +342,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1567,7 +1567,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur @@ -244,7 +244,7 @@ index f1037c50605f1bf0f5dad383e245d93a8bcf6f8b..e764ad7096852d8905422e8d0f140ed1 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1762,17 +1762,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2728,40 +2729,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop loadedChunkMap = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(8192, 0.5f); + + private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4]; +- ++ + public boolean firstRunSpawnCounts = true; // Pufferfish + public final java.util.concurrent.atomic.AtomicBoolean _pufferfish_spawnCountsReady = new java.util.concurrent.atomic.AtomicBoolean(false); // Pufferfish - optimize countmobs + +@@ -277,16 +277,16 @@ public class ServerChunkCache extends ChunkSource { return ifLoaded; } // Paper end @@ -499,7 +509,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; -@@ -472,24 +472,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -475,24 +475,24 @@ public class ServerChunkCache extends ChunkSource { // CraftBukkit start - modelled on below public void purgeUnload() { if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system @@ -529,7 +539,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes -@@ -499,10 +499,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -502,10 +502,10 @@ public class ServerChunkCache extends ChunkSource { } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -542,7 +552,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 this.clearCache(); } -@@ -512,17 +512,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -515,10 +515,10 @@ public class ServerChunkCache extends ChunkSource { this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { @@ -556,24 +566,25 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 // Paper - optimise chunk tick iteration //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - // Paper - optimise chunk tick iteration +@@ -526,7 +526,7 @@ public class ServerChunkCache extends ChunkSource { + this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random if (this.level.getServer().tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); + // gameprofilerfiller.popPush("naturalSpawnCount"); // Purpur //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning -@@ -551,7 +551,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -560,7 +560,7 @@ public class ServerChunkCache extends ChunkSource { // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - this.lastSpawnState = spawnercreature_d; + // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously - gameprofilerfiller.popPush("spawnAndTick"); + //gameprofilerfiller.popPush("spawnAndTick"); // Purpur boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit // Paper start - optimise chunk tick iteration -@@ -659,7 +659,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -668,7 +668,7 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration // this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -582,7 +593,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 if (flag) { //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -667,7 +667,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -676,7 +676,7 @@ public class ServerChunkCache extends ChunkSource { } } @@ -591,7 +602,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 // Paper - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur // Paper start - optimise chunk tick iteration -@@ -685,8 +685,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -694,10 +694,10 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur // Paper - optimise chunk tick iteration @@ -600,9 +611,12 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 + //gameprofilerfiller.pop(); // Purpur + //gameprofilerfiller.pop(); // Purpur } - } - -@@ -858,7 +858,7 @@ public class ServerChunkCache extends ChunkSource { +- ++ + // Pufferfish start - optimize mob spawning + if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { + for (ServerPlayer player : this.level.players) { +@@ -901,7 +901,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -612,7 +626,7 @@ index e2b02a6f18932478c534a4eb4d349badadbe04a2..248bb50532e2dfab7116f72dd2469620 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7afb28def7f 100644 +index 1d8d1c4499c901f2675ef9a0e6f9dcb851217680..dd0ef00d29d4caa3a1fe8513ec82d72f64fc308f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -825,16 +825,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -698,7 +712,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -920,9 +920,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -921,9 +921,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -710,13 +724,19 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -934,22 +934,21 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -935,7 +935,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } - gameprofilerfiller.push("tick"); + //gameprofilerfiller.push("tick"); // Purpur - this.guardEntityTick(this::tickNonPassenger, entity); + // Pufferfish start - copied from this.guardEntityTick + try { + this.tickNonPassenger(entity); // Pufferfish - changed +@@ -950,20 +950,19 @@ public class ServerLevel extends Level implements WorldGenLevel { + // Paper end + } + // Pufferfish end - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -737,7 +757,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af } @Override -@@ -1029,9 +1028,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1045,9 +1044,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -748,8 +768,8 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af + //gameprofilerfiller.push("thunder"); // Purpur final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder -@@ -1070,7 +1069,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning +@@ -1086,7 +1085,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -758,7 +778,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af if (!this.paperConfig().environment.disableIceAndSnow) { // Paper for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1083,7 +1082,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1099,7 +1098,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper @@ -767,7 +787,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { // Paper start - optimize random block ticking -@@ -1119,7 +1118,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1135,7 +1134,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -776,7 +796,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af } @VisibleForTesting -@@ -1466,19 +1465,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1482,19 +1481,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -801,7 +821,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1507,12 +1506,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1523,12 +1522,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -818,7 +838,7 @@ index 3c0b3db58f31c7b63ab798a7be6076c6cee5f9f6..90fd350cec2ca726ff6707ab2cd3c7af // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1524,7 +1523,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1540,7 +1539,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1087,10 +1107,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1ffae4335 100644 +index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f4d064c91 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -834,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -846,7 +846,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { @@ -1099,7 +1119,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -895,7 +895,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -907,7 +907,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1108,7 +1128,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1114,7 +1114,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1126,7 +1126,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1117,7 +1137,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1123,7 +1123,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1135,7 +1135,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1126,7 +1146,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 return; } // Paper end -@@ -1144,8 +1144,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1156,8 +1156,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1137,7 +1157,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1164,7 +1164,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1176,7 +1176,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1146,7 +1166,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1302,7 +1302,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1314,7 +1314,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1155,7 +1175,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } } // Paper start - detailed watchdog information -@@ -3175,7 +3175,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3187,7 +3187,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1164,7 +1184,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3193,7 +3193,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3205,7 +3205,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper // CraftBukkit end @@ -1173,7 +1193,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } this.isInsidePortal = false; -@@ -3668,14 +3668,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3680,14 +3680,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1190,7 +1210,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3714,7 +3714,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3726,7 +3726,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1199,7 +1219,7 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3741,10 +3741,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3753,10 +3753,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); @@ -1213,10 +1233,10 @@ index 24365907591a7e35fff0bc64a1f00e6e907c3bb7..b45064a92674a4c48350c466b8131bf1 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d47dd03c1 100644 +index 139f0f8b04c743df6c0534d09493d4f46407006e..ae8efb754e89c925647aa515f2e5bfc4c75a3857 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -409,7 +409,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1225,7 +1245,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -512,7 +512,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1234,7 +1254,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d } public boolean canSpawnSoulSpeedParticle() { -@@ -3138,10 +3138,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3164,10 +3164,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1248,7 +1268,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3153,7 +3153,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3179,7 +3179,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1257,7 +1277,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3448,19 +3448,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3474,19 +3474,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1282,7 +1302,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3487,8 +3487,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3513,8 +3513,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1293,7 +1313,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3515,8 +3515,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3541,8 +3541,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1304,7 +1324,7 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3533,15 +3533,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3559,15 +3559,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1324,10 +1344,10 @@ index b0db740c43c621daf3d5b6ce7efdd414195c1cd6..8bbd55274e503284a0d878883c67ff1d // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab26a305ea 100644 +index 31f1a485fc3e8d40f7181a5f8af4f56d9c25e2fc..2b57be8b158ab9736a2ab4a454edfe38f2ff6785 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -365,13 +365,13 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -367,13 +367,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void baseTick() { super.baseTick(); @@ -1343,7 +1363,7 @@ index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab incrementTicksSinceLastInteraction(); // Purpur } -@@ -702,7 +702,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void aiStep() { super.aiStep(); @@ -1352,7 +1372,7 @@ index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -722,7 +722,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -724,7 +724,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } } @@ -1361,7 +1381,7 @@ index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab } protected Vec3i getPickupReach() { -@@ -934,42 +934,42 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -936,46 +936,46 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end @@ -1375,22 +1395,26 @@ index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab if (i % 2 != 0 && this.tickCount > 1) { - this.level().getProfiler().push("targetSelector"); + //this.level().getProfiler().push("targetSelector"); // Purpur + if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur + if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur } else { - this.level().getProfiler().push("targetSelector"); -+ //this.level().getProfiler().push("targetSelector"); ++ //this.level().getProfiler().push("targetSelector"); // Purpur + if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tick(); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur + if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tick(); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1425,10 +1449,10 @@ index 7c8bdf0ec5c61d8a79fcaa68f1f79b7f56705dce..b1212f456f2cf1b4aae1fe0e301dfaab } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f2899438715886 100644 +index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f82c249c2 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -102,8 +102,8 @@ public class GoalSelector { +@@ -105,8 +105,8 @@ public class GoalSelector { } public void tick() { @@ -1439,7 +1463,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994 for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -120,8 +120,8 @@ public class GoalSelector { +@@ -123,8 +123,8 @@ public class GoalSelector { } } @@ -1450,7 +1474,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994 for(WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -141,13 +141,13 @@ public class GoalSelector { +@@ -144,13 +144,13 @@ public class GoalSelector { } } @@ -1467,7 +1491,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994 for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -155,7 +155,7 @@ public class GoalSelector { +@@ -158,7 +158,7 @@ public class GoalSelector { } } @@ -1512,16 +1536,16 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489 this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034bc03913b 100644 +index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -258,13 +258,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - +@@ -259,13 +259,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("allayBrain"); + //this.level().getProfiler().push("allayBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("allayActivityUpdate"); @@ -1534,16 +1558,16 @@ index 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034 } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index a2664e7961bba5231d81b90f7fc2cf43a116114a..5f3670c02ddbb923a96ba0c6199c49e665d224c4 100644 +index b7eaa9e99688ae300c2e9176991c29828d1cc800..e4d529825e681bbc656113b1fd44894338e23d21 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -314,13 +314,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { - +@@ -215,13 +215,13 @@ public class Frog extends Animal implements VariantHolder { + private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("frogBrain"); + //this.level().getProfiler().push("frogBrain"); // Purpur - // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("frogActivityUpdate"); @@ -1600,16 +1624,16 @@ index 44a0c13c57e0823938938de4d89921cb73e112c2..b95b6d35635ebcc4ed70d3114f1b27bb } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index e46475c2d44923167da7c654cb8af6b6278c7149..1e86f144d6139cff52ccc48f03f3283aa6517736 100644 +index 3103df74b7ae5a5ed841bf97794284cd43ad59de..14135dac80dec4224715e21cef6556d22e569026 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -116,12 +116,12 @@ public class Tadpole extends AbstractFish { - +@@ -117,12 +117,12 @@ public class Tadpole extends AbstractFish { + private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("tadpoleBrain"); + //this.level().getProfiler().push("tadpoleBrain"); // Purpur - // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.level().getProfiler().pop(); - this.level().getProfiler().push("tadpoleActivityUpdate"); + //this.level().getProfiler().pop(); // Purpur @@ -1621,16 +1645,16 @@ index e46475c2d44923167da7c654cb8af6b6278c7149..1e86f144d6139cff52ccc48f03f3283a } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 5ac471fdc1acfd04a8cdf3e044949e48a6df208d..1162318d8d187b8bdb30d28f6f61c430452c41b5 100644 +index fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2..806b207e5246db7daa03bebabd7aa574d8b0dab7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -225,13 +225,13 @@ public class Goat extends Animal { - +@@ -226,13 +226,13 @@ public class Goat extends Animal { + private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("goatBrain"); + //this.level().getProfiler().push("goatBrain"); // Purpur - // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goatActivityUpdate"); @@ -1697,16 +1721,16 @@ index ab183a7d94a27d5235ff33ce7784c92d66d40b89..94431d5c789a9f558c16c0d1fc8f1f74 } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index a3a21f0c102cadcbe5882de716e90272fddd7f8c..468351b78af72c5ce998f9179f14d53951e95e46 100644 +index e326e753cc6bca1bd00287d16c9796b9f3dd4d14..9d6c4f13c4a444c6c815c6c4f2114142f166b9bb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -167,10 +167,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - +@@ -168,10 +168,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + private int behaviorTick; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("hoglinBrain"); + //this.level().getProfiler().push("hoglinBrain"); // Purpur - // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1714,16 +1738,16 @@ index a3a21f0c102cadcbe5882de716e90272fddd7f8c..468351b78af72c5ce998f9179f14d539 if (this.isConverting()) { ++this.timeInOverworld; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 7612a361645018a4f81c374c523bb191e0ff40f0..2174a583b6db56520fa7523adc3c09e56ed7e85e 100644 +index 9ca1618ab945ad834c5fc221ada49058f806e79c..8e829d522a6012f409161ad5a9a06721a942d7e4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -334,10 +334,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - +@@ -335,10 +335,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + private int behaviorTick; // Pufferfish @Override protected void customServerAiStep() { - this.level().getProfiler().push("piglinBrain"); + //this.level().getProfiler().push("piglinBrain"); // Purpur - // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1748,15 +1772,16 @@ index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bd PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 53035057b715401381b4f5438c82a61fe6012a7e..656c4ee100364a3299cb78f7173ee0506d46ff04 100644 +index 63e4688d8055cf4a8883477f7943bf63520c0693..22263f219ce9e9f014abb76c43297c528acb36eb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -301,9 +301,9 @@ public class Warden extends Monster implements VibrationSystem { +@@ -302,10 +302,10 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); - worldserver.getProfiler().push("wardenBrain"); + //worldserver.getProfiler().push("wardenBrain"); // Purpur + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish this.getBrain().tick(worldserver, this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1764,10 +1789,10 @@ index 53035057b715401381b4f5438c82a61fe6012a7e..656c4ee100364a3299cb78f7173ee050 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index a46fc13b3072b65dc9284ece6cbf63a743b5c1a7..fe68013f8efa35e6dfcf658df3b33d9d3df73979 100644 +index 576ac084a97a59f2bd3a1be3d70515649091e593..68404053233985cb830e95e287c81875a3b86957 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -339,7 +339,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -342,7 +342,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end @@ -1776,7 +1801,7 @@ index a46fc13b3072b65dc9284ece6cbf63a743b5c1a7..fe68013f8efa35e6dfcf658df3b33d9d // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -352,7 +352,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -354,7 +354,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getBrain().tick((ServerLevel) this.level(), this); // Paper } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur end @@ -1808,10 +1833,10 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..17abd085b3faf88e10a44a6c98af9968 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a7688803e 100644 +index 5777e5e31b1a7a7911c183db990f16fe7fc9b9ef..3c7cc1cba00df45296155bdd1430a64a94945f6c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1308,9 +1308,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1310,9 +1310,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1823,7 +1848,7 @@ index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1351,7 +1351,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1353,7 +1353,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1832,7 +1857,7 @@ index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1561,7 +1561,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1563,7 +1563,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1841,7 +1866,7 @@ index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1580,7 +1580,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1582,7 +1582,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1850,16 +1875,17 @@ index c5486e8c4136dac3d2040841027cc14eecbae6ff..7eb5af6b9afd0c7dea434da4040fc59a // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1839,6 +1839,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1841,7 +1841,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { -+ //if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur // Purpur - TODO: Pufferfish +- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish ++ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur return (ProfilerFiller) this.profiler.get(); } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc17e9a0ba 100644 +index 1e3349690d00c7889a381f7c65a3b5bf3de2ac5b..524301e2438ee2938b59eb2b2e9fc4e0eb727a87 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,7 @@ public final class NaturalSpawner { @@ -1881,10 +1907,10 @@ index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc // Paper start diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 5e91f70a994ffa92e3aa794b52441790766cd774..5efb3e1d04cc22a8fa37a25e2bef07f9e2842adc 100644 +index 88b7f814a1454841b1f1b27e9c7d66d64717a422..66656c4cf157228c9f52b33b358713ef0172f9ff 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -443,11 +443,11 @@ public class LevelChunk extends ChunkAccess { +@@ -457,11 +457,11 @@ public class LevelChunk extends ChunkAccess { if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1899,7 +1925,7 @@ index 5e91f70a994ffa92e3aa794b52441790766cd774..5efb3e1d04cc22a8fa37a25e2bef07f9 } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1161,9 +1161,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1175,9 +1175,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1911,7 +1937,7 @@ index 5e91f70a994ffa92e3aa794b52441790766cd774..5efb3e1d04cc22a8fa37a25e2bef07f9 //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1175,7 +1175,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1189,7 +1189,7 @@ public class LevelChunk extends ChunkAccess { LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); } diff --git a/patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 94% rename from patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch index 7bbd1d04d..cbda6ee93 100644 --- a/patches/server/0265-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7865288eee0950c346801cc20aea9071a31fc6dc..d651b8c6254a28fc55f9a9c3f264f83a265bf316 100644 +index 95d5995d967f8a0a06aaaf81d6af7ae9ac83c731..f0b53dc99d21962cbed9a2a1d43be9622735aa57 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -739,6 +739,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index 7865288eee0950c346801cc20aea9071a31fc6dc..d651b8c6254a28fc55f9a9c3f264f83a return; } -@@ -1352,8 +1353,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1353,8 +1354,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0266-Add-Bee-API.patch b/patches/server/0268-Add-Bee-API.patch similarity index 100% rename from patches/server/0266-Add-Bee-API.patch rename to patches/server/0268-Add-Bee-API.patch diff --git a/patches/server/0267-Debug-Marker-API.patch b/patches/server/0269-Debug-Marker-API.patch similarity index 97% rename from patches/server/0267-Debug-Marker-API.patch rename to patches/server/0269-Debug-Marker-API.patch index 8b6fe2410..a4faa9185 100644 --- a/patches/server/0267-Debug-Marker-API.patch +++ b/patches/server/0269-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 966f8e764c2ad42cdfc84b5037081121937598b6..741a3cf8df218635cb5430db8d2c61294f7e849b 100644 +index cca5519dd1b19e86372222d052c5ca2b992bfff8..e4f0b1a5b2165610c533f9a661341e5c46ffb63e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1579,6 +1579,42 @@ public final class CraftServer implements Server { +@@ -1584,6 +1584,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } diff --git a/patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch index 5c52cd9c3..76d49e956 100644 --- a/patches/server/0268-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index f3ff965e641f561dbc1b5194353e75dc17e9a0ba..51a4d0b212278a20363fd0d3cb253f0e3047e961 100644 +index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122fd36f05e0 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -258,7 +258,7 @@ public final class NaturalSpawner { @@ -18,7 +18,7 @@ index f3ff965e641f561dbc1b5194353e75dc17e9a0ba..51a4d0b212278a20363fd0d3cb253f0e if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e8c250a1c41c82dbfbae69e8d48b4604d63139b..52cc678de23f370c411933d3f99c31a7acbe2d9b 100644 +index 81a758847405ca2a4770da8120a9f837662bc3f7..c46408be4ae6d764f233963f17b383ea623561ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -377,6 +377,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0269-Add-skeleton-bow-accuracy-option.patch b/patches/server/0271-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0269-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0271-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0270-Allay-respect-item-NBT.patch b/patches/server/0272-Allay-respect-item-NBT.patch similarity index 94% rename from patches/server/0270-Allay-respect-item-NBT.patch rename to patches/server/0272-Allay-respect-item-NBT.patch index 6e52cbef1..070aa4f96 100644 --- a/patches/server/0270-Allay-respect-item-NBT.patch +++ b/patches/server/0272-Allay-respect-item-NBT.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12ad9bc7e7 100644 +index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f27e01ee8b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -405,9 +405,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -406,9 +406,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override public boolean wantsToPickUp(ItemStack stack) { diff --git a/patches/server/0271-Add-death-screen-API.patch b/patches/server/0273-Add-death-screen-API.patch similarity index 100% rename from patches/server/0271-Add-death-screen-API.patch rename to patches/server/0273-Add-death-screen-API.patch diff --git a/patches/unapplied/server/0275-Make-pufferfish-config-relocatable.patch b/patches/server/0274-Make-pufferfish-config-relocatable.patch similarity index 90% rename from patches/unapplied/server/0275-Make-pufferfish-config-relocatable.patch rename to patches/server/0274-Make-pufferfish-config-relocatable.patch index 12a1c4c9f..ccb72b5ce 100644 --- a/patches/unapplied/server/0275-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0274-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 26f08b7fb16484c39135ed172c246f76c9e089c7..9ca1494497ae53e56b1f81fda51b0b8bd02a6d03 100644 +index 960c0555a001fe63de78d77d5ea47d08a520d029..b4e5fbace85c67e7bd347e6a90514bbc2c132d5e 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -26,7 +26,7 @@ index 26f08b7fb16484c39135ed172c246f76c9e089c7..9ca1494497ae53e56b1f81fda51b0b8b if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 8af211fdcc32d5701769f81fa4edd17afeafef0f..4fbb575922cb382f458a8d883e35a5733befff32 100644 +index a39105007dd3aa44cc035864b388618e6ee5bd70..d56fab50babe37865d0a40b7088b011c8ff6af88 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -230,6 +230,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -38,7 +38,7 @@ index 8af211fdcc32d5701769f81fa4edd17afeafef0f..4fbb575922cb382f458a8d883e35a573 gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index b214e8030b47ec2b14a8dc17894b8f89c95ab9bb..d41f9c4a3c992b5dadacb4fcb1107235fff79fa8 100644 +index cce747b8a2d87d81429dfaf1e0073b1ea4b1a5d2..feed5a8042ef329e56fecd8096da08986dbd2032 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -180,6 +180,12 @@ public class Main { diff --git a/patches/server/0272-Implement-ram-and-rambar-commands.patch b/patches/server/0275-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0272-Implement-ram-and-rambar-commands.patch rename to patches/server/0275-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0273-Add-item-packet-serialize-event.patch b/patches/server/0276-Add-item-packet-serialize-event.patch similarity index 90% rename from patches/server/0273-Add-item-packet-serialize-event.patch rename to patches/server/0276-Add-item-packet-serialize-event.patch index f0fc9e76d..c87c7dfee 100644 --- a/patches/server/0273-Add-item-packet-serialize-event.patch +++ b/patches/server/0276-Add-item-packet-serialize-event.patch @@ -36,10 +36,10 @@ index b13bc90b28b02f5e80d935bfcba727f92c5e4c4f..0cdc68722552a464fb828016eb93f865 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e764ad7096852d8905422e8d0f140ed16c5b4498..39ecb12d4296852ee5865dcfa2b8b6c3233a4804 100644 +index b563b1d4129cf3fb15f5ab4e08acfd380d0ddf12..f69976dcba060027c67c2e1b49fa28d3f28f66f0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1716,6 +1716,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 568bb53e91dda4804cd328a81ba12ce735c52603..62aabfc021fa3349b0ab46744a9ec78d57f058b0 100644 +index 128eab7246bf263e302cbeb5e4c359a41dd2cd3f..be7b302257447d5593efe9b512d036b293f340b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -563,4 +563,9 @@ public class PurpurConfig { diff --git a/patches/server/0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 487503f23..6993b1c4d 100644 --- a/patches/server/0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -104,7 +104,7 @@ index 3fb1e558c3510243c94981211f9a0e5e0ef1895b..e5177e5ffcac360f935f2139db4554c6 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 62aabfc021fa3349b0ab46744a9ec78d57f058b0..32aaa66acc35950caec1a0b0dac9413e950b37a6 100644 +index be7b302257447d5593efe9b512d036b293f340b5..2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -568,4 +568,9 @@ public class PurpurConfig { diff --git a/patches/server/0275-Configurable-block-blast-resistance.patch b/patches/server/0278-Configurable-block-blast-resistance.patch similarity index 96% rename from patches/server/0275-Configurable-block-blast-resistance.patch rename to patches/server/0278-Configurable-block-blast-resistance.patch index 4be9e5d15..8b504364c 100644 --- a/patches/server/0275-Configurable-block-blast-resistance.patch +++ b/patches/server/0278-Configurable-block-blast-resistance.patch @@ -18,7 +18,7 @@ index 06b07927aba82084bd2996be92b9e340a9bf2ad2..0b6ab25fb59a7dd713a0fa9063f8590c protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 32aaa66acc35950caec1a0b0dac9413e950b37a6..8426be7906cd0f4df8c274aa1d113388965d8d8b 100644 +index 2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181..3c163e2b512294f93255f25ccdc7917ded14ca4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -573,4 +573,19 @@ public class PurpurConfig { diff --git a/patches/server/0276-Configurable-block-fall-damage-modifiers.patch b/patches/server/0279-Configurable-block-fall-damage-modifiers.patch similarity index 98% rename from patches/server/0276-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0279-Configurable-block-fall-damage-modifiers.patch index c885da83e..8473d33e1 100644 --- a/patches/server/0276-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0279-Configurable-block-fall-damage-modifiers.patch @@ -54,7 +54,7 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8426be7906cd0f4df8c274aa1d113388965d8d8b..29dd74f28c66cce2c25dc9aa916f230cdfbe2da3 100644 +index 3c163e2b512294f93255f25ccdc7917ded14ca4a..f743f97c622f1672374cc446331435edb1ce1ed9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -588,4 +588,50 @@ public class PurpurConfig { diff --git a/patches/server/0277-Language-API.patch b/patches/server/0280-Language-API.patch similarity index 93% rename from patches/server/0277-Language-API.patch rename to patches/server/0280-Language-API.patch index c0684be8d..7f4b559fb 100644 --- a/patches/server/0277-Language-API.patch +++ b/patches/server/0280-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 741a3cf8df218635cb5430db8d2c61294f7e849b..796787b28babc5393cfb8f83cb9e77a5cb6114f2 100644 +index e4f0b1a5b2165610c533f9a661341e5c46ffb63e..aef22db014c81332ba599ddb931afb264dc12a84 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -398,6 +398,20 @@ public final class CraftServer implements Server { diff --git a/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0281-Milk-Keeps-Beneficial-Effects.patch similarity index 94% rename from patches/server/0278-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0281-Milk-Keeps-Beneficial-Effects.patch index ae4807ae8..64696e48f 100644 --- a/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0281-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3af72be980ed6cab704eedadeb9a9577aca25fc1..ac57b2d31019eeb12a0d63266b900c606d90b05e 100644 +index ae8efb754e89c925647aa515f2e5bfc4c75a3857..1425a8321e3bc988a88ca45e3d3f0fcee18df58f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1124,6 +1124,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1123,6 +1123,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -30,7 +30,7 @@ index 08320248a6956d41d60681e3d29f81768c80fd3d..237247cb91248eb2d05e967e95cb8ad0 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4cd381104a2ab320feb3984b8f77f9630246c7e4..48e44b0dd3d9ff863d7ee7a96d434a68a84cdf0f 100644 +index c7584f2cd12a75f61ca94100718df200b6c373e7..e3d9bd8fc246771a6d612d0c834a47c7a3255f74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0283-Add-log-suppression-for-LibraryLoader.patch similarity index 94% rename from patches/server/0280-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0283-Add-log-suppression-for-LibraryLoader.patch index 6a689fce9..119549530 100644 --- a/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0283-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 29dd74f28c66cce2c25dc9aa916f230cdfbe2da3..cf0a52a037ac255c3f9e36dbff3cedda0fd8f49e 100644 +index f743f97c622f1672374cc446331435edb1ce1ed9..24db1eb4d9b1677287bbe157320575fee926577a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -465,11 +465,14 @@ public class PurpurConfig { diff --git a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0282-Fire-Immunity-API.patch b/patches/server/0285-Fire-Immunity-API.patch similarity index 91% rename from patches/server/0282-Fire-Immunity-API.patch rename to patches/server/0285-Fire-Immunity-API.patch index 9f1e8ccb7..f40936298 100644 --- a/patches/server/0282-Fire-Immunity-API.patch +++ b/patches/server/0285-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbcd58e6725 100644 +index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a99431a8335cf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -422,6 +422,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -16,7 +16,7 @@ index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbc public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1800,7 +1801,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1812,7 +1813,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean fireImmune() { @@ -25,7 +25,7 @@ index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbc } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2492,6 +2493,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2504,6 +2505,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbc return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2639,6 +2645,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2651,6 +2657,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,7 +50,7 @@ index b45064a92674a4c48350c466b8131bf1ffae4335..1e2308ecde7bef57ac0b6192b8362cbc } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1ac0f0faab8d6a22429f16ea745640bba65ef4ab..752b32e4086e84d68e088fdaabec941bb134d61e 100644 +index bfd8f6d85272f3ecbb0f7fc5fc92d2055205c0e0..deab17ae3deca2e49f6c3005048ad10e597d7329 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -83,6 +83,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 94% rename from patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 2ed346c9e..a4752d76d 100644 --- a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1e2308ecde7bef57ac0b6192b8362cbcd58e6725..b21dd27e77632435ea53b48861fe16ee03d5ba06 100644 +index 8625f37ed94191a2b4dac593e67a99431a8335cf..a9d5a9b9bff5631f3f458fba7d88c3fc642416b8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -909,6 +909,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -921,6 +921,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/patches/server/0284-Added-got-ram-event.patch b/patches/server/0287-Added-got-ram-event.patch similarity index 86% rename from patches/server/0284-Added-got-ram-event.patch rename to patches/server/0287-Added-got-ram-event.patch index 6512088bd..b9275a0e9 100644 --- a/patches/server/0284-Added-got-ram-event.patch +++ b/patches/server/0287-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 1162318d8d187b8bdb30d28f6f61c430452c41b5..fd2a6c9def675fa2dd5e78fbc18002794098da26 100644 +index 806b207e5246db7daa03bebabd7aa574d8b0dab7..5d7b20c30bc5e3be8511b300c318d12a1e4a49d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -428,6 +428,7 @@ public class Goat extends Animal { +@@ -429,6 +429,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0285-Log-skipped-entity-s-position.patch b/patches/server/0288-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/server/0285-Log-skipped-entity-s-position.patch rename to patches/server/0288-Log-skipped-entity-s-position.patch index 0d909a68e..6d2a32222 100644 --- a/patches/server/0285-Log-skipped-entity-s-position.patch +++ b/patches/server/0288-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index ef01a87a77954f19f017129ab186afea9e6389a2..9793a5c9a36201b00ba32f2ac928cfabfbdb98e1 100644 +index e5aa1bac908f947f2ed70a05194bf30b4cb55115..38845300ceb7092de4cd8e31ef8782728892f656 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -615,6 +615,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -617,6 +617,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/server/0286-End-Crystal-Cramming.patch b/patches/server/0289-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0286-End-Crystal-Cramming.patch rename to patches/server/0289-End-Crystal-Cramming.patch diff --git a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0291-Add-attribute-clamping-and-armor-limit-config.patch similarity index 97% rename from patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0291-Add-attribute-clamping-and-armor-limit-config.patch index c68108985..d25508bc6 100644 --- a/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0291-Add-attribute-clamping-and-armor-limit-config.patch @@ -36,7 +36,7 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cf0a52a037ac255c3f9e36dbff3cedda0fd8f49e..f10679ef2cbd73397b64eb69516c8a46e4d35a4e 100644 +index 24db1eb4d9b1677287bbe157320575fee926577a..3eba2f3df5723d068ff62c78243e39b8f4e3f853 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -577,6 +577,16 @@ public class PurpurConfig { diff --git a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0292-Config-to-remove-explosion-radius-clamp.patch similarity index 91% rename from patches/server/0289-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0292-Config-to-remove-explosion-radius-clamp.patch index b23284f57..15e7361a6 100644 --- a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0292-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 370952a7be8df3ea00c0816235d84927df4ed79d..b0b8a0391bfd347fea44271b0408de2792d6489b 100644 +index 17abd085b3faf88e10a44a6c98af996892cc4e58..0c08a07d3d1efa35646dbaa5cc887bf9d62cae42 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -97,7 +97,7 @@ public class Explosion { @@ -27,7 +27,7 @@ index 370952a7be8df3ea00c0816235d84927df4ed79d..b0b8a0391bfd347fea44271b0408de27 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 05b4bd8495451dbd6277946e77737495b58375f8..f3571a1a86b7ec9f10b2a5bf4e2c3f7b0bded7d1 100644 +index 6523578f35da2977567f0011a9f9f9a96b538560..2bb310f0a7c94f036c0e849d8a3defb47a115f04 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0291-Add-PreExplodeEvents.patch b/patches/server/0294-Add-PreExplodeEvents.patch similarity index 94% rename from patches/server/0291-Add-PreExplodeEvents.patch rename to patches/server/0294-Add-PreExplodeEvents.patch index 2462678f8..a696779b3 100644 --- a/patches/server/0291-Add-PreExplodeEvents.patch +++ b/patches/server/0294-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b0b8a0391bfd347fea44271b0408de2792d6489b..e07078e175433b3b63c7031b02eb3846c091821d 100644 +index 0c08a07d3d1efa35646dbaa5cc887bf9d62cae42..3e69f176eee01b7e093a90f5f3c19009c0a22fa7 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -429,6 +429,23 @@ public class Explosion { diff --git a/patches/server/0292-Improve-output-of-plugins-command.patch b/patches/server/0295-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0292-Improve-output-of-plugins-command.patch rename to patches/server/0295-Improve-output-of-plugins-command.patch diff --git a/patches/server/0293-Add-mending-multiplier.patch b/patches/server/0296-Add-mending-multiplier.patch similarity index 96% rename from patches/server/0293-Add-mending-multiplier.patch rename to patches/server/0296-Add-mending-multiplier.patch index 747ffa0df..b41257e2d 100644 --- a/patches/server/0293-Add-mending-multiplier.patch +++ b/patches/server/0296-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index a3ef8e6a698df4c78e0494da48063ddd29caf62f..1b8f5680c4122c7b6b19e2bc1ed6295c public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db47c443a765a87d2cabde2d3956909661d65237..93f350d5059e9385f4ba344cd24be8ca4d3198e9 100644 +index ec46c926e6df9101322df22853d03eba05b48896..2c9c5f8e432f076559bdb88e4485399ff74c8cd5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0294-Make-GUI-Great-Again.patch b/patches/server/0297-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0294-Make-GUI-Great-Again.patch rename to patches/server/0297-Make-GUI-Great-Again.patch index d314a536c..54766f26f 100644 --- a/patches/server/0294-Make-GUI-Great-Again.patch +++ b/patches/server/0297-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 0d3d62620659d7897d4ad92147255a99a4a1866d..2e70ac06c1a6414d9fbbc7a929968e804f0a91f5 100644 +index d56fab50babe37865d0a40b7088b011c8ff6af88..d21260dd1b7305949f063123b427dec1f5a00ae5 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0295-Stored-Bee-API.patch b/patches/server/0298-Stored-Bee-API.patch similarity index 100% rename from patches/server/0295-Stored-Bee-API.patch rename to patches/server/0298-Stored-Bee-API.patch diff --git a/patches/server/0296-Shears-can-defuse-TNT.patch b/patches/server/0299-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0296-Shears-can-defuse-TNT.patch rename to patches/server/0299-Shears-can-defuse-TNT.patch diff --git a/patches/server/0297-Explorer-Map-API.patch b/patches/server/0300-Explorer-Map-API.patch similarity index 100% rename from patches/server/0297-Explorer-Map-API.patch rename to patches/server/0300-Explorer-Map-API.patch diff --git a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0301-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0301-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0303-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 97% rename from patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0303-Add-option-for-always-showing-item-in-player-death-m.patch index da162e380..7adfc3c2b 100644 --- a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0303-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,7 +31,7 @@ index fc1fb63ee0e28b8d1f065bfad716b465cde5a69f..c8860f20956a2819da001e9393824945 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f10679ef2cbd73397b64eb69516c8a46e4d35a4e..3633574e112f217b412217dd243a631dc4e9c40c 100644 +index 3eba2f3df5723d068ff62c78243e39b8f4e3f853..e9fc2b4661f5275b93db5d3fdf25a8bdc3b38920 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -647,4 +647,9 @@ public class PurpurConfig { diff --git a/patches/server/0301-place-end-crystal-on-any-block.patch b/patches/server/0304-place-end-crystal-on-any-block.patch similarity index 96% rename from patches/server/0301-place-end-crystal-on-any-block.patch rename to patches/server/0304-place-end-crystal-on-any-block.patch index 09834b69a..96733c1dc 100644 --- a/patches/server/0301-place-end-crystal-on-any-block.patch +++ b/patches/server/0304-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9463316a3 100644 +index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { diff --git a/patches/server/0302-Add-hover-lines-API.patch b/patches/server/0305-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0302-Add-hover-lines-API.patch rename to patches/server/0305-Add-hover-lines-API.patch diff --git a/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 96% rename from patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch index 8a75a040a..0174a203c 100644 --- a/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,7 +18,7 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96f6186ca9eb1889beefd7b54addc42052f8907a..d24664bc4d373804e373266a189eb6de1e0b261d 100644 +index fb7bdaa64002729f9f9cd0fbbd2ae289643628b4..bbf371428e343cfad0ae118c387fd2342541fe53 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { From 04ee5e7c2831439b9816fb8cc00afff591b2c66c Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 29 Dec 2023 04:40:59 -0800 Subject: [PATCH 032/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4fdda9e Keep newlines in outdated client/server message (#10042) PaperMC/Paper@f483b38 fix NPE on EntityTeleportEvent getTo (#10016) PaperMC/Paper@dc62150 Catch async usage of playsound (#10021) PaperMC/Paper@0d6a0c3 Fix command block async message (again) (#10082) PaperMC/Paper@d1f507f Don't fire 2 game events for certain cauldron interactions (#8904) PaperMC/Paper@a401585 Fix campfire recipes not always outputting full result (#8754) PaperMC/Paper@88d28d6 Fix long loading screen when refreshing skins (#10026) PaperMC/Paper@c081104 Add experience points api (#9688) PaperMC/Paper@8221b08 Fix global sound event gamerule not being respected (#8727) PaperMC/Paper@3c0d6aa Updated Upstream (Bukkit/CraftBukkit/Spigot) (#10085) PaperMC/Paper@2c3ccb8 Add drops to shear events (#5678) PaperMC/Paper@b2ffb1b Add PlayerShieldDisableEvent (#9177) PaperMC/Paper@2951732 Add HiddenPotionEffect API (#9910) PaperMC/Paper@e4ab50d Properly disallow async Player#chat (#8123) PaperMC/Paper@5e978d3 Fix Folia scheduler tasks not canceling when plugin disable (#10091) --- gradle.properties | 2 +- patches/api/0005-Purpur-client-support.patch | 4 +- .../api/0008-Allow-inventory-resizing.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- .../0013-LivingEntity-safeFallDistance.patch | 4 +- ...0020-LivingEntity-broadcastItemBreak.patch | 4 +- ...030-API-for-any-mob-to-burn-daylight.patch | 4 +- patches/api/0037-Potion-NamespacedKey.patch | 120 ++++++------ patches/api/0044-Debug-Marker-API.patch | 4 +- patches/api/0045-Add-death-screen-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 16 +- .../server/0005-Purpur-client-support.patch | 4 +- .../0007-Component-related-conveniences.patch | 4 +- patches/server/0008-Ridables.patch | 68 +++---- ...-Configurable-entity-base-attributes.patch | 16 +- .../0010-Barrels-and-enderchests-6-rows.patch | 8 +- patches/server/0012-AFK-API.patch | 32 +-- .../server/0013-Bring-back-server-name.patch | 4 +- patches/server/0016-Lagging-threshold.patch | 4 +- ...cow-rotation-when-shearing-mooshroom.patch | 4 +- ...37-Snowman-drop-and-put-back-pumpkin.patch | 24 ++- .../0045-Add-permission-for-F3-N-debug.patch | 4 +- ...Add-player-death-exp-control-options.patch | 4 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- .../0071-Allow-color-codes-in-books.patch | 10 +- patches/server/0072-Entity-lifespan.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 4 +- .../server/0119-PlayerBookTooLargeEvent.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 12 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 8 +- .../server/0132-Dont-run-with-scissors.patch | 6 +- ...173-API-for-any-mob-to-burn-daylight.patch | 8 +- ...after-eating-food-fills-hunger-bar-c.patch | 4 +- .../0194-Player-ridable-in-water-option.patch | 4 +- .../0208-Extended-OfflinePlayer-API.patch | 4 +- ...t-right-click-to-use-exp-for-mending.patch | 4 +- .../server/0226-Potion-NamespacedKey.patch | 64 +++--- ...aring-jeb-produces-random-color-wool.patch | 20 +- ...rable-valid-characters-for-usernames.patch | 4 +- ...-Shears-can-have-looting-enchantment.patch | 184 +++++++++--------- ...o-disable-kick-for-out-of-order-chat.patch | 4 +- .../0261-Add-local-difficulty-api.patch | 4 +- patches/server/0265-Remove-Timings.patch | 18 +- ...er-output-for-invalid-movement-kicks.patch | 6 +- patches/server/0269-Debug-Marker-API.patch | 10 +- .../server/0273-Add-death-screen-API.patch | 4 +- ...0276-Add-item-packet-serialize-event.patch | 4 +- 47 files changed, 377 insertions(+), 371 deletions(-) diff --git a/gradle.properties b/gradle.properties index 196dbdad1..f19229b44 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = c215ce185861af0fd123a91a79ad8907d9a7951a +paperCommit = 5e978d3a3d2c8068ea152ea5a38938f1f8c15d94 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index aea0fd5cd..26b2dc2f7 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c09f423fe2a029c933bd2697c8ff104fc4230cf0..0246fdcb873c50cf15581899b951ecb23b51d226 100644 +index ae61a39b25267b84fe0b8766e4b12d9b24b44ded..515f1d5d6a5674e5667d61651f27ca6bb6823ad5 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3535,4 +3535,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3574,4 +3574,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0008-Allow-inventory-resizing.patch b/patches/api/0008-Allow-inventory-resizing.patch index d61613396..6d4b1cf47 100644 --- a/patches/api/0008-Allow-inventory-resizing.patch +++ b/patches/api/0008-Allow-inventory-resizing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow inventory resizing diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java -index 64e59fe706b0bb37fc2439fa88fd40c3167c9fb5..333ba8a730d01b6baa980f34aa03f3db90c8f255 100644 +index daa1306a7324d946d66ad5a674bbc84371d8d4d6..f3b2d7b6fda051211add2b3215f120fb6911aeed 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryType.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java -@@ -159,7 +159,7 @@ public enum InventoryType { +@@ -165,7 +165,7 @@ public enum InventoryType { SMITHING_NEW(4, "Upgrade Gear"), ; diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 800f35d1a..0626fd91c 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 0246fdcb873c50cf15581899b951ecb23b51d226..8749e76035350908bbf2d8debd28ea5a2eb2d7ac 100644 +index 515f1d5d6a5674e5667d61651f27ca6bb6823ad5..65dfe7600a7aa7e7cc30915f04f39fde2afba688 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3543,5 +3543,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3582,5 +3582,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index 4dc0137f2..a373249ab 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index e68c71047b2bc1b456c380db25b3ff376852b4a9..ddcfa6a4f678801bb09716c0c7bcc06e37add26d 100644 +index 47b0154928b3d36e2602da202df07defbcf82108..d34ef2581a7f51eb484994253e3307b7952751cc 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1270,4 +1270,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1276,4 +1276,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0020-LivingEntity-broadcastItemBreak.patch b/patches/api/0020-LivingEntity-broadcastItemBreak.patch index 2aee7393b..9cf9f9daf 100644 --- a/patches/api/0020-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0020-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index ddcfa6a4f678801bb09716c0c7bcc06e37add26d..880b2b045e34eb52a2efcaea4ac4bdfade4c353a 100644 +index d34ef2581a7f51eb484994253e3307b7952751cc..11493047fd7bbceed1b566bf0aae8790e4291601 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1285,5 +1285,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1291,5 +1291,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch index 8042a33b2..f0d81eede 100644 --- a/patches/api/0030-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0030-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 566c74756c66db859a4f738a7716a61d012c6df1..c20f29e1ddfd1d73df19f6d6f730fa23 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 880b2b045e34eb52a2efcaea4ac4bdfade4c353a..6b025794c34e1b4b47b4b5ae1375705bdedad078 100644 +index 11493047fd7bbceed1b566bf0aae8790e4291601..7498179f6df47008c4da6ad6d67b2ce16f49e7a6 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1292,5 +1292,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1298,5 +1298,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0037-Potion-NamespacedKey.patch b/patches/api/0037-Potion-NamespacedKey.patch index 0f9acc882..b26f1772c 100644 --- a/patches/api/0037-Potion-NamespacedKey.patch +++ b/patches/api/0037-Potion-NamespacedKey.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/org/bukkit/potion/PotionEffect.java b/src/main/java/org/bukkit/potion/PotionEffect.java -index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf235eba7e89 100644 +index c8ab330ef171795d08fa201cf8320703c7f1c66b..93e2ea220dc03c122f82af65d5e9fda5b582290c 100644 --- a/src/main/java/org/bukkit/potion/PotionEffect.java +++ b/src/main/java/org/bukkit/potion/PotionEffect.java -@@ -32,12 +32,14 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -33,6 +33,7 @@ public class PotionEffect implements ConfigurationSerializable { private static final String AMBIENT = "ambient"; private static final String PARTICLES = "has-particles"; private static final String ICON = "has-icon"; @@ -16,34 +16,46 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 private final int amplifier; private final int duration; private final PotionEffectType type; - private final boolean ambient; +@@ -40,6 +41,7 @@ public class PotionEffect implements ConfigurationSerializable { private final boolean particles; private final boolean icon; + private final PotionEffect hiddenEffect; // Paper + @Nullable private final NamespacedKey key; // Purpur /** * Creates a potion effect. -@@ -50,6 +52,36 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -50,11 +52,12 @@ public class PotionEffect implements ConfigurationSerializable { + * @param ambient the ambient status, see {@link PotionEffect#isAmbient()} + * @param particles the particle status, see {@link PotionEffect#hasParticles()} + * @param icon the icon status, see {@link PotionEffect#hasIcon()} ++ * @param key the namespacedKey, see {@link PotionEffect#getKey()} + * @param hiddenEffect the hidden PotionEffect + * @hidden Internal-- hidden effects are only shown internally + */ + @org.jetbrains.annotations.ApiStatus.Internal // Paper +- public PotionEffect(@NotNull PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, boolean icon, @Nullable PotionEffect hiddenEffect) { // Paper ++ public PotionEffect(@NotNull PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, boolean icon, @Nullable PotionEffect hiddenEffect, @Nullable NamespacedKey key) { // Paper // Purpur + Preconditions.checkArgument(type != null, "effect type cannot be null"); + this.type = type; + this.duration = duration; +@@ -62,6 +65,7 @@ public class PotionEffect implements ConfigurationSerializable { + this.ambient = ambient; + this.particles = particles; + this.icon = icon; ++ this.key = key; // Purpur + // Paper start + this.hiddenEffect = hiddenEffect; + } +@@ -77,10 +81,27 @@ public class PotionEffect implements ConfigurationSerializable { * @param icon the icon status, see {@link PotionEffect#hasIcon()} */ public PotionEffect(@NotNull PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, boolean icon) { -+ // Purpur start -+ this(type, duration, amplifier, ambient, particles, icon, null); -+ } -+ -+ /** -+ * Create a potion effect. -+ * @param duration measured in ticks, see {@link -+ * PotionEffect#getDuration()} -+ * @param amplifier the amplifier, see {@link PotionEffect#getAmplifier()} -+ * @param ambient the ambient status, see {@link PotionEffect#isAmbient()} -+ * @param particles the particle status, see {@link PotionEffect#hasParticles()} -+ * @param key the namespacedKey, see {@link PotionEffect#getKey()} -+ */ -+ public PotionEffect(@NotNull PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, @Nullable NamespacedKey key) { -+ this(type, duration, amplifier, ambient, particles, particles, key); -+ } -+ +- this(type, duration, amplifier, ambient, particles, icon, null); ++ this(type, duration, amplifier, ambient, particles, icon, null, null); // Purpur + // Paper end + } + ++ // Purpur start + /** + * Creates a potion effect. + * @param type effect type @@ -56,24 +68,19 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 + * @param key the namespacedKey, see {@link PotionEffect#getKey()} + */ + public PotionEffect(@NotNull PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, boolean icon, @Nullable NamespacedKey key) { -+ // Purpur end - Preconditions.checkArgument(type != null, "effect type cannot be null"); - this.type = type; - this.duration = duration; -@@ -57,6 +89,7 @@ public class PotionEffect implements ConfigurationSerializable { - this.ambient = ambient; - this.particles = particles; - this.icon = icon; -+ this.key = key; // Purpur - add key - } - ++ this(type, duration, amplifier, ambient, particles, icon, null, key); ++ } ++ // Purpur end ++ /** -@@ -104,36 +137,43 @@ public class PotionEffect implements ConfigurationSerializable { + * Creates a potion effect with no defined color. + * +@@ -126,33 +147,33 @@ public class PotionEffect implements ConfigurationSerializable { * @param map the map to deserialize from */ public PotionEffect(@NotNull Map map) { -- this(getEffectType(map), getInt(map, DURATION), getInt(map, AMPLIFIER), getBool(map, AMBIENT, false), getBool(map, PARTICLES, true), getBool(map, ICON, getBool(map, PARTICLES, true))); -+ this(getEffectType(map), getInt(map, DURATION), getInt(map, AMPLIFIER), getBool(map, AMBIENT, false), getBool(map, PARTICLES, true), getBool(map, ICON, getBool(map, PARTICLES, true)), getKey(map)); // Purpur - getKey +- this(getEffectType(map), getInt(map, DURATION), getInt(map, AMPLIFIER), getBool(map, AMBIENT, false), getBool(map, PARTICLES, true), getBool(map, ICON, getBool(map, PARTICLES, true)), (PotionEffect) map.get(HIDDEN_EFFECT)); // Paper ++ this(getEffectType(map), getInt(map, DURATION), getInt(map, AMPLIFIER), getBool(map, AMBIENT, false), getBool(map, PARTICLES, true), getBool(map, ICON, getBool(map, PARTICLES, true)), (PotionEffect) map.get(HIDDEN_EFFECT), getKey(map)); // Paper // Purpur - getKey } // Paper start @@ -107,6 +114,10 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 - return new PotionEffect(this.type, duration, amplifier, ambient, particles, icon); + return new PotionEffect(this.type, duration, amplifier, ambient, particles, icon, key); // Purpur - add key } + + /** +@@ -169,6 +190,13 @@ public class PotionEffect implements ConfigurationSerializable { + } // Paper end + // Purpur start @@ -119,7 +130,7 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 @NotNull private static PotionEffectType getEffectType(@NotNull Map map) { PotionEffectType effect; -@@ -166,17 +206,33 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -201,6 +229,17 @@ public class PotionEffect implements ConfigurationSerializable { return def; } @@ -137,35 +148,28 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 @Override @NotNull public Map serialize() { -- return ImmutableMap.builder() -+ // Purpur start - add key, don't serialize if null. -+ ImmutableMap.Builder builder = ImmutableMap.builder() - .put(TYPE, type.getKey().toString()) - .put(DURATION, duration) - .put(AMPLIFIER, amplifier) - .put(AMBIENT, ambient) - .put(PARTICLES, particles) -- .put(ICON, icon) -- .build(); -+ .put(ICON, icon); -+ if(key != null) { +@@ -215,6 +254,11 @@ public class PotionEffect implements ConfigurationSerializable { + if (this.hiddenEffect != null) { + builder.put(HIDDEN_EFFECT, this.hiddenEffect); + } ++ // Purpur start ++ if (key != null) { + builder.put(KEY, key.toString()); + } -+ return builder.build(); + // Purpur end + return builder.build(); + // Paper end } - - /** -@@ -200,7 +256,7 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -243,7 +287,7 @@ public class PotionEffect implements ConfigurationSerializable { return false; } PotionEffect that = (PotionEffect) obj; -- return this.type.equals(that.type) && this.ambient == that.ambient && this.amplifier == that.amplifier && this.duration == that.duration && this.particles == that.particles && this.icon == that.icon; -+ return this.type.equals(that.type) && this.ambient == that.ambient && this.amplifier == that.amplifier && this.duration == that.duration && this.particles == that.particles && this.icon == that.icon && this.key == that.key; // Purpur - add key +- return this.type.equals(that.type) && this.ambient == that.ambient && this.amplifier == that.amplifier && this.duration == that.duration && this.particles == that.particles && this.icon == that.icon && java.util.Objects.equals(this.hiddenEffect, that.hiddenEffect); // Paper ++ return this.type.equals(that.type) && this.ambient == that.ambient && this.amplifier == that.amplifier && this.duration == that.duration && this.particles == that.particles && this.icon == that.icon && java.util.Objects.equals(this.hiddenEffect, that.hiddenEffect) && this.key == that.key; // Paper // Purpur - add key } /** -@@ -296,6 +352,24 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -339,6 +383,24 @@ public class PotionEffect implements ConfigurationSerializable { return icon; } @@ -190,11 +194,11 @@ index 037af5fd6d71a526c0e6620f2db0cd6df9625261..939ed1931492854c5854cab06730cf23 @Override public int hashCode() { int hash = 1; -@@ -310,6 +384,6 @@ public class PotionEffect implements ConfigurationSerializable { +@@ -354,6 +416,6 @@ public class PotionEffect implements ConfigurationSerializable { @Override public String toString() { -- return type.getName() + (ambient ? ":(" : ":") + duration + "t-x" + amplifier + (ambient ? ")" : ""); -+ return type.getName() + (ambient ? ":(" : ":") + duration + "t-x" + amplifier + (ambient ? ")" : "") + (hasKey() ? "(" + key + ")" : ""); // Purpur - add key if not null +- return "PotionEffect{" + "amplifier=" + amplifier + ", duration=" + duration + ", type=" + type + ", ambient=" + ambient + ", particles=" + particles + ", icon=" + icon + ", hiddenEffect=" + hiddenEffect + '}'; // Paper ++ return "PotionEffect{" + "amplifier=" + amplifier + ", duration=" + duration + ", type=" + type + ", ambient=" + ambient + ", particles=" + particles + ", icon=" + icon + ", hiddenEffect=" + hiddenEffect + ", key=" + key + '}'; // Paper // Purpur - add key } } diff --git a/patches/api/0044-Debug-Marker-API.patch b/patches/api/0044-Debug-Marker-API.patch index 009c3eec7..a47cb9d19 100644 --- a/patches/api/0044-Debug-Marker-API.patch +++ b/patches/api/0044-Debug-Marker-API.patch @@ -260,10 +260,10 @@ index 1173081896ca95ab001175ddf6e269ab5e791896..e4f0d5ee85371374453b837947c7f84c /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 8749e76035350908bbf2d8debd28ea5a2eb2d7ac..ac9f3b74a2c0d2fadb52cc3f3e11d635f9088cf8 100644 +index 65dfe7600a7aa7e7cc30915f04f39fde2afba688..73415adcdd161b3b3b79be14967f805df2733030 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3563,5 +3563,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3602,5 +3602,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0045-Add-death-screen-API.patch b/patches/api/0045-Add-death-screen-API.patch index fa384e401..9ebeb1ee0 100644 --- a/patches/api/0045-Add-death-screen-API.patch +++ b/patches/api/0045-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index ac9f3b74a2c0d2fadb52cc3f3e11d635f9088cf8..ee76f84c8e341e4939ed0082a6ed889b701533cb 100644 +index 73415adcdd161b3b3b79be14967f805df2733030..3aa79be25d63f704170baaf799482ccdde6a2830 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3633,5 +3633,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3672,5 +3672,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 41289052f..82c19092e 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1718,7 +1718,7 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b78a9628a88f2a495ef6de74446a02a14d41a1f6..66cbea2fd146bdabf1241dae72bd76dc256afe45 100644 +index 6041f1f5151f26d389f946d70f16e1de76db496b..4a802588f58bdea30b58521cbc4f0d76743f732e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -895,6 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1774,10 +1774,10 @@ index b78a9628a88f2a495ef6de74446a02a14d41a1f6..66cbea2fd146bdabf1241dae72bd76dc if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 30ccbab1586a656e0ae41d7406525fb02d9e025b..20cd751a602593740e87eb79d5059b5fc7856cb5 100644 +index 64255f7db85886421d5029766e8a6d1eadb94cff..ce4c0a721c148ffb3c91d6a59189925aa7a1d766 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1124,6 +1124,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1122,6 +1122,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -2057,7 +2057,7 @@ index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..a63399eedb896c06e96c7fba5cac7102 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 96885946be3b8e129984353f3dfe4330e73ad84a..88f736e67107d34514eec231070f42d2ee008e5c 100644 +index bc908b75cb99536df658281ae7f8b4eeedbbedc9..0a9a77564d624d66e76637eef509e2f321333dc6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2119,7 +2119,7 @@ index 96885946be3b8e129984353f3dfe4330e73ad84a..88f736e67107d34514eec231070f42d2 if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 5af48151159135b869ec4753bbcf79dd257c1570..1d65d8b3e21373b0f0d2c633742da52d6b208942 100644 +index e0cf7771488ab0065708d68b4e8550b865af0ed4..6df13ebec8fbb11eb6e2b7469f9e4ebb44256894 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -221,14 +221,16 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -2374,7 +2374,7 @@ index 111a244087e24f25ba8524a46a228da10cd9498a..ff12ba2b79cb2e7e0bfd0e3b58ff6cb9 this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); 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 c9a4feb4a52c0eb621b120e5b8c18d0a74dae0cd..256598e058db1fd34d36390e45ab9903768343cb 100644 +index c59e44c45d9c8c719b34e85fb3b753ac3788842d..2732ecac901d99ba44132faeddda194bf06e0193 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 @@ -150,6 +150,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -2680,7 +2680,7 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f8e519684d02dff0e26734eb89eca54ae1d9b1ee..3fb317e5df780abb7fa8c3d78717306cad2bc650 100644 +index 8848eeda7a89d445e370626182f9bb4710e5edd4..2e14e03d01c97b9da97e8e15c663262d22b1b3fc 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -213,6 +213,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -3253,7 +3253,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e011cfcdda2e0a609d4158b0454bdf046b04c9d9..6550d4ea03b5b56159b19e297f03b0b141c59c62 100644 +index 142d2c48239d4ebe3896218536656d116cd24d7c..36c68a6e2bc49b5192fb4d27f174b520e59430c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index 2fb3a5bfb..eb297dda7 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -43,10 +43,10 @@ index d28d0ef6105ddeb562ddf31ae9088739856941fc..49aaa5147b9b904fa912c1811dc66d47 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c54df6e4aed9b7b46a41af4108a8e90d96c1fe1f..3bf86f27beada77d0abf6b91a8fc51e19cc3d787 100644 +index 2ec8b8f65661001716d1cb34dcc21cda7286e5d7..83457c97f8c182ca63311f4a0186e1f95adfbdbb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3326,4 +3326,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3367,4 +3367,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index fe14a57ff..97e319742 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -36,10 +36,10 @@ index 393edc13408ed8b3aad36121891eddf75ea321ff..ae9dfb2719ff2372e3a73adc2163330d public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a35638a92479b90afa89cf201fc45b49c9e767f3..9a7b5c2bae8e3c1788068462d2f60665a8064a77 100644 +index e98a455b6bca9d094d0da323bddd7b3f2c07bb23..05131b298048de6418cfa103d883039b55740dfa 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1058,6 +1058,20 @@ public abstract class PlayerList { +@@ -1064,6 +1064,20 @@ public abstract class PlayerList { } // CraftBukkit end diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 0af4dcca0..c878bf80d 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index 6e8d7a22e9301704fd8d3e08e806b186f2578038..2dd32f61efa12689b08a54f30deac397 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5493e7e8ec1de5bb52ee7bd145e436fdb03e59b6..53131fc1fc02df8f60f0a44dd8c3a5a53e24fddb 100644 +index 53e00bb94fd6af9197422218aa92acde897f1aa9..9ded11bdbaf98948a1451e15a237f8423c8cc36d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -225,6 +225,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -66,10 +66,10 @@ index ae9dfb2719ff2372e3a73adc2163330db886dfbe..f709667d2efab5f7dac22bb6e4b0bf32 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 20cd751a602593740e87eb79d5059b5fc7856cb5..44b8b9dfc9182a6ce0d01b003749946e90e3aedb 100644 +index ce4c0a721c148ffb3c91d6a59189925aa7a1d766..741b108b2c6ed243c8f4e9124a31a3005e0ce594 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2715,6 +2715,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -190,7 +190,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 88f736e67107d34514eec231070f42d2ee008e5c..bab5a6c1bcff734620ccb015f071d73b70bbc901 100644 +index 0a9a77564d624d66e76637eef509e2f321333dc6..5e64293b7392e5a4b19a4c7303b0365d48f90115 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -268,7 +268,7 @@ index 88f736e67107d34514eec231070f42d2ee008e5c..bab5a6c1bcff734620ccb015f071d73b // Paper end if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1d65d8b3e21373b0f0d2c633742da52d6b208942..05eecaf3147051c44f9c4abce178c3126385c825 100644 +index 6df13ebec8fbb11eb6e2b7469f9e4ebb44256894..62eba7fc2fd013bf17496896c2b7a88c95c070f1 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -148,8 +148,8 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -291,7 +291,7 @@ index 1d65d8b3e21373b0f0d2c633742da52d6b208942..05eecaf3147051c44f9c4abce178c312 } public boolean isWithinRestriction() { -@@ -1775,4 +1775,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1779,4 +1779,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -1251,7 +1251,7 @@ index f383928fc5b331ddf128bdcb6a23010d8fe088d3..6815d7350a82c6d32f60aa6116466ebd float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index e42b0b19019ef74733fd19b08f882cccff920142..fdd99d6a9db230f9f68b0a78f41a16e7658c4c16 100644 +index a7e8b544d7b05efe95182a03cabaf1993da9d839..0e871753024ae39538ed056d27fff98e6bdf8ae0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -63,6 +63,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder> optional = this.getEffectsFromItemStack(itemstack); if (optional.isEmpty()) { @@ -1817,7 +1817,7 @@ index 0af79daa357f53a8871e293b57e16c099e5d3f64..87c442fb198cad8671ad1419e589a5a6 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 55afa58f3df53ce548c7484d8fff62c903f9dc07..80b91cdaffc0af25b9a8b13281519cf093928e85 100644 +index 1d80678f7e8f658e43616f0baf723f096a99122a..ffcb68cd299370d5a17ed92ba3814c8afe613cf9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -119,10 +119,28 @@ public class Sheep extends Animal implements Shearable { @@ -1850,7 +1850,7 @@ index 55afa58f3df53ce548c7484d8fff62c903f9dc07..80b91cdaffc0af25b9a8b13281519cf0 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 8adcfc8f6772a32b5915e4a07100e8eb735f907a..04927f5f06d6dc14ad01319dd22583632c2c511b 100644 +index b5d6857eaf2bed14adcb5f5e80d91b44eb8b0dcc..bc57978d89db43e97a38ea56c3541e8f6318c2d2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1893,16 +1893,16 @@ index 8adcfc8f6772a32b5915e4a07100e8eb735f907a..04927f5f06d6dc14ad01319dd2258363 BlockState iblockdata = Blocks.SNOW.defaultBlockState(); for (int i = 0; i < 4; ++i) { -@@ -154,7 +174,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { - // CraftBukkit start - if (!CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand)) { -- return InteractionResult.PASS; -+ return tryRide(player, hand); // Purpur +@@ -158,7 +178,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); + if (event != null) { + if (event.isCancelled()) { +- return InteractionResult.PASS; ++ return tryRide(player, hand); // Purpur + } + drops = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getDrops()); } - // CraftBukkit end - this.shear(SoundSource.PLAYERS); -@@ -167,7 +187,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -174,7 +194,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return InteractionResult.sidedSuccess(this.level().isClientSide); } else { @@ -2781,7 +2781,7 @@ index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f56bb431be7d5f1a1b8edec41af1f3a28289316d..152111ff4c29e6cf13afeba8c9707f407c2b3531 100644 +index e5b4aaa9e08dbafa46c92e3fce8b2ee9b0167530..b5b8a4fa5b9a016a38053326cc4ba9d665f467ee 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2935,7 +2935,7 @@ index f56bb431be7d5f1a1b8edec41af1f3a28289316d..152111ff4c29e6cf13afeba8c9707f40 this.dragonFight.updateDragon(this); } 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 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258ce0f4b46 100644 +index 2732ecac901d99ba44132faeddda194bf06e0193..926850c0b0c36c3e5601ddaeb86176b07af1cb07 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 @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -3101,7 +3101,7 @@ index 256598e058db1fd34d36390e45ab9903768343cb..e03a01940eb5a5d7a3924a5ad1214258 int i; if (this.getInvulnerableTicks() > 0) { -@@ -583,11 +707,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -584,11 +708,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -4140,7 +4140,7 @@ index 0c11d9bef8f0129c541e30ad057612e881703b24..cfa324c6a75ac83cff4ba87034677d4e this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 06ab07fb5d8d0e2f97325890218a11fef551a0ba..7112789a74f90297277fc6175c912cac60c2ca01 100644 +index b73dac8f68041f8a2e0752d70cc9d08b5cfd1cde..e78d869069bc018f29c5fbc6a7811806c4b2fb2f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -97,12 +97,31 @@ public class Shulker extends AbstractGolem implements VariantHolder -1) { -@@ -393,6 +407,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -392,6 +406,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits. @@ -115,16 +115,16 @@ index 44b8b9dfc9182a6ce0d01b003749946e90e3aedb..57fb7dc5bb61f4433c6569c8d4665676 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -641,6 +661,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -642,6 +662,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); + if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur + - // Skip the first time we do this - if (true) { // Spigot - don't skip any move events - Location oldTo = to.clone(); -@@ -1495,7 +1517,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + Location oldTo = to.clone(); + PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); + this.cserver.getPluginManager().callEvent(event); +@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { flag2 = true; // Paper - diff on change, this should be moved wrongly if (event.getLogWarning()) @@ -133,15 +133,15 @@ index 44b8b9dfc9182a6ce0d01b003749946e90e3aedb..57fb7dc5bb61f4433c6569c8d4665676 } // Paper end } -@@ -1557,6 +1579,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1564,6 +1586,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); + if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur + - // Skip the first time we do this - if (from.getX() != Double.MAX_VALUE) { - Location oldTo = to.clone(); + Location oldTo = to.clone(); + PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); + this.cserver.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2f95548c0 100644 --- a/src/main/java/net/minecraft/server/players/SleepStatus.java @@ -192,7 +192,7 @@ index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 4495a3e7ea8f307cade39e42ac2aebf85a832537..0e69d0f1599d3b0e704b654dc296465b56cde2fb 100644 +index 0ef84c64cef519e40d2d611b290f098b14fe31c9..27d5b180d0b9acd883726c07b5507e09509c6ba1 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -189,6 +189,13 @@ public abstract class Player extends LivingEntity { @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3bf86f27beada77d0abf6b91a8fc51e19cc3d787..5f8b485ed8e0444c8c7e2a438cb65113d35bec68 100644 +index 83457c97f8c182ca63311f4a0186e1f95adfbdbb..45b4cf1af463a0600edd53b4390a6e3938f5eaf8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index 3bf86f27beada77d0abf6b91a8fc51e19cc3d787..5f8b485ed8e0444c8c7e2a438cb65113 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3332,5 +3337,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3373,5 +3378,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index c5b93a6cb..e9cca1e7c 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 1643186bcb2caf5d29fd551afd35830726dbb80a..d53e0b67d847dfec2f4b118b5ca3f0ed public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index eb6b2727d43ca991ef99a88413de95c1546b7696..95ecdbc0d06d4ca7afb1be62d25a09cda33a236b 100644 +index c6b3233e5b20143bd0566115c13fb34f46913858..f807973f6a074709fa5cba96e50e6505d61f4c23 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3249,4 +3249,11 @@ public final class CraftServer implements Server { +@@ -3253,4 +3253,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 6becde628..8d6823b79 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -25,10 +25,10 @@ index c19d456168d36c1c2ea7823f47b25644798a97c7..9c176d77420ffe0acdb57b333602c5e2 } else curTime = Util.getNanos(); // Paper // Spigot end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 95ecdbc0d06d4ca7afb1be62d25a09cda33a236b..69670bf1c4713b70fb731ba43b8d5aea7922393b 100644 +index f807973f6a074709fa5cba96e50e6505d61f4c23..e8dda762e3d1c95bbda35e855b16ae4022769eae 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3255,5 +3255,10 @@ public final class CraftServer implements Server { +@@ -3259,5 +3259,10 @@ public final class CraftServer implements Server { public String getServerName() { return this.getProperties().serverName; } diff --git a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch index be9d94125..63e3c904e 100644 --- a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index a2f77d030856056409f2d888e80818eeb6a46ee6..f27ca76b153dc33d20dc46a57f1dda4e91e82883 100644 +index 557592aa5799dca43c778ef7a0d3b98619b90b90..c58b3ff4e7e5dba4543a77c2c4d9bad3911fba98 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -198,7 +198,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder generateDefaultDrops() { ++ // Purpur start ++ if (!level().purpurConfig.snowGolemDropsPumpkin) { ++ return Shearable.super.generateDefaultDrops(0); ++ } ++ // Purpur end + return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 05b7788d168cadb594613d81cbff0726a63d81d2..a48dbad212789f90525e669ea81b1042c53cd06a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0045-Add-permission-for-F3-N-debug.patch b/patches/server/0045-Add-permission-for-F3-N-debug.patch index 7c16f3361..f0e3f4163 100644 --- a/patches/server/0045-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0045-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index accce07f973962899696336c541403b6e5afb18a..e46fcb5c8bf1047e3f330fd525166aee5f0b646b 100644 +index 04ac541f71bac6c8d26a92b61fd25574a49bbc1c..0ced4627e0374d7e9fcbff256505b190021efd3f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1175,6 +1175,7 @@ public abstract class PlayerList { +@@ -1181,6 +1181,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/server/0053-Add-player-death-exp-control-options.patch b/patches/server/0053-Add-player-death-exp-control-options.patch index 28c0a675f..40580a6ef 100644 --- a/patches/server/0053-Add-player-death-exp-control-options.patch +++ b/patches/server/0053-Add-player-death-exp-control-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 0e69d0f1599d3b0e704b654dc296465b56cde2fb..fad32d590828fe2f9acec80c76a452c1fd7f4005 100644 +index 27d5b180d0b9acd883726c07b5507e09509c6ba1..783f3fa87c2142a6e220dd4e199040b671954b15 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1919,9 +1919,19 @@ public abstract class Player extends LivingEntity { +@@ -1935,9 +1935,19 @@ public abstract class Player extends LivingEntity { @Override public int getExperienceReward() { if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { diff --git a/patches/server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0070-Add-allow-water-in-end-world-option.patch index 9330c428f..5b9a40f61 100644 --- a/patches/server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0070-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index aa0f09a18ea781e027ea70928b30d3e93061120f..5cb8f1e13f4889792395d6b498c0ade2 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 b13b0be860df85af973c36f0ef10bfe09aa0aaf9..93f6dc91b1ea9191941933aac42b8e4ddb1f028d 100644 +index ea437adbb8a96c27fb2dd5de8c4ccda3489eddd0..faff675121dd1d0064376e0281bb357f78119097 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1897,4 +1897,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1909,4 +1909,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } // Paper end - notify observers even if grow failed diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/server/0071-Allow-color-codes-in-books.patch index 56f02154f..8b22c1ece 100644 --- a/patches/server/0071-Allow-color-codes-in-books.patch +++ b/patches/server/0071-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 57fb7dc5bb61f4433c6569c8d46656762dcc0cc1..166943d26c1123d07080cb1d0e0f081cfff06246 100644 +index 66a41a3ecb284ed99a36ea0acb423dc0cde11893..486336073afb4dcc486fbc2c69c887e2443a7058 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1234,13 +1234,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1232,13 +1232,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 57fb7dc5bb61f4433c6569c8d46656762dcc0cc1..166943d26c1123d07080cb1d0e0f081c this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1252,10 +1255,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1250,10 +1253,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 57fb7dc5bb61f4433c6569c8d46656762dcc0cc1..166943d26c1123d07080cb1d0e0f081c Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1265,11 +1271,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1263,11 +1269,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 57fb7dc5bb61f4433c6569c8d46656762dcc0cc1..166943d26c1123d07080cb1d0e0f081c } } -@@ -1282,6 +1288,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1280,6 +1286,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index bfc4acf23..ac9908e5d 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-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 166943d26c1123d07080cb1d0e0f081cfff06246..18c614881388610fb78bd5101c54ffbb3c753e55 100644 +index 486336073afb4dcc486fbc2c69c887e2443a7058..6c7ad991ad5ec65570707fb6489714d59df6540c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2742,6 +2742,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2749,6 +2749,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { @@ -17,7 +17,7 @@ index 166943d26c1123d07080cb1d0e0f081cfff06246..18c614881388610fb78bd5101c54ffbb 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 a05a7cf2c28b62011a3477c5155a05a93ecab548..906f3ed7883cd220734a92a5f032ec89674f5b97 100644 +index d2a40f97fe018c34aba8900460f4daa05b023c9c..f8bb0b40017b4c8b0f499620f088fa0a13c90904 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch index 4f63bad7b..a91f56f2e 100644 --- a/patches/server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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 8ae399d7e0ff706b0486f198b16dadfe8b5ca32a..84bd2cf1797f68eadbd0a21f2cfb6ce85710d928 100644 +index 29957114850eb897b54997dcad0753e0c895ce6e..93cf322ea4943fea127dc89eed900a2ca21b096c 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 -@@ -525,8 +525,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -526,8 +526,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0119-PlayerBookTooLargeEvent.patch index 57cd51d69..8a17b212a 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0119-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 18c614881388610fb78bd5101c54ffbb3c753e55..935d8b9f81d243716f340b0a16f6f99bc0bf88a8 100644 +index 6c7ad991ad5ec65570707fb6489714d59df6540c..6bc15456b036e2429f7433e74fae5ba86481608b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1154,10 +1154,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1152,10 +1152,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -24,7 +24,7 @@ index 18c614881388610fb78bd5101c54ffbb3c753e55..935d8b9f81d243716f340b0a16f6f99b server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1181,6 +1186,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1179,6 +1184,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index 800b3923f..772cfc41f 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1ff77c524464a256913b063bf621b850255885ba..b0071e7f3b540569364a53bc6c5c022d2ea8a7cf 100644 +index b3930bf7f9d93203907d6b39e29dfea06087b8d1..43bbc2f776048f006ad5f7a80e83ae2e46baa939 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1807,7 +1807,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -18,7 +18,7 @@ index 1ff77c524464a256913b063bf621b850255885ba..b0071e7f3b540569364a53bc6c5c022d BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index f04fd84be60d5fc866aa6bf0b711c7e34c5c6369..7de69da2c723f1ad4a2e62e792a49cbc47202977 100644 +index 1f57de58a38946763e5160e59e4157957aadafb1..1cec1afb15755e15f5d59d562cdf8d3281973062 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -118,7 +118,7 @@ index c25776ef9805f3f4e31ca5b027e6577526e48819..86502ef70f2213191d1348ef98969c5c } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4efd206fb 100644 +index f59fac2fd4e6fe710f6afa622bc86f912986f14a..55c85dbafb2278c8e247492537faec4fd77c9ec6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -131,7 +131,7 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index cfe7086b0259eefcd221a54529c111f7eb1adc38..5381ee91770a0f1012b5478d6615540263e46533 100644 +index 21599595ccd33ab57bceaabb3c27d257cb0ba598..f5dfcf2aefebf9faabd962d6f331de88ae26eb26 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -604,7 +604,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -144,10 +144,10 @@ index cfe7086b0259eefcd221a54529c111f7eb1adc38..5381ee91770a0f1012b5478d66155402 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 84bd2cf1797f68eadbd0a21f2cfb6ce85710d928..bd4658651ba8bccdc5b8a7d59e70e527942615dd 100644 +index 93cf322ea4943fea127dc89eed900a2ca21b096c..5e61463f5d25b42165813df43c30246dff8a4a7e 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; diff --git a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 733c95e29..c974974f4 100644 --- a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 5643f35f02fff5a2d4072d246f8646772695b797..dc7804371b65c43367ec87e79433106e8a11a6ff 100644 +index df8baf2059cdfed3f0c43496fba843b8b6819281..aa10cd2e0ee7b0d421c223de390e671d401f87fc 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -1188,6 +1188,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1189,6 +1189,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -17,10 +17,10 @@ index 5643f35f02fff5a2d4072d246f8646772695b797..dc7804371b65c43367ec87e79433106e } 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 aea64f97be2430e92cb45d43e1b50c0e32eebdf9..81084ec809a2c4602d92f3736fab4eeaf80e6fa4 100644 +index 73930b4eea2bd632c390b79118ecafad84cfa44a..ac7e54e2bfc1ca41fd8082c453c1f99fa89e77c2 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 -@@ -738,6 +738,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -739,6 +739,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected boolean canRide(Entity entity) { diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index edc1fdcf6..31eda921e 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 935d8b9f81d243716f340b0a16f6f99bc0bf88a8..78dcf97e46b6888d25cc685bc4216f02b4b079da 100644 +index 6bc15456b036e2429f7433e74fae5ba86481608b..bf50d67e39ae66e789748c28aefb87c29f819747 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1641,6 +1641,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1645,6 +1645,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 935d8b9f81d243716f340b0a16f6f99bc0bf88a8..78dcf97e46b6888d25cc685bc4216f02 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1692,6 +1699,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1696,6 +1703,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index 4498f49ec..f23ba5cfd 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -32,7 +32,7 @@ index 7ecc956aa2907090c9b0c9dcaf674330bb18f3d3..9552fbbb3bebe5adc2361f4abb676bfa return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 879ddc26235e9361afe55fffb5ca64cb63dfe552..09c24ff6dd0c8bdabc25e69101f229b982822ca5 100644 +index bd58b25fb38db9ecfc4cc0ce844e7e0afd05bd2b..e4e06d9bb23d1b68f5c268511bac1c1d905a297e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -262,6 +262,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -92,10 +92,10 @@ index 879ddc26235e9361afe55fffb5ca64cb63dfe552..09c24ff6dd0c8bdabc25e69101f229b9 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7de69da2c723f1ad4a2e62e792a49cbc47202977..31f1a485fc3e8d40f7181a5f8af4f56d9c25e2fc 100644 +index 1cec1afb15755e15f5d59d562cdf8d3281973062..4328b688b8ef5d44d4ca5501e090c943e8d598b3 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1754,17 +1754,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1758,17 +1758,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { @@ -353,7 +353,7 @@ index 52a576a16bfeb7dc6ec97280f9a5e0f408d71e46..9b1ae2fa1681f1212b6a09d5b10b1663 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 98d2ef7870c921093a9dbaf0f4de77d86ef81d44..bfd8f6d85272f3ecbb0f7fc5fc92d2055205c0e0 100644 +index 001b9d5aef4c2d9fb272dd187d0d0bd001de5693..ea5ac1f53309fdd30aad40fd4a092f297d76fd61 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 1c17ff019..28c7ae943 100644 --- a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 1380a9962d1a9706b5137af8843f0e3fa082b533..5631240aed1c032faeb291358e40180f8aa40e49 100644 +index f05a2c6d71af599da07cd08bb16f14ebd46dc7ee..5a05e16bfff41dbae6f887a457259a22101c4ee8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -184,6 +184,7 @@ public abstract class Player extends LivingEntity { @@ -30,7 +30,7 @@ index 1380a9962d1a9706b5137af8843f0e3fa082b533..5631240aed1c032faeb291358e40180f this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2297,7 +2304,7 @@ public abstract class Player extends LivingEntity { +@@ -2313,7 +2320,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); diff --git a/patches/server/0194-Player-ridable-in-water-option.patch b/patches/server/0194-Player-ridable-in-water-option.patch index 90ea43991..b7c8194ca 100644 --- a/patches/server/0194-Player-ridable-in-water-option.patch +++ b/patches/server/0194-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 952bf54a96f3ee84059f13c5821af2cfafa05c60..fd67cefb971b394042c0fdd845c20cf55d8efc2f 100644 +index f262fc2069895b302073c09a58412b9e980e6660..dca769857dbf045bf2184f7761e9a09933858b51 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2025,6 +2025,11 @@ public abstract class Player extends LivingEntity { +@@ -2041,6 +2041,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } diff --git a/patches/server/0208-Extended-OfflinePlayer-API.patch b/patches/server/0208-Extended-OfflinePlayer-API.patch index 11c86cd4c..a8eee6223 100644 --- a/patches/server/0208-Extended-OfflinePlayer-API.patch +++ b/patches/server/0208-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index df8f06c898155955fed05c0b41b8ce14b13ec920..55d07278e635f9934418ac5c4e679e99b0b5dbd1 100644 +index cf57e41f23bb6bbdaee201966d70fce49df95ceb..e7886daefcb5f4890b86b5f6962b40b1bbcb5183 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2599,6 +2599,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2640,6 +2640,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch index 953b93d02..3a6a084f1 100644 --- a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 5de06447de2ab2c45debf314aecd39722d4a7af6..3a50342ff3e8b9685b5595bf78c05bfe + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 78dcf97e46b6888d25cc685bc4216f02b4b079da..92e10daff379ed5a3b9cff6d3ab12bd96ab62da1 100644 +index bf50d67e39ae66e789748c28aefb87c29f819747..13dadd9824a75cd26053aeb93cc95f5bba0622a5 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2055,6 +2055,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0226-Potion-NamespacedKey.patch b/patches/server/0226-Potion-NamespacedKey.patch index 202b49163..a78e2657b 100644 --- a/patches/server/0226-Potion-NamespacedKey.patch +++ b/patches/server/0226-Potion-NamespacedKey.patch @@ -5,31 +5,23 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6c5b7ed91 100644 +index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591e630e3e7 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -@@ -16,6 +16,7 @@ import net.minecraft.util.ExtraCodecs; - import net.minecraft.util.Mth; - import net.minecraft.world.entity.LivingEntity; - import org.slf4j.Logger; -+import org.bukkit.NamespacedKey; - - public class MobEffectInstance implements Comparable { - private static final Logger LOGGER = LogUtils.getLogger(); -@@ -35,6 +36,7 @@ public class MobEffectInstance implements Comparable { - private boolean visible; +@@ -36,6 +36,7 @@ public class MobEffectInstance implements Comparable { private boolean showIcon; @Nullable -+ private NamespacedKey key; // Purpur - add key - private MobEffectInstance hiddenEffect; + public MobEffectInstance hiddenEffect; ++ private org.bukkit.NamespacedKey key; // Purpur - add key private final Optional factorData; -@@ -54,17 +56,36 @@ public class MobEffectInstance implements Comparable { + public MobEffectInstance(MobEffect type) { +@@ -54,17 +55,36 @@ public class MobEffectInstance implements Comparable { this(type, duration, amplifier, ambient, visible, visible); } + // Purpur start -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean visible, @Nullable NamespacedKey key) { ++ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean visible, @Nullable org.bukkit.NamespacedKey key) { + this(type, duration, amplifier, ambient, visible, visible, key); + } + // Purpur end @@ -37,20 +29,20 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { - this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData()); + // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), (NamespacedKey)null); ++ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), (org.bukkit.NamespacedKey)null); + } + -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable NamespacedKey key) { ++ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { + this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), key); + // Purpur end } public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData) { + // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, hiddenEffect, factorCalculationData, (NamespacedKey) null); ++ this(type, duration, amplifier, ambient, showParticles, showIcon, hiddenEffect, factorCalculationData, (org.bukkit.NamespacedKey) null); + } + -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData, @Nullable NamespacedKey key) { ++ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData, @Nullable org.bukkit.NamespacedKey key) { + // Purpur end this.effect = type; this.duration = duration; @@ -62,7 +54,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 this.hiddenEffect = hiddenEffect; this.factorData = factorCalculationData; } -@@ -85,6 +106,7 @@ public class MobEffectInstance implements Comparable { +@@ -85,6 +105,7 @@ public class MobEffectInstance implements Comparable { this.ambient = that.ambient; this.visible = that.visible; this.showIcon = that.showIcon; @@ -70,7 +62,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 } public boolean update(MobEffectInstance that) { -@@ -129,6 +151,13 @@ public class MobEffectInstance implements Comparable { +@@ -129,6 +150,13 @@ public class MobEffectInstance implements Comparable { bl = true; } @@ -84,7 +76,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 return bl; } -@@ -172,6 +201,17 @@ public class MobEffectInstance implements Comparable { +@@ -172,6 +200,17 @@ public class MobEffectInstance implements Comparable { return this.showIcon; } @@ -94,7 +86,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 + } + + @Nullable -+ public NamespacedKey getKey() { ++ public org.bukkit.NamespacedKey getKey() { + return this.key; + } + // Purpur end @@ -102,7 +94,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 public boolean tick(LivingEntity entity, Runnable overwriteCallback) { if (this.hasRemainingDuration()) { int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; -@@ -232,6 +272,12 @@ public class MobEffectInstance implements Comparable { +@@ -232,6 +271,12 @@ public class MobEffectInstance implements Comparable { string = string + ", Show Icon: false"; } @@ -115,7 +107,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 return string; } -@@ -247,7 +293,7 @@ public class MobEffectInstance implements Comparable { +@@ -247,7 +292,7 @@ public class MobEffectInstance implements Comparable { return false; } else { MobEffectInstance mobEffectInstance = (MobEffectInstance)object; @@ -124,7 +116,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 } } -@@ -272,6 +318,11 @@ public class MobEffectInstance implements Comparable { +@@ -272,6 +317,11 @@ public class MobEffectInstance implements Comparable { nbt.putBoolean("ambient", this.isAmbient()); nbt.putBoolean("show_particles", this.isVisible()); nbt.putBoolean("show_icon", this.showIcon()); @@ -136,21 +128,21 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 if (this.hiddenEffect != null) { CompoundTag compoundTag = new CompoundTag(); this.hiddenEffect.save(compoundTag); -@@ -306,6 +357,13 @@ public class MobEffectInstance implements Comparable { +@@ -306,6 +356,13 @@ public class MobEffectInstance implements Comparable { bl3 = nbt.getBoolean("show_icon"); } + // Purpur start -+ NamespacedKey key = null; ++ org.bukkit.NamespacedKey key = null; + if (nbt.contains("key")) { -+ key = NamespacedKey.fromString(nbt.getString("key")); ++ key = org.bukkit.NamespacedKey.fromString(nbt.getString("key")); + } + // Purpur end + MobEffectInstance mobEffectInstance = null; if (nbt.contains("hidden_effect", 10)) { mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect")); -@@ -318,7 +376,7 @@ public class MobEffectInstance implements Comparable { +@@ -318,7 +375,7 @@ public class MobEffectInstance implements Comparable { optional = Optional.empty(); } @@ -208,24 +200,24 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445 } this.customEffects.set(index, effect); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index 844fb8c662a409670f631228f687d85c5436d3dd..2bfa5908f1848702ceb42da7576a609d0928eddd 100644 +index e938255fcc5db0c289d3e132175a541187e4a748..f7a747ea73a80c97d863e0fd3772a0c333aef3c8 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -@@ -73,7 +73,7 @@ public class CraftPotionUtil { - +@@ -74,7 +74,7 @@ public class CraftPotionUtil { public static MobEffectInstance fromBukkit(PotionEffect effect) { MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); + // Paper - Note: do not copy over the hidden effect, as this method is only used for applying to entities which we do not want to convert over. - return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()); // Paper + return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()); // Paper // Purpur - add key } public static PotionEffect toBukkit(MobEffectInstance effect) { -@@ -82,7 +82,7 @@ public class CraftPotionUtil { +@@ -83,7 +83,7 @@ public class CraftPotionUtil { int duration = effect.getDuration(); boolean ambient = effect.isAmbient(); boolean particles = effect.isVisible(); -- return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon()); // Paper -+ return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.getKey()); // Paper // Purpur - add key +- return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.hiddenEffect == null ? null : toBukkit(effect.hiddenEffect)); // Paper ++ return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.hiddenEffect == null ? null : toBukkit(effect.hiddenEffect), effect.getKey()); // Paper // Purpur - add key } public static boolean equals(MobEffect mobEffect, PotionEffectType type) { diff --git a/patches/server/0229-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0229-Shearing-jeb-produces-random-color-wool.patch index 065d5ab55..f47593677 100644 --- a/patches/server/0229-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0229-Shearing-jeb-produces-random-color-wool.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Shearing jeb produces random color wool 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 f2d0c67709e38209a8a02e98f4392b9e0a53c211..fb477c3c594bb81e92ae0c606635c309840d0dc5 100644 +index ae2662a5cdc4e531e09876ff8664eaf66a63a960..4d28cb60f8fa816205699a66a7667358e13c6a01 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -317,7 +317,7 @@ public class Sheep extends Animal implements Shearable { - - for (int j = 0; j < i; ++j) { - this.forceDrops = true; // CraftBukkit -- ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.getColor()), 1); -+ ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()), 1); // Purpur - this.forceDrops = false; // CraftBukkit - - if (entityitem != null) { +@@ -327,7 +327,7 @@ public class Sheep extends Animal implements Shearable { + int count = 1 + this.random.nextInt(3); + java.util.List dropEntities = new java.util.ArrayList<>(count); + for (int j = 0; j < count; ++j) { +- dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); ++ dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()))); + } + return dropEntities; + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 476545737acdb0da8e5f5def12164c7f83cbaa80..375d1deef92f935d8f32166e3a17a84370ad1dcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0232-Configurable-valid-characters-for-usernames.patch b/patches/server/0232-Configurable-valid-characters-for-usernames.patch index 9625e8b9c..e323fbdc9 100644 --- a/patches/server/0232-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0232-Configurable-valid-characters-for-usernames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index fd67cefb971b394042c0fdd845c20cf55d8efc2f..fab644c79287a444fd58c43547beba3e06e9e7ff 100644 +index dca769857dbf045bf2184f7761e9a09933858b51..db3afaf25b1991a257bd2d5036527f4cb00c5040 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2404,6 +2404,7 @@ public abstract class Player extends LivingEntity { +@@ -2420,6 +2420,7 @@ public abstract class Player extends LivingEntity { } public static boolean isValidUsername(String name) { diff --git a/patches/server/0233-Shears-can-have-looting-enchantment.patch b/patches/server/0233-Shears-can-have-looting-enchantment.patch index b6a180596..51cbd9812 100644 --- a/patches/server/0233-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0233-Shears-can-have-looting-enchantment.patch @@ -5,122 +5,128 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index e17090003988ad2c890d48666c2234b14d511345..433f1f11b8b92c7d48352416f79ab5a394c33287 100644 +index ec43e8294d7e7112478a2fc1475f0852690a4882..2f1bd058543af6a7a0b3d94ab0fc9627b4e0da49 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -@@ -107,7 +107,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { +@@ -104,7 +104,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { + if (ishearable.readyForShearing()) { + // CraftBukkit start + // Paper start +- org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops()); ++ org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, CraftItemStack.asNMSCopy(craftItem)))); + if (event.isCancelled()) { + // Paper end continue; - } - // CraftBukkit end -- ishearable.shear(SoundSource.BLOCKS); -+ ishearable.shear(SoundSource.BLOCKS, net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, CraftItemStack.asNMSCopy(craftItem))); // Purpur - worldserver.gameEvent((Entity) null, GameEvent.SHEAR, blockposition); - return true; - } diff --git a/src/main/java/net/minecraft/world/entity/Shearable.java b/src/main/java/net/minecraft/world/entity/Shearable.java -index 5e8cc5cfac8888628c6d513148f41be09ca65a2c..a089fc61ec09be6b7490375489178dc6ba5a644b 100644 +index 4921d1b2ff9112374477c5c9b4a68cc75a51dbf8..40716d46a2d9c1b3b13e92995e6441d83bdd2396 100644 --- a/src/main/java/net/minecraft/world/entity/Shearable.java +++ b/src/main/java/net/minecraft/world/entity/Shearable.java -@@ -3,7 +3,13 @@ package net.minecraft.world.entity; - import net.minecraft.sounds.SoundSource; - - public interface Shearable { -- void shear(SoundSource shearedSoundCategory); -+ // Purpur start -+ default void shear(SoundSource shearedSoundCategory) { -+ shear(shearedSoundCategory, 0); -+ } -+ -+ void shear(SoundSource shearedSoundCategory, int looting); -+ // Purpur end +@@ -8,7 +8,7 @@ public interface Shearable { boolean readyForShearing(); - } + // Paper start - ensure all implementing entities override this +- default java.util.List generateDefaultDrops() { ++ default java.util.List generateDefaultDrops(int looting) { + return java.util.Collections.emptyList(); + } + // Paper end diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index c49d25eae4b9d2cdd15022b32947a94364ea2791..6ce116dc3173d17b19c4c03fe9cf494dd022f0d5 100644 +index 5d75e715a2edac73350cd74e2a5184e7fccbad53..9ac87800d1d15ae3431caaf4e86d4fe10e105972 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -163,7 +163,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { -@@ -203,7 +203,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder drops = this.generateDefaultDrops(); ++ List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); + org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); + if (event != null) { + if (event.isCancelled()) { +@@ -212,13 +212,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder generateDefaultDrops() { ++ public List generateDefaultDrops(int looting) { // Purpur + List dropEntities = new java.util.ArrayList<>(5); +- for (int i = 0; i < 5; ++i) { ++ for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { + dropEntities.add(new ItemStack(this.getVariant().getBlockState().getBlock())); + } + return dropEntities; 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 fb477c3c594bb81e92ae0c606635c309840d0dc5..8502fc1331c2e94992ab39e4e7ea0f36e83b06a5 100644 +index 4d28cb60f8fa816205699a66a7667358e13c6a01..e2f29a1bf72e4a8785397318f159aae8059ac4ed 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -295,7 +295,7 @@ public class Sheep extends Animal implements Shearable { - return InteractionResult.PASS; - } - // CraftBukkit end -- this.shear(SoundSource.PLAYERS); -+ this.shear(SoundSource.PLAYERS, net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur - this.gameEvent(GameEvent.SHEAR, player); - itemstack.hurtAndBreak(1, player, (entityhuman1) -> { - entityhuman1.broadcastBreakEvent(hand); -@@ -310,10 +310,11 @@ public class Sheep extends Animal implements Shearable { +@@ -292,7 +292,7 @@ public class Sheep extends Animal implements Shearable { + if (!this.level().isClientSide && this.readyForShearing()) { + // CraftBukkit start + // Paper start - custom shear drops +- java.util.List drops = this.generateDefaultDrops(); ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); + org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); + if (event != null) { + if (event.isCancelled()) { +@@ -319,12 +319,13 @@ public class Sheep extends Animal implements Shearable { + @Override + public void shear(SoundSource shearedSoundCategory) { + // Paper start - custom shear drops +- this.shear(shearedSoundCategory, this.generateDefaultDrops()); ++ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); } @Override -- public void shear(SoundSource shearedSoundCategory) { -+ public void shear(SoundSource shearedSoundCategory, int looting) { // Purpur - this.level().playSound((Player) null, (Entity) this, SoundEvents.SHEEP_SHEAR, shearedSoundCategory, 1.0F, 1.0F); - this.setSheared(true); - int i = 1 + this.random.nextInt(3); -+ if (org.purpurmc.purpur.PurpurConfig.allowShearsLooting) i += looting; // Purpur - - for (int j = 0; j < i; ++j) { - this.forceDrops = true; // CraftBukkit +- public java.util.List generateDefaultDrops() { ++ public java.util.List generateDefaultDrops(int looting) { + int count = 1 + this.random.nextInt(3); ++ if (org.purpurmc.purpur.PurpurConfig.allowShearsLooting) count += looting; // Purpur + java.util.List dropEntities = new java.util.ArrayList<>(count); + for (int j = 0; j < count; ++j) { + dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()))); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index fc8526af7e1df15794b4560b58e7f6a47508aa08..8b364fe9f3a3d47ae6daa331b8f16941ca17432a 100644 +index 8a0327a870a22def6538bb56df2f2fd384449928..58e101a3963be08c21e6d8c80731d45c0883be8d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -199,7 +199,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - return tryRide(player, hand); // Purpur - } - // CraftBukkit end -- this.shear(SoundSource.PLAYERS); -+ this.shear(SoundSource.PLAYERS, net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur - this.gameEvent(GameEvent.SHEAR, player); - if (!this.level().isClientSide) { - itemstack.hurtAndBreak(1, player, (entityhuman1) -> { -@@ -222,12 +222,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -196,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { + // CraftBukkit start + // Paper start - custom shear drops +- java.util.List drops = this.generateDefaultDrops(); ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); + org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); + if (event != null) { + if (event.isCancelled()) { +@@ -231,15 +231,22 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + @Override + public void shear(SoundSource shearedSoundCategory) { + // Paper start - custom shear drops +- this.shear(shearedSoundCategory, this.generateDefaultDrops()); ++ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); } @Override -- public void shear(SoundSource shearedSoundCategory) { -+ public void shear(SoundSource shearedSoundCategory, int looting) { // Purpur - this.level().playSound((Player) null, (Entity) this, SoundEvents.SNOW_GOLEM_SHEAR, shearedSoundCategory, 1.0F, 1.0F); - if (!this.level().isClientSide()) { - this.setPumpkin(false); - this.forceDrops = true; // CraftBukkit - if (level().purpurConfig.snowGolemDropsPumpkin) // Purpur -+ for (int i = 0; i < 1 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); i++) // Purpur - this.spawnAtLocation(new ItemStack(Items.CARVED_PUMPKIN), 1.7F); - this.forceDrops = false; // CraftBukkit +- public java.util.List generateDefaultDrops() { ++ public java.util.List generateDefaultDrops(int looting) { // Purpur + // Purpur start + if (!level().purpurConfig.snowGolemDropsPumpkin) { + return Shearable.super.generateDefaultDrops(0); } ++ if (org.purpurmc.purpur.PurpurConfig.allowShearsLooting) { ++ java.util.ArrayList list = new java.util.ArrayList<>(); ++ for (int i = 0; i < 1 + looting; i++) { ++ list.add(new ItemStack(Items.CARVED_PUMPKIN)); ++ } ++ return java.util.Collections.unmodifiableList(list); ++ } + // Purpur end + return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); + } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java index 859435f747ceef860cb4e9e825a7353ea3b90798..fc2c35f57436371cb0111aedfd289ac95d506d07 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java diff --git a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch index b7a0bd06d..df92aafe0 100644 --- a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 92e10daff379ed5a3b9cff6d3ab12bd96ab62da1..c3c5e08f76ea0c23261ae1235ca9a3948b7a1885 100644 +index 13dadd9824a75cd26053aeb93cc95f5bba0622a5..22298bc61205b2da0a13a97144704d0dd1d33260 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1720,7 +1720,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { diff --git a/patches/server/0261-Add-local-difficulty-api.patch b/patches/server/0261-Add-local-difficulty-api.patch index a2e4a93f3..cd45c4752 100644 --- a/patches/server/0261-Add-local-difficulty-api.patch +++ b/patches/server/0261-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 03eab4e7c2648c722c25387ec9353e8dafc09618..96017efa7ab5b43bdd851ce1e78566306254d4a0 100644 +index 38d842bc0fb7d9c39a3673983a643248e9563fe2..8af705619e8a784c6128d7ff4838eeae56e59821 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2408,6 +2408,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2415,6 +2415,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0265-Remove-Timings.patch b/patches/server/0265-Remove-Timings.patch index 2cff90962..a40dd5ca2 100644 --- a/patches/server/0265-Remove-Timings.patch +++ b/patches/server/0265-Remove-Timings.patch @@ -447,7 +447,7 @@ index 5cf74fe0214191d42e74fc104eba150a95894e0f..9f438b41b61ee1174d8f23bcb7d93380 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9121c5371b083d07d6b488e1a49d24a91ecccba0..1d8d1c4499c901f2675ef9a0e6f9dcb851217680 100644 +index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab5382437dc0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -867,7 +867,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -630,10 +630,10 @@ index 9121c5371b083d07d6b488e1a49d24a91ecccba0..1d8d1c4499c901f2675ef9a0e6f9dcb8 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c3c5e08f76ea0c23261ae1235ca9a3948b7a1885..95d5995d967f8a0a06aaaf81d6af7ae9ac83c731 100644 +index 22298bc61205b2da0a13a97144704d0dd1d33260..56f110d08fa24b26792f55b2ea062249b0f9643d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2453,7 +2453,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2460,7 +2460,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -642,7 +642,7 @@ index c3c5e08f76ea0c23261ae1235ca9a3948b7a1885..95d5995d967f8a0a06aaaf81d6af7ae9 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2463,7 +2463,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2470,7 +2470,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -651,7 +651,7 @@ index c3c5e08f76ea0c23261ae1235ca9a3948b7a1885..95d5995d967f8a0a06aaaf81d6af7ae9 return; } -@@ -2476,7 +2476,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2483,7 +2483,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -661,10 +661,10 @@ index c3c5e08f76ea0c23261ae1235ca9a3948b7a1885..95d5995d967f8a0a06aaaf81d6af7ae9 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0d75ccbf6c5cacd9ce2355d4dca2b1290a8da39f..2e3a43b92fb86e55a75a557663bc465e604c4156 100644 +index 26d32b49103d5d463267c3ae3b08ebc625b38ab3..a52f0b7d76dc71d176d960fc4f67f0683127112e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1268,7 +1268,7 @@ public abstract class PlayerList { +@@ -1274,7 +1274,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -673,7 +673,7 @@ index 0d75ccbf6c5cacd9ce2355d4dca2b1290a8da39f..2e3a43b92fb86e55a75a557663bc465e int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1279,7 +1279,7 @@ public abstract class PlayerList { +@@ -1285,7 +1285,7 @@ public abstract class PlayerList { } // Paper end } @@ -732,7 +732,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d4da05d29545a4a40f4b6489aa22813d580874c4..5777e5e31b1a7a7911c183db990f16fe7fc9b9ef 100644 +index f47a00bbe6d9cfa15fc3a55a8953934ac12ca85f..54ceb622d9588ccd8df3cba849571aa3fdbb364a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1313,15 +1313,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch index cbda6ee93..b24eb19d0 100644 --- a/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 95d5995d967f8a0a06aaaf81d6af7ae9ac83c731..f0b53dc99d21962cbed9a2a1d43be9622735aa57 100644 +index 56f110d08fa24b26792f55b2ea062249b0f9643d..ba3548498044bbfd8e73967ac3dcec9b8d0a3b88 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -739,6 +739,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -737,6 +737,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause @@ -16,7 +16,7 @@ index 95d5995d967f8a0a06aaaf81d6af7ae9ac83c731..f0b53dc99d21962cbed9a2a1d43be962 return; } -@@ -1353,8 +1354,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1351,8 +1352,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0269-Debug-Marker-API.patch b/patches/server/0269-Debug-Marker-API.patch index a4faa9185..a0b4c462c 100644 --- a/patches/server/0269-Debug-Marker-API.patch +++ b/patches/server/0269-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index cca5519dd1b19e86372222d052c5ca2b992bfff8..e4f0b1a5b2165610c533f9a661341e5c46ffb63e 100644 +index 866d49ef3de9e9629b00b3dc0515ab089ab47908..067164b3698bcb89ae2f8d09cb7009108a999670 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1584,6 +1584,42 @@ public final class CraftServer implements Server { @@ -52,10 +52,10 @@ index cca5519dd1b19e86372222d052c5ca2b992bfff8..e4f0b1a5b2165610c533f9a661341e5c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 96017efa7ab5b43bdd851ce1e78566306254d4a0..7321a8dfc59ccb1ae0b7e2d1ce23cb1a5cfbe029 100644 +index 8af705619e8a784c6128d7ff4838eeae56e59821..f6c6cd92e1eff044abefa6ca74477d361f4434ec 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2412,6 +2412,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2419,6 +2419,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 96017efa7ab5b43bdd851ce1e78566306254d4a0..7321a8dfc59ccb1ae0b7e2d1ce23cb1a @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 55d07278e635f9934418ac5c4e679e99b0b5dbd1..0081992c78ad800c7caeb402e90d6e93d3a2d28e 100644 +index e7886daefcb5f4890b86b5f6962b40b1bbcb5183..dc2b7450775a2ffadedb07b166410cb42ddacc16 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3378,5 +3378,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3419,5 +3419,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0273-Add-death-screen-API.patch b/patches/server/0273-Add-death-screen-API.patch index 7e6369b13..26aaad371 100644 --- a/patches/server/0273-Add-death-screen-API.patch +++ b/patches/server/0273-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0081992c78ad800c7caeb402e90d6e93d3a2d28e..df4f39d38f1ff4a5e499e227d93d98f531a01419 100644 +index dc2b7450775a2ffadedb07b166410cb42ddacc16..ff4317fd21a62bd85e0b3ecc7ff0c1f5e74e4df5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3416,5 +3416,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3457,5 +3457,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0276-Add-item-packet-serialize-event.patch b/patches/server/0276-Add-item-packet-serialize-event.patch index c87c7dfee..ad237b51d 100644 --- a/patches/server/0276-Add-item-packet-serialize-event.patch +++ b/patches/server/0276-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index b563b1d4129cf3fb15f5ab4e08acfd380d0ddf12..f69976dcba060027c67c2e1b49fa28d3 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f0b53dc99d21962cbed9a2a1d43be9622735aa57..eaf2cb361f5d700bea07986edd387d7fad1d27e2 100644 +index ba3548498044bbfd8e73967ac3dcec9b8d0a3b88..819906c465debe02192084968bf3d17d69cdd8c8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3373,6 +3373,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3380,6 +3380,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } From c049bfbd5322407434027477cdc6191e45dab6c2 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 29 Dec 2023 23:36:48 -0800 Subject: [PATCH 033/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e56e53f Fix some component bugs in login disconnect packet (#10090) PaperMC/Paper@3484ae9 Call entity_die game event after event cancel check (#10096) PaperMC/Paper@0ae58c0 cleanup player death event adventure logic (#10095) --- gradle.properties | 2 +- .../0007-Component-related-conveniences.patch | 4 ++-- patches/server/0012-AFK-API.patch | 4 ++-- ...040-Minecart-settings-and-WASD-controls.patch | 4 ++-- ...-teleport-to-spawn-if-outside-world-bor.patch | 6 +++--- .../0108-Add-boat-fall-damage-config.patch | 4 ++-- patches/server/0117-Implement-TPSBar.patch | 6 +++--- patches/server/0127-Fix-stuck-in-portals.patch | 4 ++-- ...fig-to-ignore-nearby-mobs-when-sleeping.patch | 4 ++-- .../0161-Configurable-broadcast-settings.patch | 4 ++-- ...ustomizable-sleeping-actionbar-messages.patch | 6 +++--- patches/server/0196-Add-compass-command.patch | 4 ++-- .../server/0223-Signs-allow-color-codes.patch | 4 ++-- patches/server/0266-Remove-Mojang-Profiler.patch | 16 ++++++++-------- .../0275-Implement-ram-and-rambar-commands.patch | 4 ++-- .../0276-Add-item-packet-serialize-event.patch | 4 ++-- 16 files changed, 40 insertions(+), 40 deletions(-) diff --git a/gradle.properties b/gradle.properties index f19229b44..8a8cb335a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 5e978d3a3d2c8068ea152ea5a38938f1f8c15d94 +paperCommit = 0ae58c09a15ee1ad307a2b8ef7e8ad735d336651 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 97e319742..ff21b79ee 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 393edc13408ed8b3aad36121891eddf75ea321ff..ae9dfb2719ff2372e3a73adc2163330db886dfbe 100644 +index 95240bee8f76fd651166ecabe80885ac6601c34e..257675e0f3d44dec2d532161713609502b2ae868 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1883,6 +1883,26 @@ public class ServerPlayer extends Player { +@@ -1884,6 +1884,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 68154b749..eb563d9b0 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f709667d2efab5f7dac22bb6e4b0bf32917f71e4..387e2423d820e4df1d226ce6159a361d6a808fd9 100644 +index a3b4ed70b7d7012a72d5997c04821871d029d18b..e20f86d9167929e463b0e179db7e22e72fa6a1b3 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2233,8 +2233,68 @@ public class ServerPlayer extends Player { +@@ -2234,8 +2234,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); diff --git a/patches/server/0040-Minecart-settings-and-WASD-controls.patch b/patches/server/0040-Minecart-settings-and-WASD-controls.patch index cccdbf951..d3b4fa832 100644 --- a/patches/server/0040-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0040-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 387e2423d820e4df1d226ce6159a361d6a808fd9..e2e25a4ac86156f0915a0b9886a6f62b2812920b 100644 +index e20f86d9167929e463b0e179db7e22e72fa6a1b3..5156368507e56ec423a04e02e3cdcd8de502bc18 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1111,6 +1111,7 @@ public class ServerPlayer extends Player { +@@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 260e98fd4..fb74fb3dc 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-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 e2e25a4ac86156f0915a0b9886a6f62b2812920b..47cc6799f0d48debe4b63280a6814eadf9aecb7d 100644 +index 5156368507e56ec423a04e02e3cdcd8de502bc18..fd48f333747ec79083adea4053e643d93efca714 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2847,4 +2847,26 @@ public class ServerPlayer extends Player { +@@ -2848,4 +2848,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index e2e25a4ac86156f0915a0b9886a6f62b2812920b..47cc6799f0d48debe4b63280a6814ead + // 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 57ffb039cf27117ec1ec1c822f9693a8ef03f6b7..f3d882c889fc6eab2ced0efd0f17404ca6905a5d 100644 +index aac03f78f88ff0b7ace9694093d4fbc649cd0cd5..e10a96335d9534a7c0a17d20d6563bf3e157f494 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -426,6 +426,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0108-Add-boat-fall-damage-config.patch b/patches/server/0108-Add-boat-fall-damage-config.patch index 36ecd720c..921c35c1e 100644 --- a/patches/server/0108-Add-boat-fall-damage-config.patch +++ b/patches/server/0108-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 47cc6799f0d48debe4b63280a6814eadf9aecb7d..82a551caa75fbd50d75a5109cf7e897e829acf19 100644 +index fd48f333747ec79083adea4053e643d93efca714..ea37e30846c496f92ceab7cee0cb19ffd82cfc0a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1111,7 +1111,16 @@ public class ServerPlayer extends Player { +@@ -1112,7 +1112,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index 5215c5c12..7ef88c6dc 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index 5ebe7e5c4f12ccb8a91a1e6a0f029d0f54b09e15..68d607dfed0130f1003951b4ac56d91b } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 82a551caa75fbd50d75a5109cf7e897e829acf19..448394f5ff2d55b099549b49b77114483f0e58bd 100644 +index ea37e30846c496f92ceab7cee0cb19ffd82cfc0a..e7b654c1991348a7f73ca8bc950d776e4e708779 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -282,6 +282,7 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 82a551caa75fbd50d75a5109cf7e897e829acf19..448394f5ff2d55b099549b49b7711448 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2877,5 +2880,13 @@ public class ServerPlayer extends Player { +@@ -2878,5 +2881,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -83,7 +83,7 @@ index 82a551caa75fbd50d75a5109cf7e897e829acf19..448394f5ff2d55b099549b49b7711448 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e46fcb5c8bf1047e3f330fd525166aee5f0b646b..61a34f3e49b21254984011bc470d72c86d55dba1 100644 +index 0ced4627e0374d7e9fcbff256505b190021efd3f..3b5102017258339cda813e105dd2141b067b9f5d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -486,6 +486,7 @@ public abstract class PlayerList { diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index e376d7c68..0143f85fd 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 448394f5ff2d55b099549b49b77114483f0e58bd..f2c388370be9765c15982f522a13cb21ad0f3f1d 100644 +index e7b654c1991348a7f73ca8bc950d776e4e708779..487e4ab76e255e10369f7968d73d41956e99ae66 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1270,6 +1270,7 @@ public class ServerPlayer extends Player { +@@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); diff --git a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch index f7118d8fe..316190c6c 100644 --- a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f2c388370be9765c15982f522a13cb21ad0f3f1d..6ae52065abb4559ee53e2603224f2555952e50af 100644 +index 487e4ab76e255e10369f7968d73d41956e99ae66..8f3d2257a5be732883e18c821844d1ebb5a72f7d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1427,7 +1427,7 @@ public class ServerPlayer extends Player { +@@ -1428,7 +1428,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/server/0161-Configurable-broadcast-settings.patch b/patches/server/0161-Configurable-broadcast-settings.patch index ba2051c39..7f20f9dda 100644 --- a/patches/server/0161-Configurable-broadcast-settings.patch +++ b/patches/server/0161-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14c // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6ae52065abb4559ee53e2603224f2555952e50af..d846b4c0cd204ed2a17b883f37a83e2e049f7561 100644 +index 8f3d2257a5be732883e18c821844d1ebb5a72f7d..386a74f8a6f61fb745a1e36d8955d26bfc2ad78a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1011,6 +1011,7 @@ public class ServerPlayer extends Player { +@@ -1012,6 +1012,7 @@ public class ServerPlayer extends Player { })); PlayerTeam scoreboardteam = this.getTeam(); diff --git a/patches/server/0191-Customizable-sleeping-actionbar-messages.patch b/patches/server/0191-Customizable-sleeping-actionbar-messages.patch index ea14e617c..bbf9ad68a 100644 --- a/patches/server/0191-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0191-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 735be788e584152bd2c33eaf9c08ebb21769a1db..64a56285c32fa70454371db366982f2530df0df5 100644 +index 5b6511f2394adce6785f5d8d6914c37b4e5fdedc..77b80dfd5409a6de848430e14cbc8d457ebccf83 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1242,11 +1242,27 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -38,10 +38,10 @@ index 735be788e584152bd2c33eaf9c08ebb21769a1db..64a56285c32fa70454371db366982f25 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d846b4c0cd204ed2a17b883f37a83e2e049f7561..852d773149782f052da7e1937d955ba1d19c7f20 100644 +index 386a74f8a6f61fb745a1e36d8955d26bfc2ad78a..71dc8baa9eb93728c982139dde16f1c4567d1925 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1468,7 +1468,19 @@ public class ServerPlayer extends Player { +@@ -1469,7 +1469,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0196-Add-compass-command.patch b/patches/server/0196-Add-compass-command.patch index 0489a835c..16b251891 100644 --- a/patches/server/0196-Add-compass-command.patch +++ b/patches/server/0196-Add-compass-command.patch @@ -17,7 +17,7 @@ index bf51f5e414ab45e33efa4057ab251120290b43e1..428dd75450bdd5daf902a1fbaca7031a if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 852d773149782f052da7e1937d955ba1d19c7f20..fd44606db9581ec93487c51a955b58cb7f3066da 100644 +index 71dc8baa9eb93728c982139dde16f1c4567d1925..cd449e35bbc689ce6d2595693a4fbe1f226998c8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -283,6 +283,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index 852d773149782f052da7e1937d955ba1d19c7f20..fd44606db9581ec93487c51a955b58cb } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2902,5 +2905,13 @@ public class ServerPlayer extends Player { +@@ -2903,5 +2906,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0223-Signs-allow-color-codes.patch b/patches/server/0223-Signs-allow-color-codes.patch index dc5dd088f..31dfa7987 100644 --- a/patches/server/0223-Signs-allow-color-codes.patch +++ b/patches/server/0223-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fd44606db9581ec93487c51a955b58cb7f3066da..2b8f739cb69a67a2926b74fa36ad94f667b836dd 100644 +index cd449e35bbc689ce6d2595693a4fbe1f226998c8..943e864d7e25f77023337d7c719fc3d9a4b3ac55 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1588,6 +1588,7 @@ public class ServerPlayer extends Player { +@@ -1589,6 +1589,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { diff --git a/patches/server/0266-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch index 81a068032..f1a288f3c 100644 --- a/patches/server/0266-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -626,7 +626,7 @@ index 9f438b41b61ee1174d8f23bcb7d93380ad932e9c..c3c47857515a7f75d69c718f352d8bae } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1d8d1c4499c901f2675ef9a0e6f9dcb851217680..dd0ef00d29d4caa3a1fe8513ec82d72f64fc308f 100644 +index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc822296e5 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -825,16 +825,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -848,10 +848,10 @@ index 1d8d1c4499c901f2675ef9a0e6f9dcb851217680..dd0ef00d29d4caa3a1fe8513ec82d72f while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2b8f739cb69a67a2926b74fa36ad94f667b836dd..b44dbc0b989658c82aa68e83b094e295dc4e5fe5 100644 +index 943e864d7e25f77023337d7c719fc3d9a4b3ac55..f152066b6b19b6c5d7f4f7c4eb66ed0b440342c5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1239,7 +1239,7 @@ public class ServerPlayer extends Player { +@@ -1240,7 +1240,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -860,7 +860,7 @@ index 2b8f739cb69a67a2926b74fa36ad94f667b836dd..b44dbc0b989658c82aa68e83b094e295 worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1262,8 +1262,8 @@ public class ServerPlayer extends Player { +@@ -1263,8 +1263,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -871,7 +871,7 @@ index 2b8f739cb69a67a2926b74fa36ad94f667b836dd..b44dbc0b989658c82aa68e83b094e295 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1281,7 +1281,7 @@ public class ServerPlayer extends Player { +@@ -1282,7 +1282,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -1233,7 +1233,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 139f0f8b04c743df6c0534d09493d4f46407006e..ae8efb754e89c925647aa515f2e5bfc4c75a3857 100644 +index 6e7ed46a3a10a1ec69d0b69ee49be304760e419b..f9e035405c42fbe0a8c0dca2157798d69214914b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -409,7 +409,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1344,7 +1344,7 @@ index 139f0f8b04c743df6c0534d09493d4f46407006e..ae8efb754e89c925647aa515f2e5bfc4 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 31f1a485fc3e8d40f7181a5f8af4f56d9c25e2fc..2b57be8b158ab9736a2ab4a454edfe38f2ff6785 100644 +index 4328b688b8ef5d44d4ca5501e090c943e8d598b3..5fe8838b4512ba6676a5fe7f3ab412ff87f07667 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -367,13 +367,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1833,7 +1833,7 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..17abd085b3faf88e10a44a6c98af9968 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5777e5e31b1a7a7911c183db990f16fe7fc9b9ef..3c7cc1cba00df45296155bdd1430a64a94945f6c 100644 +index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd13bc3dbf 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1310,9 +1310,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0275-Implement-ram-and-rambar-commands.patch b/patches/server/0275-Implement-ram-and-rambar-commands.patch index 7f4064a92..f0e5e0658 100644 --- a/patches/server/0275-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0275-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index c1202a56b560269e132eafd8bb12383473d4d33e..815af29d1aae935264a400bdb9c3d676 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b44dbc0b989658c82aa68e83b094e295dc4e5fe5..8e36b261a4f8ea82bab778d3abd3326aa347d19a 100644 +index f152066b6b19b6c5d7f4f7c4eb66ed0b440342c5..37a3ce5da2cb89675e0180c4ed937e5851cd002b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -284,6 +284,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index b44dbc0b989658c82aa68e83b094e295dc4e5fe5..8e36b261a4f8ea82bab778d3abd3326a nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2914,5 +2917,13 @@ public class ServerPlayer extends Player { +@@ -2915,5 +2918,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0276-Add-item-packet-serialize-event.patch b/patches/server/0276-Add-item-packet-serialize-event.patch index ad237b51d..d961628b5 100644 --- a/patches/server/0276-Add-item-packet-serialize-event.patch +++ b/patches/server/0276-Add-item-packet-serialize-event.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add item packet serialize event diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index b13bc90b28b02f5e80d935bfcba727f92c5e4c4f..0cdc68722552a464fb828016eb93f865bc8bde54 100644 +index a5bcad412fb1ac3b6a3eee3f4618dc6c1ca66936..3b301945a08dc2162bfae76ea8c3b04bb65f53dd 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java @@ -95,6 +95,8 @@ public class FriendlyByteBuf extends ByteBuf { @@ -17,7 +17,7 @@ index b13bc90b28b02f5e80d935bfcba727f92c5e4c4f..0cdc68722552a464fb828016eb93f865 public FriendlyByteBuf(ByteBuf parent) { this.source = parent; } -@@ -635,6 +637,17 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -640,6 +642,17 @@ public class FriendlyByteBuf extends ByteBuf { this.writeBoolean(false); } else { this.writeBoolean(true); From 837307112c59ca5070a208741adbd44c01709431 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 31 Dec 2023 18:03:16 -0800 Subject: [PATCH 034/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1281f4f Make region/lock shift accessors per world --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 10 +++--- .../server/0003-Fix-pufferfish-issues.patch | 6 ++-- .../0025-Zombie-horse-naturally-spawn.patch | 4 +-- ...ggling-special-MobSpawners-per-world.patch | 4 +-- .../0096-Configurable-daylight-cycle.patch | 8 ++--- .../0144-Config-for-skipping-night.patch | 4 +-- ...ake-lightning-rod-range-configurable.patch | 4 +-- ...omizable-sleeping-actionbar-messages.patch | 4 +-- ...ain-and-thunder-should-stop-on-sleep.patch | 6 ++-- patches/server/0238-Allow-void-trading.patch | 4 +-- patches/server/0265-Remove-Timings.patch | 36 +++++++++---------- .../server/0266-Remove-Mojang-Profiler.patch | 30 ++++++++-------- 13 files changed, 61 insertions(+), 61 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8a8cb335a..ee348479e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 0ae58c09a15ee1ad307a2b8ef7e8ad735d336651 +paperCommit = 1281f4f5526c0b8bdc32915c41dc6af6b4f9fea2 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 82c19092e..32f917772 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1718,10 +1718,10 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6041f1f5151f26d389f946d70f16e1de76db496b..4a802588f58bdea30b58521cbc4f0d76743f732e 100644 +index 676087c3addd712939c865b39ddb5d9f0bc7ce25..2f89625c216e9751423c623b6e88b98c87d9a00b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -895,6 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -900,6 +900,7 @@ public class ServerLevel extends Level implements WorldGenLevel { org.spigotmc.ActivationRange.activateEntities(this); // Spigot this.timings.entityTick.startTiming(); // Spigot this.entityTickList.forEach((entity) -> { @@ -1729,7 +1729,7 @@ index 6041f1f5151f26d389f946d70f16e1de76db496b..4a802588f58bdea30b58521cbc4f0d76 if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); -@@ -914,7 +915,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -919,7 +920,20 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); @@ -1751,7 +1751,7 @@ index 6041f1f5151f26d389f946d70f16e1de76db496b..4a802588f58bdea30b58521cbc4f0d76 gameprofilerfiller.pop(); } } -@@ -979,9 +993,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -984,9 +998,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -1764,7 +1764,7 @@ index 6041f1f5151f26d389f946d70f16e1de76db496b..4a802588f58bdea30b58521cbc4f0d76 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -992,7 +1008,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -997,7 +1013,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 330f063d9..8cc19733e 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -40,10 +40,10 @@ index 0dd3374468e05f7a312ba5856b9cf8a4787dfa59..960c0555a001fe63de78d77d5ea47d08 "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 66cbea2fd146bdabf1241dae72bd76dc256afe45..5493e7e8ec1de5bb52ee7bd145e436fdb03e59b6 100644 +index 2f89625c216e9751423c623b6e88b98c87d9a00b..51631a4d93daaa8e9ce3408836ee743fd35e16ff 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -993,7 +993,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -998,7 +998,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -53,7 +53,7 @@ index 66cbea2fd146bdabf1241dae72bd76dc256afe45..5493e7e8ec1de5bb52ee7bd145e436fd private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3fb317e5df780abb7fa8c3d78717306cad2bc650..879f9ba2395b2856e8cd0c78a2b25782e29a7234 100644 +index 2e14e03d01c97b9da97e8e15c663262d22b1b3fc..d0bc64a5970e06dcbec5e2b833977da24f1c0af3 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -213,7 +213,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0025-Zombie-horse-naturally-spawn.patch b/patches/server/0025-Zombie-horse-naturally-spawn.patch index 7bad0655a..a875725e8 100644 --- a/patches/server/0025-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0025-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 53131fc1fc02df8f60f0a44dd8c3a5a53e24fddb..7126dacffb7302927a6ca88ce3bfdec975ee342f 100644 +index 9dbedb8ab967f5f8989b121b712d505f3ebc16a5..514bccb60ad65770507d26d270d2e5488fe8f329 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1017,10 +1017,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1022,10 +1022,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch index 44352f049..596b15ca8 100644 --- a/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0089-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 7126dacffb7302927a6ca88ce3bfdec975ee342f..dfec321501523e1d953811961d1b5495cb41d815 100644 +index 514bccb60ad65770507d26d270d2e5488fe8f329..73c1115cebb7d12874ae5de379bf9ac7481ac808 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -709,7 +709,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -714,7 +714,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; diff --git a/patches/server/0096-Configurable-daylight-cycle.patch b/patches/server/0096-Configurable-daylight-cycle.patch index c586f6a85..290721663 100644 --- a/patches/server/0096-Configurable-daylight-cycle.patch +++ b/patches/server/0096-Configurable-daylight-cycle.patch @@ -31,7 +31,7 @@ index 2bc4073bb331e4b3beae9cccb06d3ca46f9d3b24..9de37c25f7a970326dc96a3dd4b2fddf } ServerPlayer entityplayer = (ServerPlayer) entityhuman; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dfec321501523e1d953811961d1b5495cb41d815..3f95ede3602c3dea611ba9a6b4f6891419638283 100644 +index 73c1115cebb7d12874ae5de379bf9ac7481ac808..a19cf61172822ce199a280d1b7dc8cdb036a49ac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -216,6 +216,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -43,7 +43,7 @@ index dfec321501523e1d953811961d1b5495cb41d815..3f95ede3602c3dea611ba9a6b4f68914 private final RandomSequences randomSequences; public long lastMidTickExecuteFailure; // Paper - execute chunk tasks mid tick -@@ -788,6 +790,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -793,6 +795,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system @@ -51,7 +51,7 @@ index dfec321501523e1d953811961d1b5495cb41d815..3f95ede3602c3dea611ba9a6b4f68914 } // Paper start -@@ -978,6 +981,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -983,6 +986,13 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setGameTime(i); this.serverLevelData.getScheduledEvents().tick(this.server, i); if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -65,7 +65,7 @@ index dfec321501523e1d953811961d1b5495cb41d815..3f95ede3602c3dea611ba9a6b4f68914 this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -986,7 +996,21 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -991,7 +1001,21 @@ public class ServerLevel extends Level implements WorldGenLevel { public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); diff --git a/patches/server/0144-Config-for-skipping-night.patch b/patches/server/0144-Config-for-skipping-night.patch index 6f68736c2..f12ad4f37 100644 --- a/patches/server/0144-Config-for-skipping-night.patch +++ b/patches/server/0144-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3f95ede3602c3dea611ba9a6b4f6891419638283..b8bb7281208a03202bd0575e8dc998190751d46e 100644 +index a19cf61172822ce199a280d1b7dc8cdb036a49ac..ceba48b52c9e01c073b89b04282fc1f8bfb9f700 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -841,7 +841,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -846,7 +846,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; diff --git a/patches/server/0178-Make-lightning-rod-range-configurable.patch b/patches/server/0178-Make-lightning-rod-range-configurable.patch index 8ef7dfdaf..d577be91c 100644 --- a/patches/server/0178-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0178-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b8bb7281208a03202bd0575e8dc998190751d46e..735be788e584152bd2c33eaf9c08ebb21769a1db 100644 +index ceba48b52c9e01c073b89b04282fc1f8bfb9f700..de2b3b931901ea4155e9313d5edc5ba9b95b2e75 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1193,7 +1193,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1198,7 +1198,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0191-Customizable-sleeping-actionbar-messages.patch b/patches/server/0191-Customizable-sleeping-actionbar-messages.patch index bbf9ad68a..fa04160e8 100644 --- a/patches/server/0191-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0191-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5b6511f2394adce6785f5d8d6914c37b4e5fdedc..77b80dfd5409a6de848430e14cbc8d457ebccf83 100644 +index de2b3b931901ea4155e9313d5edc5ba9b95b2e75..a655e163d6c0c340c2ef2abf00eca611eaad6660 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1242,11 +1242,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1247,11 +1247,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); diff --git a/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index cf21eda12..31b7b2788 100644 --- a/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 64a56285c32fa70454371db366982f2530df0df5..59d6729e5e96ff34fd9cd31b2938a1da3826fa57 100644 +index a655e163d6c0c340c2ef2abf00eca611eaad6660..9751b8b052cd47bc460207224aaf547b5d271411 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1402,6 +1402,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1407,6 +1407,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 64a56285c32fa70454371db366982f2530df0df5..59d6729e5e96ff34fd9cd31b2938a1da this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1409,6 +1410,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1414,6 +1415,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0238-Allow-void-trading.patch b/patches/server/0238-Allow-void-trading.patch index 8c578f3a8..d8887eb59 100644 --- a/patches/server/0238-Allow-void-trading.patch +++ b/patches/server/0238-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 59d6729e5e96ff34fd9cd31b2938a1da3826fa57..9121c5371b083d07d6b488e1a49d24a91ecccba0 100644 +index 9751b8b052cd47bc460207224aaf547b5d271411..2e457d9c2a65875419fcc8cfcda33cfe9b528640 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2924,7 +2924,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2929,7 +2929,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start diff --git a/patches/server/0265-Remove-Timings.patch b/patches/server/0265-Remove-Timings.patch index a40dd5ca2..fe835ca0b 100644 --- a/patches/server/0265-Remove-Timings.patch +++ b/patches/server/0265-Remove-Timings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Timings diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -index abd0217cf0bff183c8e262edc173a53403797c1a..2519ad2884b6c09b312432b933c31476b369e599 100644 +index 6bc7c6f16a1649fc9e24e7cf90fca401e5bd4875..e1ffd62f4ebceecb9bc5471df3da406cffea0483 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -@@ -1315,9 +1315,9 @@ public final class ChunkHolderManager { +@@ -1316,9 +1316,9 @@ public final class ChunkHolderManager { } public boolean processTicketUpdates() { @@ -447,10 +447,10 @@ index 5cf74fe0214191d42e74fc104eba150a95894e0f..9f438b41b61ee1174d8f23bcb7d93380 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab5382437dc0 100644 +index 2e457d9c2a65875419fcc8cfcda33cfe9b528640..1ccdea0e7c64de5bcb7a6a6f14105cf62a211fd6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -867,7 +867,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -872,7 +872,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("tickPending"); @@ -459,7 +459,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -876,24 +876,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -881,24 +881,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -491,7 +491,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 } this.handlingTick = false; -@@ -906,7 +906,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -911,7 +911,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -500,7 +500,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -914,7 +914,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -919,7 +919,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -509,7 +509,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 this.entityTickList.forEach((entity) -> { entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -955,8 +955,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -960,8 +960,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -520,7 +520,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -1100,7 +1100,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1105,7 +1105,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper gameprofilerfiller.popPush("tickBlocks"); @@ -529,7 +529,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 if (randomTickSpeed > 0) { // Paper start - optimize random block ticking LevelChunkSection[] sections = chunk.getSections(); -@@ -1134,7 +1134,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1139,7 +1139,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking @@ -538,7 +538,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 gameprofilerfiller.pop(); } -@@ -1478,8 +1478,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1483,8 +1483,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -549,7 +549,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1495,7 +1495,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1500,7 +1500,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -558,7 +558,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1518,8 +1518,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1523,8 +1523,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -569,7 +569,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1549,7 +1549,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1554,7 +1554,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -578,7 +578,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 } } else { passenger.stopRiding(); -@@ -1569,14 +1569,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1574,14 +1574,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -596,7 +596,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1588,7 +1588,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1593,7 +1593,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -605,7 +605,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 } // Paper end -@@ -1602,7 +1602,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1607,7 +1607,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -614,7 +614,7 @@ index ed627a719656456844267309f5d9e5cd97ea5ead..3e00aec02b36ed62424f7271c4d1ab53 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1612,11 +1612,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1617,11 +1617,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } diff --git a/patches/server/0266-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch index f1a288f3c..1336479fa 100644 --- a/patches/server/0266-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -626,10 +626,10 @@ index 9f438b41b61ee1174d8f23bcb7d93380ad932e9c..c3c47857515a7f75d69c718f352d8bae } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc822296e5 100644 +index 1ccdea0e7c64de5bcb7a6a6f14105cf62a211fd6..7912c26d27e9f143c34d63410155052cd00e0b8d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -825,16 +825,16 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -830,16 +830,16 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -649,7 +649,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc this.advanceWeatherCycle(); } -@@ -866,30 +866,30 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -871,30 +871,30 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickTime(); } @@ -687,7 +687,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc if (flag) { // this.timings.doSounds.startTiming(); // Spigot // Purpur this.runBlockEvents(); -@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -902,7 +902,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } this.handlingTick = false; @@ -696,7 +696,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc boolean flag1 = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag1) { -@@ -905,12 +905,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -910,12 +910,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag1 || this.emptyTime++ < 300) { @@ -712,7 +712,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -921,9 +921,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -926,9 +926,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -724,7 +724,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -935,7 +935,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -940,7 +940,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -733,7 +733,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc // Pufferfish start - copied from this.guardEntityTick try { this.tickNonPassenger(entity); // Pufferfish - changed -@@ -950,20 +950,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -955,20 +955,19 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end } // Pufferfish end @@ -757,7 +757,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc } @Override -@@ -1045,9 +1044,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1050,9 +1049,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -769,7 +769,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -1086,7 +1085,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1091,7 +1090,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -778,7 +778,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc if (!this.paperConfig().environment.disableIceAndSnow) { // Paper for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1099,7 +1098,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1104,7 +1103,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper @@ -787,7 +787,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { // Paper start - optimize random block ticking -@@ -1135,7 +1134,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1140,7 +1139,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -796,7 +796,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc } @VisibleForTesting -@@ -1482,19 +1481,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1487,19 +1486,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -821,7 +821,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1523,12 +1522,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1528,12 +1527,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -838,7 +838,7 @@ index 3e00aec02b36ed62424f7271c4d1ab5382437dc0..76fd80b1d5674b89f9b13df5b5d70fbc // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1540,7 +1539,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1545,7 +1544,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 From 6488438861dbd3d33643f70e93940a2f03c48c06 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 3 Jan 2024 12:49:27 -0800 Subject: [PATCH 035/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@983377b Correctly check if bucket dispenses will succeed for event (#10109) PaperMC/Paper@58e120b [ci skip] Remove extraneous diff added in 1.20.3 update (#10101) PaperMC/Paper@816bacc Call EntityChangeBlockEvent for cake eating (#10105) PaperMC/Paper@692db0c fix CustomModelData being removed (#10113) PaperMC/Paper@509876d Keep fully frozen entities fully activated (#10103) PaperMC/Paper@1fa48d1 include relative flags in PlayerTeleportEvent (#8190) --- gradle.properties | 2 +- patches/server/0001-Pufferfish-Server-Changes.patch | 8 ++++---- patches/server/0005-Purpur-client-support.patch | 6 +++--- patches/server/0012-AFK-API.patch | 8 ++++---- patches/server/0080-Dispensers-place-anvils-option.patch | 4 ++-- patches/server/0208-Extended-OfflinePlayer-API.patch | 4 ++-- patches/server/0269-Debug-Marker-API.patch | 4 ++-- patches/server/0273-Add-death-screen-API.patch | 4 ++-- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gradle.properties b/gradle.properties index ee348479e..c888d57c3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 1281f4f5526c0b8bdc32915c41dc6af6b4f9fea2 +paperCommit = 1fa48d140c5469d894b436a7ba0cb5cb6f819ee0 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 32f917772..c39063819 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1774,7 +1774,7 @@ index 676087c3addd712939c865b39ddb5d9f0bc7ce25..2f89625c216e9751423c623b6e88b98c if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 64255f7db85886421d5029766e8a6d1eadb94cff..ce4c0a721c148ffb3c91d6a59189925aa7a1d766 100644 +index 8b630fc4da8a7fda08c416e70c22463f04c3b6b5..df07e24ad5e1eaf5211d307965107ec1776cfa19 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1122,6 +1122,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -3316,7 +3316,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..80553face9c70c2a3d897681e7761df8 if (stream != null) { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 59103744ac6beeb12719fdefcda54eeff498229e..c0333ba8e57cd284bb8ab15181da6b39d55872f9 100644 +index 2d31752478636bd21bbff5b430e5acb76b5d91c2..b8217bee667da63d3dd789f1a52646a8fa9fd632 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings; @@ -3375,8 +3375,8 @@ index 59103744ac6beeb12719fdefcda54eeff498229e..c0333ba8e57cd284bb8ab15181da6b39 if ( entity instanceof LivingEntity ) { LivingEntity living = (LivingEntity) entity; -- if ( living.onClimbable() || living.jumping || living.hurtTime > 0 || living.activeEffects.size() > 0 ) // Paper -+ if ( living.onClimableCached() || living.jumping || living.hurtTime > 0 || living.activeEffects.size() > 0 ) // Paper // Pufferfish - use cached +- if ( living.onClimbable() || living.jumping || living.hurtTime > 0 || living.activeEffects.size() > 0 || living.isFreezing()) // Paper ++ if ( living.onClimableCached() || living.jumping || living.hurtTime > 0 || living.activeEffects.size() > 0 || living.isFreezing()) // Paper // Pufferfish - use cached { return 1; // Paper } diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index eb297dda7..931f716e3 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0eb3384df396508c3d26d1e155cd0e6d64251346..393edc13408ed8b3aad36121891eddf75ea321ff 100644 +index be05a52be037042c6158100e2ce880b8ed415d53..95240bee8f76fd651166ecabe80885ac6601c34e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { @@ -43,10 +43,10 @@ index d28d0ef6105ddeb562ddf31ae9088739856941fc..49aaa5147b9b904fa912c1811dc66d47 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2ec8b8f65661001716d1cb34dcc21cda7286e5d7..83457c97f8c182ca63311f4a0186e1f95adfbdbb 100644 +index da63b4050be25dcb91d04df8c2fcc643cbb0751d..96e4f1c21e13bc673ff83279ca51c1f1467a5e6e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3367,4 +3367,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3373,4 +3373,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index eb563d9b0..e81af29d6 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index a3b4ed70b7d7012a72d5997c04821871d029d18b..e20f86d9167929e463b0e179db7e22e7 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 741b108b2c6ed243c8f4e9124a31a3005e0ce594..66a41a3ecb284ed99a36ea0acb423dc0cde11893 100644 +index 748c48a5facc24abb106eded9d5f034b5c36757e..79b0a6ecec67d1a512fe2c9f0179a06a4133625f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -325,6 +325,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,7 +223,7 @@ index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb0 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 83457c97f8c182ca63311f4a0186e1f95adfbdbb..45b4cf1af463a0600edd53b4390a6e3938f5eaf8 100644 +index 96e4f1c21e13bc673ff83279ca51c1f1467a5e6e..dd697069428163773e7c5c7680561ab0989fe93a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index 83457c97f8c182ca63311f4a0186e1f95adfbdbb..45b4cf1af463a0600edd53b4390a6e39 for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3373,5 +3378,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3379,5 +3384,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,7 +317,7 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index c0333ba8e57cd284bb8ab15181da6b39d55872f9..282a57df4e2e5708e9cfd9c76b1d7de2a8a23900 100644 +index b8217bee667da63d3dd789f1a52646a8fa9fd632..08b266efbefc45e9b08b2c03a36441a8c7564197 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -203,6 +203,7 @@ public class ActivationRange diff --git a/patches/server/0080-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch index 297118303..5fd8e14ed 100644 --- a/patches/server/0080-Dispensers-place-anvils-option.patch +++ b/patches/server/0080-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 e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..5e3a3565ac71cd8b1ea95b1732e5a1ec26ef6adb 100644 +index bf1c5834717758991c1520afd4b2a5c3fa68a558..44df01054645deb99b8d2ae8ac9540f4f0035d1c 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1196,6 +1196,23 @@ public interface DispenseItemBehavior { +@@ -1194,6 +1194,23 @@ public interface DispenseItemBehavior { } } }); diff --git a/patches/server/0208-Extended-OfflinePlayer-API.patch b/patches/server/0208-Extended-OfflinePlayer-API.patch index a8eee6223..27d9d3fdd 100644 --- a/patches/server/0208-Extended-OfflinePlayer-API.patch +++ b/patches/server/0208-Extended-OfflinePlayer-API.patch @@ -223,10 +223,10 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cf57e41f23bb6bbdaee201966d70fce49df95ceb..e7886daefcb5f4890b86b5f6962b40b1bbcb5183 100644 +index c7f3072ad6e54b55e896c8d99a16da9849fa8d3b..9306facdc8aa56674f896fa3ab3d2b54dc5a2f4b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2640,6 +2640,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2646,6 +2646,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0269-Debug-Marker-API.patch b/patches/server/0269-Debug-Marker-API.patch index a0b4c462c..09a214ece 100644 --- a/patches/server/0269-Debug-Marker-API.patch +++ b/patches/server/0269-Debug-Marker-API.patch @@ -99,10 +99,10 @@ index 8af705619e8a784c6128d7ff4838eeae56e59821..f6c6cd92e1eff044abefa6ca74477d36 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e7886daefcb5f4890b86b5f6962b40b1bbcb5183..dc2b7450775a2ffadedb07b166410cb42ddacc16 100644 +index 9306facdc8aa56674f896fa3ab3d2b54dc5a2f4b..e3c2279c0096976b9b8a574b731fad7bfa6f770f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3419,5 +3419,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3425,5 +3425,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0273-Add-death-screen-API.patch b/patches/server/0273-Add-death-screen-API.patch index 26aaad371..408a7f568 100644 --- a/patches/server/0273-Add-death-screen-API.patch +++ b/patches/server/0273-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index dc2b7450775a2ffadedb07b166410cb42ddacc16..ff4317fd21a62bd85e0b3ecc7ff0c1f5e74e4df5 100644 +index e3c2279c0096976b9b8a574b731fad7bfa6f770f..8c90eddd40c8ab2f4d727e3c7d9b6312d57bf277 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3457,5 +3457,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3463,5 +3463,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } From 66a61fbd2b582d88dcb4c07225ada31303548fef Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 4 Jan 2024 21:57:42 -0800 Subject: [PATCH 036/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ae001ae Fix untrack event not being called for all 'untracks' (#10110) PaperMC/Paper@259bc76 Pass system properties to maven repo session (#10117) PaperMC/Paper@b2a6d57 Validate ResourceLocation in NBT reading PaperMC/Paper@7eaff48 [ci skip] Replace some magic values with constant references PaperMC/Paper@19a6202 Fix experience & improvements to block events (#8067) PaperMC/Paper@8379027 Fix cmd permission levels for command blocks (#7404) PaperMC/Paper@a93acc4 Fix EntityChangePoseEvent being called during worldgen (#10120) PaperMC/Paper@25a99b1 Fix BlockDestroyEvents effectBlock not being set (#10131) --- gradle.properties | 2 +- ...dd-log-suppression-for-LibraryLoader.patch | 8 +-- .../0001-Pufferfish-Server-Changes.patch | 28 +++++------ patches/server/0004-Purpur-config-files.patch | 8 +-- .../0007-Component-related-conveniences.patch | 4 +- patches/server/0008-Ridables.patch | 18 +++---- patches/server/0020-Silk-touch-spawners.patch | 8 +-- ...-Skip-events-if-there-s-no-listeners.patch | 6 +-- ...urable-void-damage-height-and-damage.patch | 6 +-- ...-Add-allow-water-in-end-world-option.patch | 6 +-- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +-- ...26-Movement-options-for-armor-stands.patch | 4 +- .../server/0127-Fix-stuck-in-portals.patch | 4 +- patches/server/0147-Drowning-Settings.patch | 6 +-- .../0159-Gamemode-extra-permissions.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...89-Store-placer-on-Block-when-placed.patch | 6 +-- ...ent-BlockEntity-Lore-and-DisplayName.patch | 16 +++--- ...oe-to-replant-crops-and-nether-warts.patch | 12 ++--- patches/server/0238-Allow-void-trading.patch | 4 +- patches/server/0265-Remove-Timings.patch | 14 +++--- .../server/0266-Remove-Mojang-Profiler.patch | 50 +++++++++---------- ...igurable-block-fall-damage-modifiers.patch | 4 +- patches/server/0285-Fire-Immunity-API.patch | 10 ++-- ...leport-to-spawn-on-nether-ceiling-da.patch | 4 +- .../0288-Log-skipped-entity-s-position.patch | 4 +- ...able-sugarcane-cactus-and-netherwart.patch | 4 +- 28 files changed, 127 insertions(+), 127 deletions(-) diff --git a/gradle.properties b/gradle.properties index c888d57c3..4947eae11 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 1fa48d140c5469d894b436a7ba0cb5cb6f819ee0 +paperCommit = 25a99b12e8b18d13f1e69d40f810f9c2d8f2b9c0 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch index 95e4cd2ac..456417ac0 100644 --- a/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/api/0048-Add-log-suppression-for-LibraryLoader.patch @@ -17,10 +17,10 @@ index 301e82369603f3dd6e6c1bd380da4bacacd7ef6c..0c6ca7588fb3d6b6497ddf032fe75e5c /** * This class was not meant to be constructed explicitly diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -index e4b6f278a811acbb0070e311c5c3bdaff7b00474..ee83ecb054099cb85168a9499dfe967a0a9ec796 100644 +index 653135352c104a6ddeb74a1b6d4916c6952d6271..46b0d02aa759b3735e6ac811523d459cf263aa8b 100644 --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -65,6 +65,7 @@ public class LibraryLoader +@@ -66,6 +66,7 @@ public class LibraryLoader @Override public void transferStarted(@NotNull TransferEvent event) throws TransferCancelledException { @@ -28,7 +28,7 @@ index e4b6f278a811acbb0070e311c5c3bdaff7b00474..ee83ecb054099cb85168a9499dfe967a logger.log( Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); } } ); -@@ -80,6 +81,7 @@ public class LibraryLoader +@@ -81,6 +82,7 @@ public class LibraryLoader { return null; } @@ -36,7 +36,7 @@ index e4b6f278a811acbb0070e311c5c3bdaff7b00474..ee83ecb054099cb85168a9499dfe967a logger.log( Level.INFO, "[{0}] Loading {1} libraries... please wait", new Object[] { java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), desc.getLibraries().size() // Paper - use configured log prefix -@@ -118,6 +120,7 @@ public class LibraryLoader +@@ -119,6 +121,7 @@ public class LibraryLoader } jarFiles.add( url ); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index c39063819..efd708fc3 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1540,7 +1540,7 @@ index 58536aabf607015939a1326f80207c0a06eed8ff..3b8c810a228a59bf02a8557b229e5eca } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index d9cd497bc1b654030ff1a597f038b6a881df9f6b..da1dc26ce76cab20bb56d5a5d806410857f38ea6 100644 +index ecb09c74153349e78bb81d1188c282e4be4000bf..d84b99a8c15f35dc7fa70d250d3cb845b7851880 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -243,7 +243,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1552,7 +1552,7 @@ index d9cd497bc1b654030ff1a597f038b6a881df9f6b..da1dc26ce76cab20bb56d5a5d8064108 // Paper end - optimise chunk tick iteration public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { -@@ -1463,8 +1463,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1458,8 +1458,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -1581,7 +1581,7 @@ index d9cd497bc1b654030ff1a597f038b6a881df9f6b..da1dc26ce76cab20bb56d5a5d8064108 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1476,6 +1496,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1471,6 +1491,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } @@ -1718,7 +1718,7 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 676087c3addd712939c865b39ddb5d9f0bc7ce25..2f89625c216e9751423c623b6e88b98c87d9a00b 100644 +index 7c31f619a6e8e3539c547fc43d821d2cce7df7e7..1b98a2b6a787d3d2490f84b083c162ceef8e6d0d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -900,6 +900,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1898,7 +1898,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd133a05e06 100644 +index 1be10c57e374ad4018c08d96cfb69397a2f541d3..5cbe6cb0676ac23e184e7586e2dacbbc1d5fb218 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -307,7 +307,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1923,7 +1923,7 @@ index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd1 public float getBukkitYaw() { return this.yRot; } -@@ -802,6 +808,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -806,6 +812,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public void tick() { @@ -1936,7 +1936,7 @@ index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd1 this.baseTick(); } -@@ -4399,16 +4411,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4410,16 +4422,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1962,7 +1962,7 @@ index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd1 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4416,14 +4430,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4427,14 +4441,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2030,7 +2030,7 @@ index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd1 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4445,9 +4506,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4456,9 +4517,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end } } @@ -2044,7 +2044,7 @@ index 0c46a4aeafd03fbbfd590b0362d41bf2b1d5ca74..b8810cce6f4995d78dca3691b0a1cbd1 if (vec3d.length() > 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..a63399eedb896c06e96c7fba5cac7102e1c40ba6 100644 +index 00389d7ec3e8b059d5591a2019ba240fda2901fe..81e1854bdce8136f7fee9a25ca76ed356dea18e6 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -305,6 +305,8 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -2119,7 +2119,7 @@ index bc908b75cb99536df658281ae7f8b4eeedbbedc9..0a9a77564d624d66e76637eef509e2f3 if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index e0cf7771488ab0065708d68b4e8550b865af0ed4..6df13ebec8fbb11eb6e2b7469f9e4ebb44256894 100644 +index a7fbd329ea6d36a46c00b4476c74e426dbbfe238..40fbf1bc4409c289fe9ca154ff306be52708540d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -221,14 +221,16 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -2680,7 +2680,7 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8848eeda7a89d445e370626182f9bb4710e5edd4..2e14e03d01c97b9da97e8e15c663262d22b1b3fc 100644 +index 6403341f2e9d7ac4251336cb0bcc5d79dbb7bb0e..ff5880cd1aef52b9df435c8c5935295b116580d2 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -213,6 +213,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -2692,7 +2692,7 @@ index 8848eeda7a89d445e370626182f9bb4710e5edd4..2e14e03d01c97b9da97e8e15c663262d protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper -@@ -1313,13 +1315,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1318,13 +1320,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2708,7 +2708,7 @@ index 8848eeda7a89d445e370626182f9bb4710e5edd4..2e14e03d01c97b9da97e8e15c663262d // Paper end } } -@@ -1793,6 +1795,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1798,6 +1800,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 52daf6d04..fbcc863fe 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -37,10 +37,10 @@ index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 14f4c0a93372a58cf36dc95265b5e210ea1605e5..ff27787313a3337e29eac6f623b08f1f333f293c 100644 +index 37ba8fd69a0099f80bdf7c28b593241f1f5d681f..2944b64e3dd5d413ccc12330118eb5248888e21f 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -322,6 +322,30 @@ public class CommandSourceStack implements ExecutionCommandSource { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 53e00bb94fd6af9197422218aa92acde897f1aa9..9ded11bdbaf98948a1451e15a237f8423c8cc36d 100644 +index 3ff4c4835029ff6010ac28f933952b56bb823452..6ae230859458b3bf7171577e34c3b6351fa842df 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -225,6 +225,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index 53e00bb94fd6af9197422218aa92acde897f1aa9..9ded11bdbaf98948a1451e15a237f842 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ae9dfb2719ff2372e3a73adc2163330db886dfbe..f709667d2efab5f7dac22bb6e4b0bf32917f71e4 100644 +index 257675e0f3d44dec2d532161713609502b2ae868..a3b4ed70b7d7012a72d5997c04821871d029d18b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -763,6 +763,15 @@ public class ServerPlayer extends Player { @@ -66,7 +66,7 @@ index ae9dfb2719ff2372e3a73adc2163330db886dfbe..f709667d2efab5f7dac22bb6e4b0bf32 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ce4c0a721c148ffb3c91d6a59189925aa7a1d766..741b108b2c6ed243c8f4e9124a31a3005e0ce594 100644 +index df07e24ad5e1eaf5211d307965107ec1776cfa19..748c48a5facc24abb106eded9d5f034b5c36757e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -79,7 +79,7 @@ index ce4c0a721c148ffb3c91d6a59189925aa7a1d766..741b108b2c6ed243c8f4e9124a31a300 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index acb0f8ff57e4e08bdbcb93994064d9d216ac69b5..7fc1887f68092da224a1ea1c56de474b471a8aee 100644 +index 4bcd36f4767975e87ec6ed12a3c80e834e2d497b..0bc1c009424ce4e8bc61232b5ffd40db1ae3f262 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -91,7 +91,7 @@ index acb0f8ff57e4e08bdbcb93994064d9d216ac69b5..7fc1887f68092da224a1ea1c56de474b private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3008,6 +3008,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3012,6 +3012,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index acb0f8ff57e4e08bdbcb93994064d9d216ac69b5..7fc1887f68092da224a1ea1c56de474b this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3048,6 +3055,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3052,6 +3059,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Spigot end @@ -120,7 +120,7 @@ index acb0f8ff57e4e08bdbcb93994064d9d216ac69b5..7fc1887f68092da224a1ea1c56de474b if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4989,4 +5004,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -5000,4 +5015,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -268,7 +268,7 @@ index 0a9a77564d624d66e76637eef509e2f321333dc6..5e64293b7392e5a4b19a4c7303b0365d // Paper end if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 6df13ebec8fbb11eb6e2b7469f9e4ebb44256894..62eba7fc2fd013bf17496896c2b7a88c95c070f1 100644 +index 40fbf1bc4409c289fe9ca154ff306be52708540d..f17b7e83a04a2cd738f7d708891fec2e341f3f96 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -148,8 +148,8 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -5204,7 +5204,7 @@ index 1c3e1153d08b59d29b3613fc3b50a4780aa7a3ac..7c8b90444aa635cddf480d49a92a180a + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a36ffbbab5bbfec5a4a224dc5ee8812b98dd4d7c..2d934ed6b21ad2df88e1389dd1aa445aa6ccd1ff 100644 +index 2aab68bac670dcd134d817940020214c7b0797f9..11dacda7c56c1819adc0c5a420b277c8e0db0aeb 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -591,6 +591,15 @@ public class CraftEventFactory { diff --git a/patches/server/0020-Silk-touch-spawners.patch b/patches/server/0020-Silk-touch-spawners.patch index d65d2f6b8..1c214676f 100644 --- a/patches/server/0020-Silk-touch-spawners.patch +++ b/patches/server/0020-Silk-touch-spawners.patch @@ -18,7 +18,7 @@ index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc374 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c2e03881fff78aff203b5838180894bb70f419b9 100644 +index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c55576424993236da46ed1c2ccd03b72d7ee97f9 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -42,6 +42,58 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -27,7 +27,7 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c2e03881fff78aff203b5838180894bb + // Purpur start + @Override -+ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack, boolean includeDrops) { ++ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack, boolean includeDrops, boolean dropExp) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { + java.util.Optional> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); + @@ -63,13 +63,13 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c2e03881fff78aff203b5838180894bb + ItemStack item = new ItemStack(Blocks.SPAWNER.asItem()); + if (entityType != null) { + tag.putString("Purpur.mob_type", entityType.getName()); -+ tag.putDouble("HideFlags", 32); // hides the "Interact with Spawn Egg" tooltip ++ tag.putDouble("HideFlags", ItemStack.TooltipPart.ADDITIONAL.getMask()); // hides the "Interact with Spawn Egg" tooltip + item.setTag(tag); + } + + popResource(level, pos, item); + } -+ super.playerDestroy(level, player, pos, state, blockEntity, stack, includeDrops); ++ super.playerDestroy(level, player, pos, state, blockEntity, stack, includeDrops, dropExp); + } + + private boolean isSilkTouch(Level level, ItemStack stack) { diff --git a/patches/server/0044-Skip-events-if-there-s-no-listeners.patch b/patches/server/0044-Skip-events-if-there-s-no-listeners.patch index 4dc73ab51..9fc44407d 100644 --- a/patches/server/0044-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0044-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 55f3f5396dac2b0bb0cc37b537547e9245042100..471270f302cbfaf81500976fcc5a02eaed4120f3 100644 +index 8fe48c6bf65db6b11fcd0674aad01d5bb8d17a5f..8572142117fbc469199a538c4624b2f064e8cb6f 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -516,6 +516,7 @@ public class Commands { +@@ -507,6 +507,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper @@ -16,7 +16,7 @@ index 55f3f5396dac2b0bb0cc37b537547e9245042100..471270f302cbfaf81500976fcc5a02ea PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -526,6 +527,7 @@ public class Commands { +@@ -517,6 +518,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index a81ccf1ba..c68d9754e 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-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 5cc0caee5ba7d63fb1ec4144623ec9a94401c86c..ed1d9e97d0892e2c51915b1b8636791ea261943b 100644 +index 59ff2180e0c621cc821affb34aa051ac017f9431..bc1033008eb893ef94f0abb7a0309d787bcde8f0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -897,7 +897,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -901,7 +901,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,7 +18,7 @@ index 5cc0caee5ba7d63fb1ec4144623ec9a94401c86c..ed1d9e97d0892e2c51915b1b8636791e && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4d0332666d705610d3e48c96462ef655f2fd2ed5..0b5e92a5b631da4c9b700e3d65297d639f792986 100644 +index d6aef7ea15df04046b005d4d5d747ef70b846385..abd146185cfd512c23367d478f269a9c4a35f086 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2540,7 +2540,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0070-Add-allow-water-in-end-world-option.patch index 5b9a40f61..10e65f39c 100644 --- a/patches/server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0070-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index aa0f09a18ea781e027ea70928b30d3e93061120f..5cb8f1e13f4889792395d6b498c0ade2 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 ea437adbb8a96c27fb2dd5de8c4ccda3489eddd0..faff675121dd1d0064376e0281bb357f78119097 100644 +index 6ed3b2803c22ddac4234d573cecbaa5991a320d9..f0d9c35062983b0308820feee621caf6e4a6648a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1909,4 +1909,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1914,4 +1914,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } // Paper end - notify observers even if grow failed @@ -46,7 +46,7 @@ index ea437adbb8a96c27fb2dd5de8c4ccda3489eddd0..faff675121dd1d0064376e0281bb357f + // 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 4ab6997dad5b112f5105f786a6cee78c6c5667e8..bbf19716d84a0d7e71a11559ef4f62590f2f367c 100644 +index 9ebe74e235d425fde985a6180857dc4039ecfedf..2c21888c477b93f38adaf18abe62732b08e1c9c2 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 { diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index fba12436a..e0712d2a0 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 c1d82f042da0628450cbbf4b45f6db7552ba268a..38bed7071513e9449d970ecfb628bd1ba37cd45f 100644 +index 667b560c5b414d174f265778038942e87d4451ef..9a790f72307e4e044a2ae9aded57025e3974c278 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4443,6 +4443,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4454,6 +4454,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch index 4b1d40c04..9f1226539 100644 --- a/patches/server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 38bed7071513e9449d970ecfb628bd1ba37cd45f..6651c11dfa81d4289637555f24c91f5f03a8c750 100644 +index 9a790f72307e4e044a2ae9aded57025e3974c278..efadee43018d6d22b11ed59169a89d91192af3cc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3149,7 +3149,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3153,7 +3153,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 38bed7071513e9449d970ecfb628bd1ba37cd45f..6651c11dfa81d4289637555f24c91f5f if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3858,7 +3858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3862,7 +3862,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch index 8dfcddde5..797a63e06 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0126-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6651c11dfa81d4289637555f24c91f5f03a8c750..fe793f51e9f81d14d6b2614c2da33f6d9e347fd2 100644 +index efadee43018d6d22b11ed59169a89d91192af3cc..2919e79d24eecb3114d1a32991e12c39ac88f6b8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1870,7 +1870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1874,7 +1874,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index 0143f85fd..703ca1256 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index e7b654c1991348a7f73ca8bc950d776e4e708779..487e4ab76e255e10369f7968d73d4195 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fe793f51e9f81d14d6b2614c2da33f6d9e347fd2..0647431984d263fcd90ca4273626973c44716734 100644 +index 2919e79d24eecb3114d1a32991e12c39ac88f6b8..07a9f53448e6adbb45d941a72759187fefe30313 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3146,12 +3146,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3150,12 +3150,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 03089f61f..da8844ca6 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0647431984d263fcd90ca4273626973c44716734..7ecc956aa2907090c9b0c9dcaf674330bb18f3d3 100644 +index 07a9f53448e6adbb45d941a72759187fefe30313..9c4c5aa169b4a9943a096ad84d0bd66fad15c55d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3395,7 +3395,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3399,7 +3399,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index 0647431984d263fcd90ca4273626973c44716734..7ecc956aa2907090c9b0c9dcaf674330 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5ac686c5d3fc20d55899eb7ffafa48c4130344cf..b320b4bc692efdd9f7efd4f3fa195bc26512cf66 100644 +index 4ba269d7c63a8e2df498a5ab7253c3a9fbc44103..385bc1cb2c1b00e80ecfcb0a59a24670407af5cd 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -438,7 +438,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0159-Gamemode-extra-permissions.patch b/patches/server/0159-Gamemode-extra-permissions.patch index b60266c46..b89c41997 100644 --- a/patches/server/0159-Gamemode-extra-permissions.patch +++ b/patches/server/0159-Gamemode-extra-permissions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index ff27787313a3337e29eac6f623b08f1f333f293c..e75a5caa06a1a92a7ab4c70b1d4ab512f645022d 100644 +index 2944b64e3dd5d413ccc12330118eb5248888e21f..288e3cf7d522232aeb40090537a55a2cf06d92e2 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -217,6 +217,19 @@ public class CommandSourceStack implements ExecutionCommandSource { - Block.popResource(world, pos, itemstack1); + Block.popResource(world, pos, applyDisplayNameAndLoreFromTile(itemstack1, blockEntity)); // Purpur }); - state.spawnAfterBreak((ServerLevel) world, pos, tool, true); + state.spawnAfterBreak((ServerLevel) world, pos, tool, dropExperience); // Paper } } diff --git a/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index fb5d948e2..766fcd703 100644 --- a/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -34,7 +34,7 @@ index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff990 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 0e06958657201806f425990ac01a5f8acc540f3e..32b121fc8b92ce6ff202b967b7d08f77a9a332f4 100644 +index 0e06958657201806f425990ac01a5f8acc540f3e..2dbfc522990964b2ae5a9e5f84426e0749f92563 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -44,17 +44,17 @@ index 0e06958657201806f425990ac01a5f8acc540f3e..32b121fc8b92ce6ff202b967b7d08f77 + + // Purpur start + @Override -+ public void playerDestroy(Level world, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @javax.annotation.Nullable net.minecraft.world.level.block.entity.BlockEntity blockEntity, ItemStack itemInHand, boolean includeDrops) { ++ public void playerDestroy(Level world, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @javax.annotation.Nullable net.minecraft.world.level.block.entity.BlockEntity blockEntity, ItemStack itemInHand, boolean includeDrops, boolean dropExp) { + if (world.purpurConfig.hoeReplantsCrops && itemInHand.getItem() instanceof net.minecraft.world.item.HoeItem) { + super.playerDestroyAndReplant(world, player, pos, state, blockEntity, itemInHand, getBaseSeedId()); + } else { -+ super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops); ++ super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops, dropExp); + } + } + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index 0fc333f240d6918e841a9221be42973839408802..7328764abb0790b389d396179db32f4a63bfe98a 100644 +index 0fc333f240d6918e841a9221be42973839408802..464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java @@ -68,4 +68,15 @@ public class NetherWartBlock extends BushBlock { @@ -64,11 +64,11 @@ index 0fc333f240d6918e841a9221be42973839408802..7328764abb0790b389d396179db32f4a + + // Purpur start + @Override -+ public void playerDestroy(net.minecraft.world.level.Level world, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @javax.annotation.Nullable net.minecraft.world.level.block.entity.BlockEntity blockEntity, ItemStack itemInHand, boolean includeDrops) { ++ public void playerDestroy(net.minecraft.world.level.Level world, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @javax.annotation.Nullable net.minecraft.world.level.block.entity.BlockEntity blockEntity, ItemStack itemInHand, boolean includeDrops, boolean dropExp) { + if (world.purpurConfig.hoeReplantsNetherWarts && itemInHand.getItem() instanceof net.minecraft.world.item.HoeItem) { + super.playerDestroyAndReplant(world, player, pos, state, blockEntity, itemInHand, Items.NETHER_WART); + } else { -+ super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops); ++ super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops, dropExp); + } + } + // Purpur end diff --git a/patches/server/0238-Allow-void-trading.patch b/patches/server/0238-Allow-void-trading.patch index d8887eb59..092dfebf1 100644 --- a/patches/server/0238-Allow-void-trading.patch +++ b/patches/server/0238-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9751b8b052cd47bc460207224aaf547b5d271411..2e457d9c2a65875419fcc8cfcda33cfe9b528640 100644 +index 603a13a1720123fd987b686d8d881d955d1bab08..fea3f6366606a15ed57c5b23bb4db274b3e26fd8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2929,7 +2929,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2930,7 +2930,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start diff --git a/patches/server/0265-Remove-Timings.patch b/patches/server/0265-Remove-Timings.patch index fe835ca0b..2d92ebb0c 100644 --- a/patches/server/0265-Remove-Timings.patch +++ b/patches/server/0265-Remove-Timings.patch @@ -236,7 +236,7 @@ index 434391fd88a5ef1013d4655f539361ac4227a501..a39105007dd3aa44cc035864b388618e @Override diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index da1dc26ce76cab20bb56d5a5d806410857f38ea6..dfec9e39877826699ac4b1208f060dc84857d3fb 100644 +index d84b99a8c15f35dc7fa70d250d3cb845b7851880..c0aef32f3669dd9ce3a5aa50c2ceeda06f614b00 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -547,15 +547,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -447,7 +447,7 @@ index 5cf74fe0214191d42e74fc104eba150a95894e0f..9f438b41b61ee1174d8f23bcb7d93380 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2e457d9c2a65875419fcc8cfcda33cfe9b528640..1ccdea0e7c64de5bcb7a6a6f14105cf62a211fd6 100644 +index fea3f6366606a15ed57c5b23bb4db274b3e26fd8..949f8b68ba6776dfed412c0d55e8642264262f7d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -872,7 +872,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -630,7 +630,7 @@ index 2e457d9c2a65875419fcc8cfcda33cfe9b528640..1ccdea0e7c64de5bcb7a6a6f14105cf6 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 22298bc61205b2da0a13a97144704d0dd1d33260..56f110d08fa24b26792f55b2ea062249b0f9643d 100644 +index 709e0c73178e02f181d2d5de8929a3ed7bcab2f9..a6a852ccfbe0a039937d9c453276a2ab23a76110 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2460,7 +2460,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -732,10 +732,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f47a00bbe6d9cfa15fc3a55a8953934ac12ca85f..54ceb622d9588ccd8df3cba849571aa3fdbb364a 100644 +index 23e2299c1e5b47129c63fbf89a14c1560b1cfeb5..6a7f03f08c8910215ac0e08363aa4c3d8b2f737c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1313,15 +1313,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1318,15 +1318,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -754,7 +754,7 @@ index f47a00bbe6d9cfa15fc3a55a8953934ac12ca85f..54ceb622d9588ccd8df3cba849571aa3 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1350,7 +1350,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1355,7 +1355,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -903,7 +903,7 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438daccf0e4f5fa 100644 +index e7c384a8bf16de5132245c24226fff22f5c38585..2b73e291e44987c4d63f2064091f7f8e28276b90 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -170,7 +170,7 @@ public class ActivationRange diff --git a/patches/server/0266-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch index 1336479fa..8b7a40ba0 100644 --- a/patches/server/0266-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Remove Mojang Profiler diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 428dd75450bdd5daf902a1fbaca7031a9bc585a8..c1202a56b560269e132eafd8bb12383473d4d33e 100644 +index eb8de6edea600be63934c4024142c97e7c669c99..2fd8940727e4f361c67114794233d4ddc6548dbb 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -165,7 +165,7 @@ public class Commands { @@ -17,7 +17,7 @@ index 428dd75450bdd5daf902a1fbaca7031a9bc585a8..c1202a56b560269e132eafd8bb123834 DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -341,9 +341,9 @@ public class Commands { +@@ -332,9 +332,9 @@ public class Commands { public void performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); @@ -29,7 +29,7 @@ index 428dd75450bdd5daf902a1fbaca7031a9bc585a8..c1202a56b560269e132eafd8bb123834 ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - make finishParsing not static try { -@@ -372,7 +372,7 @@ public class Commands { +@@ -363,7 +363,7 @@ public class Commands { Commands.LOGGER.error("'/{}' threw an exception", s, exception); } } finally { @@ -448,7 +448,7 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1df } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index dfec9e39877826699ac4b1208f060dc84857d3fb..cd55b5bbba17a60766c3302fd8cb94553fe3f929 100644 +index c0aef32f3669dd9ce3a5aa50c2ceeda06f614b00..2631c05a3855c71eff3f8cf8d13920430f929a13 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -545,20 +545,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -626,7 +626,7 @@ index 9f438b41b61ee1174d8f23bcb7d93380ad932e9c..c3c47857515a7f75d69c718f352d8bae } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ccdea0e7c64de5bcb7a6a6f14105cf62a211fd6..7912c26d27e9f143c34d63410155052cd00e0b8d 100644 +index 949f8b68ba6776dfed412c0d55e8642264262f7d..ac3e1d0f5b8def2bdace6f3b680ff9e929c515fb 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -830,16 +830,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1107,10 +1107,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f4d064c91 100644 +index 8cfba1af2f4ca7be42d997269187466c130de7b3..05f92d609a5d38b737093603a6831d6b7bcb8609 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -846,7 +846,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -850,7 +850,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { @@ -1119,7 +1119,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -907,7 +907,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -911,7 +911,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1128,7 +1128,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f } public void setSharedFlagOnFire(boolean onFire) { -@@ -1126,7 +1126,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1130,7 +1130,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1137,7 +1137,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1135,7 +1135,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1139,7 +1139,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1146,7 +1146,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f return; } // Paper end -@@ -1156,8 +1156,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1160,8 +1160,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1157,7 +1157,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1176,7 +1176,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1180,7 +1180,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1166,7 +1166,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1314,7 +1314,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1318,7 +1318,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1175,7 +1175,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f } } // Paper start - detailed watchdog information -@@ -3187,7 +3187,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3191,7 +3191,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1184,7 +1184,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3205,7 +3205,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3209,7 +3209,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper // CraftBukkit end @@ -1193,7 +1193,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f } this.isInsidePortal = false; -@@ -3680,14 +3680,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3684,14 +3684,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1210,7 +1210,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3726,7 +3726,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3730,7 +3730,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1219,7 +1219,7 @@ index 67ebbf6005cdef280d62e2150287f18699b2fe6a..386259c78d134814479427b0591f0c6f // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3753,10 +3753,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3757,10 +3757,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); @@ -1344,7 +1344,7 @@ index 6e7ed46a3a10a1ec69d0b69ee49be304760e419b..f9e035405c42fbe0a8c0dca2157798d6 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4328b688b8ef5d44d4ca5501e090c943e8d598b3..5fe8838b4512ba6676a5fe7f3ab412ff87f07667 100644 +index 5b8e981632894b81307fdcf550064bf1047d3ea9..c802c0807897a5c162223b47be1eef43f8b2d58e 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -367,13 +367,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1833,10 +1833,10 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..17abd085b3faf88e10a44a6c98af9968 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd13bc3dbf 100644 +index 6a7f03f08c8910215ac0e08363aa4c3d8b2f737c..2b5409e653be7d6b9c0529b512b2f7408b218011 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1310,9 +1310,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1315,9 +1315,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1848,7 +1848,7 @@ index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1353,7 +1353,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1358,7 +1358,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1857,7 +1857,7 @@ index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1563,7 +1563,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1568,7 +1568,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1866,7 +1866,7 @@ index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1582,7 +1582,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1587,7 +1587,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1875,7 +1875,7 @@ index 54ceb622d9588ccd8df3cba849571aa3fdbb364a..2bf34cf58f7de58b113e6f325d16b5bd // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1841,7 +1841,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1846,7 +1846,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0279-Configurable-block-fall-damage-modifiers.patch b/patches/server/0279-Configurable-block-fall-damage-modifiers.patch index 8473d33e1..be1f6ac75 100644 --- a/patches/server/0279-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0279-Configurable-block-fall-damage-modifiers.patch @@ -18,7 +18,7 @@ index ab11b017f0795f5ec8161a4831c463c780307eaa..8c6a8ab9e18bfbb015febea55e188ee9 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index f70d462a42e5f4b1951cf015234c3b383d90bc9b..9e32ca4a0f94627bbd4d3cedd5be93bfeb8115ee 100644 +index b1ca9c192645a31c7f2be6aa039ce642ea3e65a4..2376a305bd160e83e3e8684f50c55498e42fe0d9 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -96,6 +96,10 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -32,7 +32,7 @@ index f70d462a42e5f4b1951cf015234c3b383d90bc9b..9e32ca4a0f94627bbd4d3cedd5be93bf // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -513,7 +517,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -521,7 +525,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { diff --git a/patches/server/0285-Fire-Immunity-API.patch b/patches/server/0285-Fire-Immunity-API.patch index f40936298..745a79375 100644 --- a/patches/server/0285-Fire-Immunity-API.patch +++ b/patches/server/0285-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a99431a8335cf 100644 +index 05f92d609a5d38b737093603a6831d6b7bcb8609..7d0aee4be3a240df18b47c583581ad9c7af5fdb6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -422,6 +422,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -16,7 +16,7 @@ index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a9943 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1812,7 +1813,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1816,7 +1817,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a9943 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2504,6 +2505,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2508,6 +2509,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a9943 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2651,6 +2657,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2655,6 +2661,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,7 +50,7 @@ index 386259c78d134814479427b0591f0c6f4d064c91..8625f37ed94191a2b4dac593e67a9943 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index bfd8f6d85272f3ecbb0f7fc5fc92d2055205c0e0..deab17ae3deca2e49f6c3005048ad10e597d7329 100644 +index ea5ac1f53309fdd30aad40fd4a092f297d76fd61..315c9be5841d55910500fcc225b5e42f271cf2cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -83,6 +83,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index a4752d76d..34649b32b 100644 --- a/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8625f37ed94191a2b4dac593e67a99431a8335cf..a9d5a9b9bff5631f3f458fba7d88c3fc642416b8 100644 +index 7d0aee4be3a240df18b47c583581ad9c7af5fdb6..251b336c1915f173c975fd0c568dfb04182fc91b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -921,6 +921,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -925,6 +925,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/patches/server/0288-Log-skipped-entity-s-position.patch b/patches/server/0288-Log-skipped-entity-s-position.patch index 6d2a32222..cdac231c4 100644 --- a/patches/server/0288-Log-skipped-entity-s-position.patch +++ b/patches/server/0288-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index e5aa1bac908f947f2ed70a05194bf30b4cb55115..38845300ceb7092de4cd8e31ef8782728892f656 100644 +index b9aa6d6d22346a558fa84b4552958cdd6f977873..bab59399da0b515ad97918b824f9297b31c8de7c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -617,6 +617,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -623,6 +623,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch index 4f3034ed7..dff31886d 100644 --- a/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -53,7 +53,7 @@ index 89c0006c06098e0d09a259ea8415d55b997367aa..a476f9a1eaa99b557962947149b6ee6e + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index 7328764abb0790b389d396179db32f4a63bfe98a..9e47da91a5daed92b7326c84a88e619d2d981dd0 100644 +index 464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910..13eb4dffd60ea7902d620f484df5e3f2c4688402 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java @@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; @@ -66,7 +66,7 @@ index 7328764abb0790b389d396179db32f4a63bfe98a..9e47da91a5daed92b7326c84a88e619d public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; @@ -78,5 +78,22 @@ public class NetherWartBlock extends BushBlock { - super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops); + super.playerDestroy(world, player, pos, state, blockEntity, itemInHand, includeDrops, dropExp); } } + From 871ca99a80a6daa70b29813715771537a1db80a5 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 5 Jan 2024 11:55:10 +0000 Subject: [PATCH 037/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a58e29d Fix a borked update of 'Properly handle BlockBreakEvent#isDropItems' (#10134) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4947eae11..c9624ebca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 25a99b12e8b18d13f1e69d40f810f9c2d8f2b9c0 +paperCommit = a58e29db993120e8cb625b63ada06e2638ff2ac2 org.gradle.caching = true org.gradle.parallel = true From 3727300bd08e2013642d3c0f5f4cb385b0b98ff1 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 7 Jan 2024 00:02:25 +0000 Subject: [PATCH 038/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@570cfb4 Validate missed resource location parsing PaperMC/Paper@e46276e Fixup NamespacedKey parsing PaperMC/Paper@f1c5f01 [ci skip] Fix typo PaperMC/Paper@07b956e Fix tests by disabling them --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c9624ebca..18ba4d9db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = a58e29db993120e8cb625b63ada06e2638ff2ac2 +paperCommit = 07b956e3a30d9cd192111829b59bdf4372f128b1 org.gradle.caching = true org.gradle.parallel = true From d05e78bdb143883e03cb17df96fee1f05f60cada Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 7 Jan 2024 16:50:35 -0800 Subject: [PATCH 039/148] drop two config options in favor of PurpurExtras impl dropped options: - `mobs.snow_golem.drop-pumpkin-when-sheared` - `mobs.sheep.jeb-shear-random-color` --- ...37-Snowman-drop-and-put-back-pumpkin.patch | 22 +---- ...0049-Villagers-follow-emerald-blocks.patch | 10 +- .../0050-Allow-leashing-villagers.patch | 12 +-- .../0065-Configurable-jockey-options.patch | 14 +-- patches/server/0074-Squid-EAR-immunity.patch | 8 +- .../0076-Configurable-villager-breeding.patch | 6 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...sable-zombie-aggressiveness-towards-.patch | 6 +- patches/server/0094-Flying-squids-Oh-my.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 28 +++--- .../0109-Snow-Golem-rate-of-fire-config.patch | 12 +-- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 6 +- ...14-Configurable-default-collar-color.patch | 6 +- .../0118-Striders-give-saddle-back.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 24 ++--- ...oggle-for-water-sensitive-mob-damage.patch | 88 ++++++++--------- ...ither-Ender-Dragon-can-ride-vehicles.patch | 6 +- ...0145-Add-config-for-villager-trading.patch | 10 +- ...8-Config-for-wither-explosion-radius.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 6 +- ...0201-Toggle-for-Wither-s-spawn-sound.patch | 8 +- .../0204-Conduit-behavior-configuration.patch | 4 +- .../server/0205-Cauldron-fill-chances.patch | 4 +- ...ion-to-disable-zombie-villagers-cure.patch | 6 +- .../0225-Mobs-always-drop-experience.patch | 94 +++++++++---------- ...aring-jeb-produces-random-color-wool.patch | 39 -------- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0230-Mob-head-visibility-percent.patch} | 12 +-- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 42 ++++----- ...Stop-bees-from-dying-after-stinging.patch} | 2 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 0 ...onfigurable-farmland-trample-height.patch} | 2 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0237-Allow-void-trading.patch} | 2 +- ...h => 0238-Configurable-phantom-size.patch} | 2 +- ...> 0239-Configurable-food-attributes.patch} | 0 ....patch => 0240-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0242-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 2 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 4 +- ...=> 0246-Anvil-repair-damage-options.patch} | 2 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0251-Stonecutter-damage.patch} | 2 +- ...le-damage-settings-for-magma-blocks.patch} | 2 +- ...253-Add-config-for-snow-on-blue-ice.patch} | 2 +- ... => 0254-Skeletons-eat-wither-roses.patch} | 6 +- ...55-Enchantment-Table-Persists-Lapis.patch} | 2 +- ...ofiler.patch => 0256-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 2 +- ...=> 0259-Config-to-not-let-coral-die.patch} | 2 +- ...ch => 0260-Add-local-difficulty-api.patch} | 0 ...261-Add-toggle-for-RNG-manipulation.patch} | 4 +- ... 0262-Send-client-custom-name-of-BE.patch} | 0 ...=> 0263-Allow-custom-ChatDecorators.patch} | 0 ...imings.patch => 0264-Remove-Timings.patch} | 0 ...atch => 0265-Remove-Mojang-Profiler.patch} | 0 ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0267-Add-Bee-API.patch} | 0 ...-API.patch => 0268-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 2 +- ...70-Add-skeleton-bow-accuracy-option.patch} | 6 +- ...atch => 0271-Allay-respect-item-NBT.patch} | 2 +- ....patch => 0272-Add-death-screen-API.patch} | 0 ...-Make-pufferfish-config-relocatable.patch} | 0 ...4-Implement-ram-and-rambar-commands.patch} | 2 +- ...275-Add-item-packet-serialize-event.patch} | 2 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 2 +- ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0279-Language-API.patch} | 2 +- ... 0280-Milk-Keeps-Beneficial-Effects.patch} | 4 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0284-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 2 +- ...t.patch => 0286-Added-got-ram-event.patch} | 0 ... 0287-Log-skipped-entity-s-position.patch} | 0 ....patch => 0288-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0293-Add-PreExplodeEvents.patch} | 0 ...4-Improve-output-of-plugins-command.patch} | 0 ...atch => 0295-Add-mending-multiplier.patch} | 4 +- ....patch => 0296-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0297-Stored-Bee-API.patch} | 0 ...patch => 0298-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0299-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 2 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 2 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0303-place-end-crystal-on-any-block.patch} | 2 +- ...I.patch => 0304-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 2 +- 108 files changed, 302 insertions(+), 357 deletions(-) delete mode 100644 patches/server/0229-Shearing-jeb-produces-random-color-wool.patch rename patches/server/{0230-Turtle-eggs-random-tick-crack-chance.patch => 0229-Turtle-eggs-random-tick-crack-chance.patch} (91%) rename patches/server/{0231-Mob-head-visibility-percent.patch => 0230-Mob-head-visibility-percent.patch} (93%) rename patches/server/{0232-Configurable-valid-characters-for-usernames.patch => 0231-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0233-Shears-can-have-looting-enchantment.patch => 0232-Shears-can-have-looting-enchantment.patch} (91%) rename patches/server/{0234-Stop-bees-from-dying-after-stinging.patch => 0233-Stop-bees-from-dying-after-stinging.patch} (95%) rename patches/server/{0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (100%) rename patches/server/{0236-Configurable-farmland-trample-height.patch => 0235-Configurable-farmland-trample-height.patch} (97%) rename patches/server/{0237-Configurable-player-pickup-exp-delay.patch => 0236-Configurable-player-pickup-exp-delay.patch} (93%) rename patches/server/{0238-Allow-void-trading.patch => 0237-Allow-void-trading.patch} (96%) rename patches/server/{0239-Configurable-phantom-size.patch => 0238-Configurable-phantom-size.patch} (96%) rename patches/server/{0240-Configurable-food-attributes.patch => 0239-Configurable-food-attributes.patch} (100%) rename patches/server/{0241-Max-joins-per-second.patch => 0240-Max-joins-per-second.patch} (100%) rename patches/server/{0242-Configurable-minimum-demand-for-trades.patch => 0241-Configurable-minimum-demand-for-trades.patch} (93%) rename patches/server/{0243-Lobotomize-stuck-villagers.patch => 0242-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0244-Option-for-villager-display-trade-item.patch => 0243-Option-for-villager-display-trade-item.patch} (91%) rename patches/server/{0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (95%) rename patches/server/{0246-Config-for-mob-last-hurt-by-player-time.patch => 0245-Config-for-mob-last-hurt-by-player-time.patch} (95%) rename patches/server/{0247-Anvil-repair-damage-options.patch => 0246-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (93%) rename patches/server/{0249-Add-toggle-for-enchant-level-clamping.patch => 0248-Add-toggle-for-enchant-level-clamping.patch} (97%) rename patches/server/{0250-Skip-junit-tests-for-purpur-commands.patch => 0249-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0251-Implement-configurable-search-radius-for-villagers-t.patch => 0250-Implement-configurable-search-radius-for-villagers-t.patch} (92%) rename patches/server/{0252-Stonecutter-damage.patch => 0251-Stonecutter-damage.patch} (98%) rename patches/server/{0253-Configurable-damage-settings-for-magma-blocks.patch => 0252-Configurable-damage-settings-for-magma-blocks.patch} (96%) rename patches/server/{0254-Add-config-for-snow-on-blue-ice.patch => 0253-Add-config-for-snow-on-blue-ice.patch} (95%) rename patches/server/{0255-Skeletons-eat-wither-roses.patch => 0254-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0256-Enchantment-Table-Persists-Lapis.patch => 0255-Enchantment-Table-Persists-Lapis.patch} (98%) rename patches/server/{0257-Spark-Profiler.patch => 0256-Spark-Profiler.patch} (100%) rename patches/server/{0258-Option-to-disable-kick-for-out-of-order-chat.patch => 0257-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0259-Config-for-sculk-shrieker-can_summon-state.patch => 0258-Config-for-sculk-shrieker-can_summon-state.patch} (95%) rename patches/server/{0260-Config-to-not-let-coral-die.patch => 0259-Config-to-not-let-coral-die.patch} (96%) rename patches/server/{0261-Add-local-difficulty-api.patch => 0260-Add-local-difficulty-api.patch} (100%) rename patches/server/{0262-Add-toggle-for-RNG-manipulation.patch => 0261-Add-toggle-for-RNG-manipulation.patch} (93%) rename patches/server/{0263-Send-client-custom-name-of-BE.patch => 0262-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0264-Allow-custom-ChatDecorators.patch => 0263-Allow-custom-ChatDecorators.patch} (100%) rename patches/server/{0265-Remove-Timings.patch => 0264-Remove-Timings.patch} (100%) rename patches/server/{0266-Remove-Mojang-Profiler.patch => 0265-Remove-Mojang-Profiler.patch} (100%) rename patches/server/{0267-Add-more-logger-output-for-invalid-movement-kicks.patch => 0266-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0268-Add-Bee-API.patch => 0267-Add-Bee-API.patch} (100%) rename patches/server/{0269-Debug-Marker-API.patch => 0268-Debug-Marker-API.patch} (100%) rename patches/server/{0270-mob-spawning-option-to-ignore-creative-players.patch => 0269-mob-spawning-option-to-ignore-creative-players.patch} (96%) rename patches/server/{0271-Add-skeleton-bow-accuracy-option.patch => 0270-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0272-Allay-respect-item-NBT.patch => 0271-Allay-respect-item-NBT.patch} (96%) rename patches/server/{0273-Add-death-screen-API.patch => 0272-Add-death-screen-API.patch} (100%) rename patches/server/{0274-Make-pufferfish-config-relocatable.patch => 0273-Make-pufferfish-config-relocatable.patch} (100%) rename patches/server/{0275-Implement-ram-and-rambar-commands.patch => 0274-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0276-Add-item-packet-serialize-event.patch => 0275-Add-item-packet-serialize-event.patch} (97%) rename patches/server/{0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0278-Configurable-block-blast-resistance.patch => 0277-Configurable-block-blast-resistance.patch} (96%) rename patches/server/{0279-Configurable-block-fall-damage-modifiers.patch => 0278-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0280-Language-API.patch => 0279-Language-API.patch} (93%) rename patches/server/{0281-Milk-Keeps-Beneficial-Effects.patch => 0280-Milk-Keeps-Beneficial-Effects.patch} (95%) rename patches/server/{0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0283-Add-log-suppression-for-LibraryLoader.patch => 0282-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0285-Fire-Immunity-API.patch => 0284-Fire-Immunity-API.patch} (100%) rename patches/server/{0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (96%) rename patches/server/{0287-Added-got-ram-event.patch => 0286-Added-got-ram-event.patch} (100%) rename patches/server/{0288-Log-skipped-entity-s-position.patch => 0287-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0289-End-Crystal-Cramming.patch => 0288-End-Crystal-Cramming.patch} (96%) rename patches/server/{0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0291-Add-attribute-clamping-and-armor-limit-config.patch => 0290-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0292-Config-to-remove-explosion-radius-clamp.patch => 0291-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0293-bonemealable-sugarcane-cactus-and-netherwart.patch => 0292-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0294-Add-PreExplodeEvents.patch => 0293-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0295-Improve-output-of-plugins-command.patch => 0294-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0296-Add-mending-multiplier.patch => 0295-Add-mending-multiplier.patch} (92%) rename patches/server/{0297-Make-GUI-Great-Again.patch => 0296-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0298-Stored-Bee-API.patch => 0297-Stored-Bee-API.patch} (100%) rename patches/server/{0299-Shears-can-defuse-TNT.patch => 0298-Shears-can-defuse-TNT.patch} (95%) rename patches/server/{0300-Explorer-Map-API.patch => 0299-Explorer-Map-API.patch} (100%) rename patches/server/{0301-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0300-Option-Ocelot-Spawn-Under-Sea-Level.patch} (95%) rename patches/server/{0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (97%) rename patches/server/{0303-Add-option-for-always-showing-item-in-player-death-m.patch => 0302-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0304-place-end-crystal-on-any-block.patch => 0303-place-end-crystal-on-any-block.patch} (96%) rename patches/server/{0305-Add-hover-lines-API.patch => 0304-Add-hover-lines-API.patch} (100%) rename patches/server/{0306-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0305-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) diff --git a/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch index 067b91ce9..ba60b2b3c 100644 --- a/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Snowman drop and put back pumpkin diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 0c128449fbe51aa7e437568ba4bc857c1175df2b..9c8efa5dcd4ec78a4e071d6b06871d09b93a531d 100644 +index 0c128449fbe51aa7e437568ba4bc857c1175df2b..cf68f12da22cb9b0980c21e90caf4dea62769fa5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -198,6 +198,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -23,36 +23,22 @@ index 0c128449fbe51aa7e437568ba4bc857c1175df2b..9c8efa5dcd4ec78a4e071d6b06871d09 } else { return tryRide(player, hand); // Purpur } -@@ -211,6 +219,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - - @Override - public java.util.List generateDefaultDrops() { -+ // Purpur start -+ if (!level().purpurConfig.snowGolemDropsPumpkin) { -+ return Shearable.super.generateDefaultDrops(0); -+ } -+ // Purpur end - return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); - } - diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 05b7788d168cadb594613d81cbff0726a63d81d2..a48dbad212789f90525e669ea81b1042c53cd06a 100644 +index 05b7788d168cadb594613d81cbff0726a63d81d2..f63849ddb622633da41c38c7cbc03f0061acf139 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1176,6 +1176,8 @@ public class PurpurWorldConfig { +@@ -1176,6 +1176,7 @@ public class PurpurWorldConfig { public boolean snowGolemControllable = true; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; -+ public boolean snowGolemDropsPumpkin = true; + public boolean snowGolemPutPumpkinBack = false; private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1187,6 +1189,8 @@ public class PurpurWorldConfig { +@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); -+ snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); + snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); } diff --git a/patches/server/0049-Villagers-follow-emerald-blocks.patch b/patches/server/0049-Villagers-follow-emerald-blocks.patch index 9dde72e1a..2e0d03b97 100644 --- a/patches/server/0049-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0049-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index 731bf43e2685554174d7ff295b5561ecf9dd70fa..64dd35573db3feae6507fc05086ed08c this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 511cec787f2fb9e4985ffcfb13b1352a2c789fee..92a3e3c87ef30b9ba55b3a671f35209db6018631 100644 +index edbe9c93d03d3811e536d1a079e7b3511569ffa7..431fa9e522662b506c82fbe7e0266e5662ad91cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1437,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1435,7 @@ public class PurpurWorldConfig { public boolean villagerRidableInWater = true; public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; @@ -65,7 +65,7 @@ index 511cec787f2fb9e4985ffcfb13b1352a2c789fee..92a3e3c87ef30b9ba55b3a671f35209d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1447,6 +1448,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); @@ -73,7 +73,7 @@ index 511cec787f2fb9e4985ffcfb13b1352a2c789fee..92a3e3c87ef30b9ba55b3a671f35209d } public boolean vindicatorRidable = false; -@@ -1469,6 +1471,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1469,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = true; public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index 511cec787f2fb9e4985ffcfb13b1352a2c789fee..92a3e3c87ef30b9ba55b3a671f35209d private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1479,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1480,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0050-Allow-leashing-villagers.patch b/patches/server/0050-Allow-leashing-villagers.patch index bc92d459f..c84bc7b6f 100644 --- a/patches/server/0050-Allow-leashing-villagers.patch +++ b/patches/server/0050-Allow-leashing-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 05eecaf3147051c44f9c4abce178c3126385c825..c77da33c38ddb9a383cb39e8a8837e67cf545bda 100644 +index f17b7e83a04a2cd738f7d708891fec2e341f3f96..a36994947d3a4f06f102bb143e44d0d7510f8338 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1317,6 +1317,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -49,10 +49,10 @@ index 64dd35573db3feae6507fc05086ed08c60f5ea01..ad7a32169b0decad1d3a2bd98e25b077 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92a3e3c87ef30b9ba55b3a671f35209db6018631..5ac666f1a71770891b3b437b2d68b0c5a952358f 100644 +index 431fa9e522662b506c82fbe7e0266e5662ad91cc..40a0cd68b1e35894360f0edc45bc30a5bd47622f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1438,6 +1438,7 @@ public class PurpurWorldConfig { +@@ -1436,6 +1436,7 @@ public class PurpurWorldConfig { public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index 92a3e3c87ef30b9ba55b3a671f35209db6018631..5ac666f1a71770891b3b437b2d68b0c5 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1449,6 +1450,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1448,7 @@ public class PurpurWorldConfig { } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index 92a3e3c87ef30b9ba55b3a671f35209db6018631..5ac666f1a71770891b3b437b2d68b0c5 } public boolean vindicatorRidable = false; -@@ -1472,6 +1474,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1472,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index 92a3e3c87ef30b9ba55b3a671f35209db6018631..5ac666f1a71770891b3b437b2d68b0c5 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1483,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1484,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0065-Configurable-jockey-options.patch b/patches/server/0065-Configurable-jockey-options.patch index 91a153816..5544f83cf 100644 --- a/patches/server/0065-Configurable-jockey-options.patch +++ b/patches/server/0065-Configurable-jockey-options.patch @@ -167,7 +167,7 @@ index fa5fa58ee03243054a38475634a6aa67815ca77d..764477c39e690d6373e17c7768780941 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 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738a78a0d35 100644 +index b5599360a524a55183b3a21f822b5cb24f59dc67..5c83d5b665bfccd7c54c18012d4bec7d975de3f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -588,6 +588,9 @@ public class PurpurWorldConfig { @@ -210,7 +210,7 @@ index 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 } public boolean illusionerRidable = false; -@@ -1676,6 +1688,9 @@ public class PurpurWorldConfig { +@@ -1674,6 +1686,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1687,6 +1702,9 @@ public class PurpurWorldConfig { +@@ -1685,6 +1700,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 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 } public boolean zombieHorseRidable = false; -@@ -1723,6 +1741,9 @@ public class PurpurWorldConfig { +@@ -1721,6 +1739,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1734,6 +1755,9 @@ public class PurpurWorldConfig { +@@ -1732,6 +1753,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 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 } public boolean zombifiedPiglinRidable = false; -@@ -1741,6 +1765,9 @@ public class PurpurWorldConfig { +@@ -1739,6 +1763,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index 6d46b1682a7c0b8c638a047177ff99ee8c47de9c..5fd4129889b3006018612204bc527738 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1752,5 +1779,8 @@ public class PurpurWorldConfig { +@@ -1750,5 +1777,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch index 6b0852511..247da5700 100644 --- a/patches/server/0074-Squid-EAR-immunity.patch +++ b/patches/server/0074-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d7726bd54781e922f9d2b5b1fea510d6295919e..3557d668d5117aaaef2fde0792b58c7e58546c22 100644 +index e813fa037ca17bec29db916eac882cbfab432e56..c87c7feb140864771cbef3dcee1f89319c9a1f83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1453,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 3d7726bd54781e922f9d2b5b1fea510d6295919e..3557d668d5117aaaef2fde0792b58c7e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1464,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1463,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); @@ -25,7 +25,7 @@ index 3d7726bd54781e922f9d2b5b1fea510d6295919e..3557d668d5117aaaef2fde0792b58c7e public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 282a57df4e2e5708e9cfd9c76b1d7de2a8a23900..a7ecbd77d0017a298b94cceeddc049eff713f60f 100644 +index 08b266efbefc45e9b08b2c03a36441a8c7564197..e7c384a8bf16de5132245c24226fff22f5c38585 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch index adbfde3fc..e27c64bf1 100644 --- a/patches/server/0076-Configurable-villager-breeding.patch +++ b/patches/server/0076-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index f4ed6ae7e8f122a0a2ce7f4488b0fe1ed0c7da3d..ce450d4b0d42443a47861dcb54b78a01 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81dd8666fd997f92972da2c6980c6ce515582fbc..51dd20665e5cdf1e76a63367d75890d4ae8f55b6 100644 +index a0477b47563214152483423121523f836827306b..3decdb56a21e7be052ef9386f2059e912738d4be 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1613,6 +1613,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 81dd8666fd997f92972da2c6980c6ce515582fbc..51dd20665e5cdf1e76a63367d75890d4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1625,6 +1626,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1624,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch index e13a7f214..150c48ba7 100644 --- a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,10 @@ index fece613e9c182c6658f9df1d333a5b7e1e862218..a3db9c351b9cb06340458811c006d537 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 538c6f1cec00ef0ce8e793a5d205875d2d9aac92..7bcba65dfaa0076c5ce9271a5f54d01a99025242 100644 +index 65c365cd330b8865f0aeb7781a8995cbfea62f18..ac14ad278466dca95ad012c0b064b5bb470d06c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1640,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1638,6 +1638,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index 538c6f1cec00ef0ce8e793a5d205875d2d9aac92..7bcba65dfaa0076c5ce9271a5f54d01a private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1650,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1648,6 +1649,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index e0712d2a0..721bcc6d2 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index 67d595f75e0c3bffdb27b85b25ccd1f0bf1427d5..4d0c524af87d05dbd4a923ad6c40e1f2 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index afc67803bf71d26e84f9130c30ac2b1b3d1114bf..d6b6d112da049e26ee867d81e37baa8f7bd4cda0 100644 +index 4218ebd3aa75c7290f1f8bb6ebd357ae3faf53f1..cb1d95f6f786df7a8825016b70c3c6b718f60358 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1480,6 +1480,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1478,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index afc67803bf71d26e84f9130c30ac2b1b3d1114bf..d6b6d112da049e26ee867d81e37baa8f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1490,6 +1491,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1489,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch index a91f56f2e..9aa0c4d37 100644 --- a/patches/server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 29957114850eb897b54997dcad0753e0c895ce6e..93cf322ea4943fea127dc89eed900a2c 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 6b45e9aa4575892005765af9e202c61f50d4b1b6..7eb0e5512a2aa78e7dca727384656781760d57c0 100644 +index 4ffd1263f48a426e5f7a79fd266a0f445975dc2e..6b7602954de34a114893e49e8f93665ba30ed494 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1719,6 +1719,8 @@ public class PurpurWorldConfig { +@@ -1717,6 +1717,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 6b45e9aa4575892005765af9e202c61f50d4b1b6..7eb0e5512a2aa78e7dca727384656781 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1734,6 +1736,8 @@ public class PurpurWorldConfig { +@@ -1732,6 +1734,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch index a981b1550..ab1c0a096 100644 --- a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index 52f2d2df03314c8ddf70b240dca82cafa44c6b07..624e4007f031b5781e34f4cb6614e8c7 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 ba055361b27c83fd27e5347c26752e8f88d35793..37794c0863bda3d5cc24cc2e4c512d433eb4ef9b 100644 +index 79ba22306cde4e5b6a119cb81d8029d828da7bbe..6950c4f5b1b0fd203c9b7adf92d13a321a8c5af1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { +@@ -1850,6 +1850,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index ba055361b27c83fd27e5347c26752e8f88d35793..37794c0863bda3d5cc24cc2e4c512d43 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1866,6 +1867,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1865,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch index 01bca2a2b..d5a73b2e0 100644 --- a/patches/server/0094-Flying-squids-Oh-my.patch +++ b/patches/server/0094-Flying-squids-Oh-my.patch @@ -58,7 +58,7 @@ index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0 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 37794c0863bda3d5cc24cc2e4c512d433eb4ef9b..8af34a04370ebb0b62137387c7eb082443f68c5b 100644 +index 6950c4f5b1b0fd203c9b7adf92d13a321a8c5af1..de43787965c6d45d398be47988fba31dc12e7032 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -902,10 +902,12 @@ public class PurpurWorldConfig { @@ -74,7 +74,7 @@ index 37794c0863bda3d5cc24cc2e4c512d433eb4ef9b..8af34a04370ebb0b62137387c7eb0824 } public boolean goatRidable = false; -@@ -1539,6 +1541,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1539,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 37794c0863bda3d5cc24cc2e4c512d433eb4ef9b..8af34a04370ebb0b62137387c7eb0824 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1550,6 +1553,7 @@ public class PurpurWorldConfig { +@@ -1548,6 +1551,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 6c76b2474..787dcc604 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -140,7 +140,7 @@ index 88e26b2653eac1898f266b7c8f9f6e0fba422a52..fdab9a9ad76a0ad8f83ddbff27809663 this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index f27ca76b153dc33d20dc46a57f1dda4e91e82883..09fc3c6ddf99854d43b6577b4d2d74665f32dfa3 100644 +index c58b3ff4e7e5dba4543a77c2c4d9bad3911fba98..db0170fb22ee8424c29fc0d4f3c93c9eac79611c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -85,6 +85,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder -Date: Fri, 31 Dec 2021 06:03:12 -0600 -Subject: [PATCH] Shearing jeb produces random color wool - - -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 ae2662a5cdc4e531e09876ff8664eaf66a63a960..4d28cb60f8fa816205699a66a7667358e13c6a01 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java -+++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -327,7 +327,7 @@ public class Sheep extends Animal implements Shearable { - int count = 1 + this.random.nextInt(3); - java.util.List dropEntities = new java.util.ArrayList<>(count); - for (int j = 0; j < count; ++j) { -- dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); -+ dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()))); - } - return dropEntities; - } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 476545737acdb0da8e5f5def12164c7f83cbaa80..375d1deef92f935d8f32166e3a17a84370ad1dcd 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2368,6 +2368,7 @@ public class PurpurWorldConfig { - public boolean sheepBypassMobGriefing = false; - public boolean sheepTakeDamageFromWater = false; - public boolean sheepAlwaysDropExp = false; -+ public boolean sheepShearJebRandomColor = false; - private void sheepSettings() { - sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); - sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2382,6 +2383,7 @@ public class PurpurWorldConfig { - sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); - sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); - sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); -+ sheepShearJebRandomColor = getBoolean("mobs.sheep.jeb-shear-random-color", sheepShearJebRandomColor); - } - - public boolean shulkerRidable = false; diff --git a/patches/server/0230-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch similarity index 91% rename from patches/server/0230-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch index 7f835ee82..9d7b81406 100644 --- a/patches/server/0230-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 44bb9930313cae9d150cc08cbdcced10a35bd07d..9756c84e073d9e99ade0ee94c586b8e0fa426138 100644 +index 189cec37228f88c97e1994c40c44461a3321df8b..1099ce368c95ec293b8e6349ee545d3256e93ac3 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -169,7 +169,7 @@ public class TurtleEggBlock extends Block { @@ -18,7 +18,7 @@ index 44bb9930313cae9d150cc08cbdcced10a35bd07d..9756c84e073d9e99ade0ee94c586b8e0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 375d1deef92f935d8f32166e3a17a84370ad1dcd..d31aa9b30124832fbc010299b8a24c67624ac6f3 100644 +index 1b1f249659d3d6f80d442439b05dcc88eefd5841..38548885da9d34148589ae0502f0aea7f3faf46e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1076,11 +1076,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0231-Mob-head-visibility-percent.patch b/patches/server/0230-Mob-head-visibility-percent.patch similarity index 93% rename from patches/server/0231-Mob-head-visibility-percent.patch rename to patches/server/0230-Mob-head-visibility-percent.patch index a02d6c88b..fdc902115 100644 --- a/patches/server/0231-Mob-head-visibility-percent.patch +++ b/patches/server/0230-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2cefad6730dbd50e41917af287c041a13d81ba2e..fc5dfbeae6bf9256e98eae774ccd77111d3ba280 100644 +index ef739e34184bbaca4a4eb8314357772934b4a065..19529564457dfb0d0a3231341b1a57b72a415d54 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1039,9 +1039,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,7 +32,7 @@ index 2cefad6730dbd50e41917af287c041a13d81ba2e..fc5dfbeae6bf9256e98eae774ccd7711 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d943ba25b 100644 +index 38548885da9d34148589ae0502f0aea7f3faf46e..c793c0c91f7ef6d5e847fd10a908fee09208bc12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { @@ -67,7 +67,7 @@ index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d } public boolean piglinBruteRidable = false; -@@ -2448,6 +2452,7 @@ public class PurpurWorldConfig { +@@ -2446,6 +2450,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2460,6 +2465,7 @@ public class PurpurWorldConfig { +@@ -2458,6 +2463,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d } public boolean skeletonHorseRidable = false; -@@ -2996,6 +3002,7 @@ public class PurpurWorldConfig { +@@ -2992,6 +2998,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index d31aa9b30124832fbc010299b8a24c67624ac6f3..3760848e35ce82a546fb406ed383be8d private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3014,6 +3021,7 @@ public class PurpurWorldConfig { +@@ -3010,6 +3017,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0232-Configurable-valid-characters-for-usernames.patch b/patches/server/0231-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0232-Configurable-valid-characters-for-usernames.patch rename to patches/server/0231-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0233-Shears-can-have-looting-enchantment.patch b/patches/server/0232-Shears-can-have-looting-enchantment.patch similarity index 91% rename from patches/server/0233-Shears-can-have-looting-enchantment.patch rename to patches/server/0232-Shears-can-have-looting-enchantment.patch index 51cbd9812..3c2e41e90 100644 --- a/patches/server/0233-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0232-Shears-can-have-looting-enchantment.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index ec43e8294d7e7112478a2fc1475f0852690a4882..2f1bd058543af6a7a0b3d94ab0fc9627b4e0da49 100644 +index 887e75c940ab5089f4e42e4553ab95adf172df46..8db955ae0c7eb6f1e53701d9199798e6412e6c69 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java @@ -104,7 +104,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { @@ -13,12 +13,12 @@ index ec43e8294d7e7112478a2fc1475f0852690a4882..2f1bd058543af6a7a0b3d94ab0fc9627 // CraftBukkit start // Paper start - org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops()); -+ org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, CraftItemStack.asNMSCopy(craftItem)))); ++ org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, CraftItemStack.asNMSCopy(craftItem)))); // Purpur if (event.isCancelled()) { // Paper end continue; diff --git a/src/main/java/net/minecraft/world/entity/Shearable.java b/src/main/java/net/minecraft/world/entity/Shearable.java -index 4921d1b2ff9112374477c5c9b4a68cc75a51dbf8..40716d46a2d9c1b3b13e92995e6441d83bdd2396 100644 +index 4921d1b2ff9112374477c5c9b4a68cc75a51dbf8..7070ed31869855f5dd911fbe95142fa97b2dc45d 100644 --- a/src/main/java/net/minecraft/world/entity/Shearable.java +++ b/src/main/java/net/minecraft/world/entity/Shearable.java @@ -8,7 +8,7 @@ public interface Shearable { @@ -26,12 +26,12 @@ index 4921d1b2ff9112374477c5c9b4a68cc75a51dbf8..40716d46a2d9c1b3b13e92995e6441d8 boolean readyForShearing(); // Paper start - ensure all implementing entities override this - default java.util.List generateDefaultDrops() { -+ default java.util.List generateDefaultDrops(int looting) { ++ default java.util.List generateDefaultDrops(int looting) { // Purpur return java.util.Collections.emptyList(); } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 5d75e715a2edac73350cd74e2a5184e7fccbad53..9ac87800d1d15ae3431caaf4e86d4fe10e105972 100644 +index 5d75e715a2edac73350cd74e2a5184e7fccbad53..4a520ff6ce7f6011838430b3972e99b8b916db7e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -160,7 +160,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder drops = this.generateDefaultDrops(); -+ List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); ++ List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -56,12 +56,12 @@ index 5d75e715a2edac73350cd74e2a5184e7fccbad53..9ac87800d1d15ae3431caaf4e86d4fe1 + public List generateDefaultDrops(int looting) { // Purpur List dropEntities = new java.util.ArrayList<>(5); - for (int i = 0; i < 5; ++i) { -+ for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { ++ for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { // Purpur dropEntities.add(new ItemStack(this.getVariant().getBlockState().getBlock())); } return dropEntities; 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 4d28cb60f8fa816205699a66a7667358e13c6a01..e2f29a1bf72e4a8785397318f159aae8059ac4ed 100644 +index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc095259d12e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -292,7 +292,7 @@ public class Sheep extends Animal implements Shearable { @@ -69,7 +69,7 @@ index 4d28cb60f8fa816205699a66a7667358e13c6a01..e2f29a1bf72e4a8785397318f159aae8 // CraftBukkit start // Paper start - custom shear drops - java.util.List drops = this.generateDefaultDrops(); -+ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -78,19 +78,19 @@ index 4d28cb60f8fa816205699a66a7667358e13c6a01..e2f29a1bf72e4a8785397318f159aae8 public void shear(SoundSource shearedSoundCategory) { // Paper start - custom shear drops - this.shear(shearedSoundCategory, this.generateDefaultDrops()); -+ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); ++ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); // Purpur } @Override - public java.util.List generateDefaultDrops() { -+ public java.util.List generateDefaultDrops(int looting) { ++ public java.util.List generateDefaultDrops(int looting) { // Purpur int count = 1 + this.random.nextInt(3); + if (org.purpurmc.purpur.PurpurConfig.allowShearsLooting) count += looting; // Purpur java.util.List dropEntities = new java.util.ArrayList<>(count); for (int j = 0; j < count; ++j) { - dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()))); + dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 8a0327a870a22def6538bb56df2f2fd384449928..58e101a3963be08c21e6d8c80731d45c0883be8d 100644 +index c11ae706f85119d8dd5ac48e6fd585540779814c..c30b00e5637d3def256c93cc227a15ddaf99bc56 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -196,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -98,25 +98,22 @@ index 8a0327a870a22def6538bb56df2f2fd384449928..58e101a3963be08c21e6d8c80731d45c // CraftBukkit start // Paper start - custom shear drops - java.util.List drops = this.generateDefaultDrops(); -+ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { -@@ -231,15 +231,22 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -231,11 +231,20 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public void shear(SoundSource shearedSoundCategory) { // Paper start - custom shear drops - this.shear(shearedSoundCategory, this.generateDefaultDrops()); -+ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); ++ this.shear(shearedSoundCategory, this.generateDefaultDrops(0)); // Purpur } @Override - public java.util.List generateDefaultDrops() { -+ public java.util.List generateDefaultDrops(int looting) { // Purpur - // Purpur start - if (!level().purpurConfig.snowGolemDropsPumpkin) { - return Shearable.super.generateDefaultDrops(0); - } ++ // Purpur start ++ public java.util.List generateDefaultDrops(int looting) { + if (org.purpurmc.purpur.PurpurConfig.allowShearsLooting) { + java.util.ArrayList list = new java.util.ArrayList<>(); + for (int i = 0; i < 1 + looting; i++) { @@ -124,9 +121,10 @@ index 8a0327a870a22def6538bb56df2f2fd384449928..58e101a3963be08c21e6d8c80731d45c + } + return java.util.Collections.unmodifiableList(list); + } - // Purpur end ++ // Purpur end return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); } + diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java index 859435f747ceef860cb4e9e825a7353ea3b90798..fc2c35f57436371cb0111aedfd289ac95d506d07 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java diff --git a/patches/server/0234-Stop-bees-from-dying-after-stinging.patch b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch similarity index 95% rename from patches/server/0234-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0233-Stop-bees-from-dying-after-stinging.patch index e14cbbdc8..ab2526aff 100644 --- a/patches/server/0234-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch @@ -17,7 +17,7 @@ index 6d7b8c9f9bfe296263f1752f485dcf8f53af8142..0a4ca865d1e41efca0eb8287c833e642 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3760848e35ce82a546fb406ed383be8d943ba25b..62c916dbb715192e9ec56df95672f070e14aea4c 100644 +index c793c0c91f7ef6d5e847fd10a908fee09208bc12..a3ec794d6690574bac653321301668aba420a967 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1171,6 +1171,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0235-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0236-Configurable-farmland-trample-height.patch b/patches/server/0235-Configurable-farmland-trample-height.patch similarity index 97% rename from patches/server/0236-Configurable-farmland-trample-height.patch rename to patches/server/0235-Configurable-farmland-trample-height.patch index 11c7214d4..78ca9e291 100644 --- a/patches/server/0236-Configurable-farmland-trample-height.patch +++ b/patches/server/0235-Configurable-farmland-trample-height.patch @@ -35,7 +35,7 @@ index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62c916dbb715192e9ec56df95672f070e14aea4c..2f381b23c4193e324ebf04e96f98ae16f457120a 100644 +index a3ec794d6690574bac653321301668aba420a967..63c29714c855f95f62ecdf19b1502881699206c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -959,6 +959,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0237-Configurable-player-pickup-exp-delay.patch b/patches/server/0236-Configurable-player-pickup-exp-delay.patch similarity index 93% rename from patches/server/0237-Configurable-player-pickup-exp-delay.patch rename to patches/server/0236-Configurable-player-pickup-exp-delay.patch index 8968d9284..e6679b855 100644 --- a/patches/server/0237-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0236-Configurable-player-pickup-exp-delay.patch @@ -9,7 +9,7 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 5450058d23f1ab20689183bd284b01fc93628db5..a3ef8e6a698df4c78e0494da48063ddd29caf62f 100644 +index 3a84ea755d33bb882e0f0dace221a2c2246f952c..01f375047998cb68b3ec704aef9f050c9f0630dc 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -313,7 +313,7 @@ public class ExperienceOrb extends Entity { @@ -22,7 +22,7 @@ index 5450058d23f1ab20689183bd284b01fc93628db5..a3ef8e6a698df4c78e0494da48063ddd int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index fab644c79287a444fd58c43547beba3e06e9e7ff..f1fe8a0c1ff1514d9a158e18dc6d234d54388573 100644 +index db3afaf25b1991a257bd2d5036527f4cb00c5040..738aca99196c5b88ed5d561d410964c71625578d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -631,7 +631,7 @@ public abstract class Player extends LivingEntity { @@ -35,7 +35,7 @@ index fab644c79287a444fd58c43547beba3e06e9e7ff..f1fe8a0c1ff1514d9a158e18dc6d234d } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f381b23c4193e324ebf04e96f98ae16f457120a..9ef10d9fad3a2b8a9ff067cb4ee882d17aa16a00 100644 +index 63c29714c855f95f62ecdf19b1502881699206c9..a9dba090d637c5942d09ffc4698e3397a137a7ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -420,6 +420,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0238-Allow-void-trading.patch b/patches/server/0237-Allow-void-trading.patch similarity index 96% rename from patches/server/0238-Allow-void-trading.patch rename to patches/server/0237-Allow-void-trading.patch index 092dfebf1..106e50c41 100644 --- a/patches/server/0238-Allow-void-trading.patch +++ b/patches/server/0237-Allow-void-trading.patch @@ -18,7 +18,7 @@ index 603a13a1720123fd987b686d8d881d955d1bab08..fea3f6366606a15ed57c5b23bb4db274 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ef10d9fad3a2b8a9ff067cb4ee882d17aa16a00..adc30acd3cead8f557f1016ed5e05edbf2857200 100644 +index a9dba090d637c5942d09ffc4698e3397a137a7ac..09cac0ae130610fd1ce50eb092fe758cfe71a4dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -421,6 +421,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0239-Configurable-phantom-size.patch b/patches/server/0238-Configurable-phantom-size.patch similarity index 96% rename from patches/server/0239-Configurable-phantom-size.patch rename to patches/server/0238-Configurable-phantom-size.patch index 42cd9b62e..b3b5ca710 100644 --- a/patches/server/0239-Configurable-phantom-size.patch +++ b/patches/server/0238-Configurable-phantom-size.patch @@ -22,7 +22,7 @@ index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adc30acd3cead8f557f1016ed5e05edbf2857200..0cb3e06bab1b897a98fd0a05c65cf025c0356273 100644 +index 09cac0ae130610fd1ce50eb092fe758cfe71a4dd..1620ed5e1fab8575af02fefc910865d1b8a50322 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2113,6 +2113,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0240-Configurable-food-attributes.patch b/patches/server/0239-Configurable-food-attributes.patch similarity index 100% rename from patches/server/0240-Configurable-food-attributes.patch rename to patches/server/0239-Configurable-food-attributes.patch diff --git a/patches/server/0241-Max-joins-per-second.patch b/patches/server/0240-Max-joins-per-second.patch similarity index 100% rename from patches/server/0241-Max-joins-per-second.patch rename to patches/server/0240-Max-joins-per-second.patch diff --git a/patches/server/0242-Configurable-minimum-demand-for-trades.patch b/patches/server/0241-Configurable-minimum-demand-for-trades.patch similarity index 93% rename from patches/server/0242-Configurable-minimum-demand-for-trades.patch rename to patches/server/0241-Configurable-minimum-demand-for-trades.patch index 4f656ed7e..3902f4aa0 100644 --- a/patches/server/0242-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0241-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0cb3e06bab1b897a98fd0a05c65cf025c0356273..cae769fde9d58d2a526af769e49d4d63b7bcb3f7 100644 +index 1620ed5e1fab8575af02fefc910865d1b8a50322..e320196cc5f7302377916d5402579632374de09c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2798,6 +2798,7 @@ public class PurpurWorldConfig { +@@ -2794,6 +2794,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 0cb3e06bab1b897a98fd0a05c65cf025c0356273..cae769fde9d58d2a526af769e49d4d63 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2818,6 +2819,7 @@ public class PurpurWorldConfig { +@@ -2814,6 +2815,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0243-Lobotomize-stuck-villagers.patch b/patches/server/0242-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0243-Lobotomize-stuck-villagers.patch rename to patches/server/0242-Lobotomize-stuck-villagers.patch index 61b484841..d2b2dbdbc 100644 --- a/patches/server/0243-Lobotomize-stuck-villagers.patch +++ b/patches/server/0242-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cae769fde9d58d2a526af769e49d4d63b7bcb3f7..cd5dcafe602e494ded07106224857dcea37b5525 100644 +index e320196cc5f7302377916d5402579632374de09c..39f373cfbe0228d2040a9e7616a0491b11ee67a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2799,6 +2799,8 @@ public class PurpurWorldConfig { +@@ -2795,6 +2795,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -116,7 +116,7 @@ index cae769fde9d58d2a526af769e49d4d63b7bcb3f7..cd5dcafe602e494ded07106224857dce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2820,6 +2822,17 @@ public class PurpurWorldConfig { +@@ -2816,6 +2818,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0244-Option-for-villager-display-trade-item.patch b/patches/server/0243-Option-for-villager-display-trade-item.patch similarity index 91% rename from patches/server/0244-Option-for-villager-display-trade-item.patch rename to patches/server/0243-Option-for-villager-display-trade-item.patch index 1a6b86b88..613d8d3e2 100644 --- a/patches/server/0244-Option-for-villager-display-trade-item.patch +++ b/patches/server/0243-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd5dcafe602e494ded07106224857dcea37b5525..4586122457cdbf707cecb0d95110ac64e45a8184 100644 +index 39f373cfbe0228d2040a9e7616a0491b11ee67a1..7f91d3d56f6c4077e773c82da0f96103c892b82b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2801,6 +2801,7 @@ public class PurpurWorldConfig { +@@ -2797,6 +2797,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index cd5dcafe602e494ded07106224857dcea37b5525..4586122457cdbf707cecb0d95110ac64 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2833,6 +2834,7 @@ public class PurpurWorldConfig { +@@ -2829,6 +2830,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 95% rename from patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index a7e7961ca..42734a599 100644 --- a/patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,7 +17,7 @@ index 827912174ee08cd19249797d351887149b25c880..5b02848ea9f14060353014cada2d5539 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4586122457cdbf707cecb0d95110ac64e45a8184..f00325dff01364cba7aa2f15e945a32a636426ad 100644 +index 7f91d3d56f6c4077e773c82da0f96103c892b82b..440ba9fb9c30973ea3268298923812962034b2db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1063,8 +1063,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch similarity index 95% rename from patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch index ccb84dd6f..cf6559093 100644 --- a/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fc5dfbeae6bf9256e98eae774ccd77111d3ba280..139f0f8b04c743df6c0534d09493d4f46407006e 100644 +index 19529564457dfb0d0a3231341b1a57b72a415d54..6e7ed46a3a10a1ec69d0b69ee49be304760e419b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1545,13 +1545,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,7 +38,7 @@ index 10ca0fdb5b92cc4f1d346540c9129d5c55732985..a2d1c22e778aa4c3c44c3a1a604c1656 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f00325dff01364cba7aa2f15e945a32a636426ad..29f353f08c968b6c329fcd29e07d3ba3087884df 100644 +index 440ba9fb9c30973ea3268298923812962034b2db..6d1a29d5b9695c4f2392a82f8c1b11db220ea727 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0247-Anvil-repair-damage-options.patch b/patches/server/0246-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0247-Anvil-repair-damage-options.patch rename to patches/server/0246-Anvil-repair-damage-options.patch index ec2f42bab..8c8e01010 100644 --- a/patches/server/0247-Anvil-repair-damage-options.patch +++ b/patches/server/0246-Anvil-repair-damage-options.patch @@ -64,7 +64,7 @@ index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76 return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 29f353f08c968b6c329fcd29e07d3ba3087884df..e52417b3b696e1068b484daa4c73fe535966de22 100644 +index 6d1a29d5b9695c4f2392a82f8c1b11db220ea727..92019e20b9a67eb3c8be875ed57943c1ee1538d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -820,9 +820,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 93% rename from patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 27b5071ea..ba7d964a0 100644 --- a/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 9756c84e073d9e99ade0ee94c586b8e0fa426138..2c0dcfc916f0845dc830a7ac9ffc828df20f27d0 100644 +index 1099ce368c95ec293b8e6349ee545d3256e93ac3..777ba7b3dfbb8cee8b782490101127271f7320d2 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -218,7 +218,13 @@ public class TurtleEggBlock extends Block { @@ -24,7 +24,7 @@ index 9756c84e073d9e99ade0ee94c586b8e0fa426138..2c0dcfc916f0845dc830a7ac9ffc828d return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e52417b3b696e1068b484daa4c73fe535966de22..39f79210e80825df5a837e5e319f8db0c0e67280 100644 +index 92019e20b9a67eb3c8be875ed57943c1ee1538d6..2a898817bff68402631fbcf9318bed76548c9e21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1091,12 +1091,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch similarity index 97% rename from patches/server/0249-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0248-Add-toggle-for-enchant-level-clamping.patch index 61827c78c..575e13d15 100644 --- a/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 2b1decf36ff950d9572e3d8790e1f60ff84ce5fa..0505969be72d080c00733615ef5619fa2f4a36d4 100644 +index fa80754217fd43189fe2138322928fa8c4e9c9f4..9ad21a70a4da60307f6531ab3bfdbc7cb353b776 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1234,7 +1234,7 @@ public final class ItemStack { diff --git a/patches/server/0250-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0249-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0250-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0249-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch similarity index 92% rename from patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch index d65ed8771..7685ce116 100644 --- a/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 27e8f8bbaa25227c19399fab2bce8953d098e612..576ac084a97a59f2bd3a1be3d7051564 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39f79210e80825df5a837e5e319f8db0c0e67280..1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54 100644 +index 2a898817bff68402631fbcf9318bed76548c9e21..05d82f9555b8836b48d076ec38f3aab6c070e58b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2812,6 +2812,8 @@ public class PurpurWorldConfig { +@@ -2808,6 +2808,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 39f79210e80825df5a837e5e319f8db0c0e67280..1d12f5ad5131a71dbf6dba78e31e285a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2845,6 +2847,8 @@ public class PurpurWorldConfig { +@@ -2841,6 +2843,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0252-Stonecutter-damage.patch b/patches/server/0251-Stonecutter-damage.patch similarity index 98% rename from patches/server/0252-Stonecutter-damage.patch rename to patches/server/0251-Stonecutter-damage.patch index 7c6064b98..fb3ee6f7d 100644 --- a/patches/server/0252-Stonecutter-damage.patch +++ b/patches/server/0251-Stonecutter-damage.patch @@ -105,7 +105,7 @@ index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d12f5ad5131a71dbf6dba78e31e285a6cfb1a54..02eb8f37ccb814df925431280ec34a047592d6d6 100644 +index 05d82f9555b8836b48d076ec38f3aab6c070e58b..0abcb153446080c385d35cea03f6f7e8e9de8ff4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1086,6 +1086,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch similarity index 96% rename from patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch index df2fdcb74..73b48d066 100644 --- a/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch @@ -18,7 +18,7 @@ index 10f5ffacc72a5e0116e2599ca83ee57a5b1ce0eb..31e6468f639de3ed0b25c3bc4ee09333 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02eb8f37ccb814df925431280ec34a047592d6d6..b75922d2352a1ceb3ad00cbf6f968edaaea243d9 100644 +index 0abcb153446080c385d35cea03f6f7e8e9de8ff4..bbd1eefc53f91adce1102d865bd0c92c2cc090c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1022,6 +1022,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0254-Add-config-for-snow-on-blue-ice.patch b/patches/server/0253-Add-config-for-snow-on-blue-ice.patch similarity index 95% rename from patches/server/0254-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0253-Add-config-for-snow-on-blue-ice.patch index dbb5d023d..6eadd793b 100644 --- a/patches/server/0254-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0253-Add-config-for-snow-on-blue-ice.patch @@ -22,7 +22,7 @@ index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b75922d2352a1ceb3ad00cbf6f968edaaea243d9..7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57 100644 +index bbd1eefc53f91adce1102d865bd0c92c2cc090c2..b301f0778a2dc0de4a899da06598aed314ef545c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1003,9 +1003,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Skeletons-eat-wither-roses.patch b/patches/server/0254-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0255-Skeletons-eat-wither-roses.patch rename to patches/server/0254-Skeletons-eat-wither-roses.patch index 00da6d1ea..0734e9f0a 100644 --- a/patches/server/0255-Skeletons-eat-wither-roses.patch +++ b/patches/server/0254-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57..06e7305a4d2def94136a9f1f39e3b3c27124ebdd 100644 +index b301f0778a2dc0de4a899da06598aed314ef545c..ef6ed71bf4674b7f0275e3cc4487f9f311d4cf48 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2494,6 +2494,7 @@ public class PurpurWorldConfig { +@@ -2492,6 +2492,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 7b74ecc07070bd9fea0ec6ae6ac8e0816a570d57..06e7305a4d2def94136a9f1f39e3b3c2 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2507,6 +2508,7 @@ public class PurpurWorldConfig { +@@ -2505,6 +2506,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0256-Enchantment-Table-Persists-Lapis.patch b/patches/server/0255-Enchantment-Table-Persists-Lapis.patch similarity index 98% rename from patches/server/0256-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0255-Enchantment-Table-Persists-Lapis.patch index bcda870af..bf81e2087 100644 --- a/patches/server/0256-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0255-Enchantment-Table-Persists-Lapis.patch @@ -146,7 +146,7 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06e7305a4d2def94136a9f1f39e3b3c27124ebdd..67f442cc85a08a5843763643bc0cb6cfa9097e8f 100644 +index ef6ed71bf4674b7f0275e3cc4487f9f311d4cf48..5af36ce329de61f867e702740edb8c1cebe2cc09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1529,6 +1529,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0257-Spark-Profiler.patch b/patches/server/0256-Spark-Profiler.patch similarity index 100% rename from patches/server/0257-Spark-Profiler.patch rename to patches/server/0256-Spark-Profiler.patch diff --git a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch index df92aafe0..d48726e50 100644 --- a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 13dadd9824a75cd26053aeb93cc95f5bba0622a5..22298bc61205b2da0a13a97144704d0dd1d33260 100644 +index 73d0f3962dd38f015fe022385ec160af9c176c84..709e0c73178e02f181d2d5de8929a3ed7bcab2f9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1720,7 +1720,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch similarity index 95% rename from patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch index a36dd7719..92986c2fc 100644 --- a/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,7 +18,7 @@ index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67f442cc85a08a5843763643bc0cb6cfa9097e8f..da5dfa53adaa85652e2c5db5fbe14307e9ef20c5 100644 +index 5af36ce329de61f867e702740edb8c1cebe2cc09..b2ece6e86bc7eca717ad1143c78a6657a7cbb01e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1067,6 +1067,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-Config-to-not-let-coral-die.patch b/patches/server/0259-Config-to-not-let-coral-die.patch similarity index 96% rename from patches/server/0260-Config-to-not-let-coral-die.patch rename to patches/server/0259-Config-to-not-let-coral-die.patch index e57e68bbd..f06d87123 100644 --- a/patches/server/0260-Config-to-not-let-coral-die.patch +++ b/patches/server/0259-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da5dfa53adaa85652e2c5db5fbe14307e9ef20c5..a1c95d2a69a8eaedefa90e689d5ce1636648fd1e 100644 +index b2ece6e86bc7eca717ad1143c78a6657a7cbb01e..453d4b1c1d6b9a1521ce7a2e179dfcec0bf52a3c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -904,6 +904,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0261-Add-local-difficulty-api.patch b/patches/server/0260-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0261-Add-local-difficulty-api.patch rename to patches/server/0260-Add-local-difficulty-api.patch diff --git a/patches/server/0262-Add-toggle-for-RNG-manipulation.patch b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch similarity index 93% rename from patches/server/0262-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0261-Add-toggle-for-RNG-manipulation.patch index a971edea8..8374c5de5 100644 --- a/patches/server/0262-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a94d7fcec60ffd9826f7c4828f0d98461261fb0b..67ebbf6005cdef280d62e2150287f18699b2fe6a 100644 +index a7efbf24ca52d2303323ae2406cfe4beb7a72d4c..8cfba1af2f4ca7be42d997269187466c130de7b3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -598,7 +598,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -33,7 +33,7 @@ index 88c238e492b1081d1a64a3b6f05d7baa17e5d8c9..dd7f2beabf0edad4143ac2365ac04a22 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1c95d2a69a8eaedefa90e689d5ce1636648fd1e..81a758847405ca2a4770da8120a9f837662bc3f7 100644 +index 453d4b1c1d6b9a1521ce7a2e179dfcec0bf52a3c..c4174f1f3e6993a38cdb3cbd57553af9807a327b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0263-Send-client-custom-name-of-BE.patch b/patches/server/0262-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0263-Send-client-custom-name-of-BE.patch rename to patches/server/0262-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0264-Allow-custom-ChatDecorators.patch b/patches/server/0263-Allow-custom-ChatDecorators.patch similarity index 100% rename from patches/server/0264-Allow-custom-ChatDecorators.patch rename to patches/server/0263-Allow-custom-ChatDecorators.patch diff --git a/patches/server/0265-Remove-Timings.patch b/patches/server/0264-Remove-Timings.patch similarity index 100% rename from patches/server/0265-Remove-Timings.patch rename to patches/server/0264-Remove-Timings.patch diff --git a/patches/server/0266-Remove-Mojang-Profiler.patch b/patches/server/0265-Remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0266-Remove-Mojang-Profiler.patch rename to patches/server/0265-Remove-Mojang-Profiler.patch diff --git a/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch index b24eb19d0..bb39d753d 100644 --- a/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 56f110d08fa24b26792f55b2ea062249b0f9643d..ba3548498044bbfd8e73967ac3dcec9b8d0a3b88 100644 +index a6a852ccfbe0a039937d9c453276a2ab23a76110..cb2ecffbac74b78aedc38736ca615c47abaa9d5d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -737,6 +737,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0268-Add-Bee-API.patch b/patches/server/0267-Add-Bee-API.patch similarity index 100% rename from patches/server/0268-Add-Bee-API.patch rename to patches/server/0267-Add-Bee-API.patch diff --git a/patches/server/0269-Debug-Marker-API.patch b/patches/server/0268-Debug-Marker-API.patch similarity index 100% rename from patches/server/0269-Debug-Marker-API.patch rename to patches/server/0268-Debug-Marker-API.patch diff --git a/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch similarity index 96% rename from patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch index 76d49e956..1ab7dd9f3 100644 --- a/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch @@ -18,7 +18,7 @@ index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122f if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81a758847405ca2a4770da8120a9f837662bc3f7..c46408be4ae6d764f233963f17b383ea623561ea 100644 +index c4174f1f3e6993a38cdb3cbd57553af9807a327b..1d9f4ae68eb58683aec4226aa62bf3731e14522b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -377,6 +377,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0271-Add-skeleton-bow-accuracy-option.patch b/patches/server/0270-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0271-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0270-Add-skeleton-bow-accuracy-option.patch index 3616e37d9..e88d4fe2d 100644 --- a/patches/server/0271-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0270-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c46408be4ae6d764f233963f17b383ea623561ea..1f5225a7fb1a849884483c1bb1a1514b10a2d113 100644 +index 1d9f4ae68eb58683aec4226aa62bf3731e14522b..1dfaad983ed6d6babf88fb5cd512378110d09143 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2514,6 +2514,8 @@ public class PurpurWorldConfig { +@@ -2512,6 +2512,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index c46408be4ae6d764f233963f17b383ea623561ea..1f5225a7fb1a849884483c1bb1a1514b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2528,6 +2530,18 @@ public class PurpurWorldConfig { +@@ -2526,6 +2528,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0272-Allay-respect-item-NBT.patch b/patches/server/0271-Allay-respect-item-NBT.patch similarity index 96% rename from patches/server/0272-Allay-respect-item-NBT.patch rename to patches/server/0271-Allay-respect-item-NBT.patch index 070aa4f96..efc73659d 100644 --- a/patches/server/0272-Allay-respect-item-NBT.patch +++ b/patches/server/0271-Allay-respect-item-NBT.patch @@ -44,7 +44,7 @@ index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f2 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f5225a7fb1a849884483c1bb1a1514b10a2d113..c7584f2cd12a75f61ca94100718df200b6c373e7 100644 +index 1dfaad983ed6d6babf88fb5cd512378110d09143..0c928efa4e11a85901ece3dbc849c8c0c652cc71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1148,10 +1148,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0273-Add-death-screen-API.patch b/patches/server/0272-Add-death-screen-API.patch similarity index 100% rename from patches/server/0273-Add-death-screen-API.patch rename to patches/server/0272-Add-death-screen-API.patch diff --git a/patches/server/0274-Make-pufferfish-config-relocatable.patch b/patches/server/0273-Make-pufferfish-config-relocatable.patch similarity index 100% rename from patches/server/0274-Make-pufferfish-config-relocatable.patch rename to patches/server/0273-Make-pufferfish-config-relocatable.patch diff --git a/patches/server/0275-Implement-ram-and-rambar-commands.patch b/patches/server/0274-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0275-Implement-ram-and-rambar-commands.patch rename to patches/server/0274-Implement-ram-and-rambar-commands.patch index f0e5e0658..148255826 100644 --- a/patches/server/0275-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0274-Implement-ram-and-rambar-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index c1202a56b560269e132eafd8bb12383473d4d33e..815af29d1aae935264a400bdb9c3d676e81a841a 100644 +index 2fd8940727e4f361c67114794233d4ddc6548dbb..f50258436fd80e0793d867c67ad5653cb13b6609 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -256,6 +256,8 @@ public class Commands { diff --git a/patches/server/0276-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch similarity index 97% rename from patches/server/0276-Add-item-packet-serialize-event.patch rename to patches/server/0275-Add-item-packet-serialize-event.patch index d961628b5..e8f93a227 100644 --- a/patches/server/0276-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -48,7 +48,7 @@ index b563b1d4129cf3fb15f5ab4e08acfd380d0ddf12..f69976dcba060027c67c2e1b49fa28d3 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ba3548498044bbfd8e73967ac3dcec9b8d0a3b88..819906c465debe02192084968bf3d17d69cdd8c8 100644 +index cb2ecffbac74b78aedc38736ca615c47abaa9d5d..68d4ccd7ae5719e66fd3f14e5bfce4675eb73a17 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3380,6 +3380,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 6993b1c4d..6b8f51c09 100644 --- a/patches/server/0277-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) 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 49b55db16c8c2f389fb6990b3b3ad7dc29eb10c3..0dad432fdff9156e09a57f5776fd3307b1577558 100644 +index 8127456194ef6bdd6212553d0d78618519e6a429..e352dc0fa07f0b5431c4d4b2cff95fa3485d31dd 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -74,6 +74,7 @@ public abstract class AbstractArrow extends Projectile { diff --git a/patches/server/0278-Configurable-block-blast-resistance.patch b/patches/server/0277-Configurable-block-blast-resistance.patch similarity index 96% rename from patches/server/0278-Configurable-block-blast-resistance.patch rename to patches/server/0277-Configurable-block-blast-resistance.patch index 8b504364c..6442cb4ea 100644 --- a/patches/server/0278-Configurable-block-blast-resistance.patch +++ b/patches/server/0277-Configurable-block-blast-resistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 06b07927aba82084bd2996be92b9e340a9bf2ad2..0b6ab25fb59a7dd713a0fa9063f8590cad8414de 100644 +index 7875df22641e9eb152135c87b86d30a0c6158858..6aebdd936728be10b5cbf0a71fd9a2a66596afc0 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java @@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement { diff --git a/patches/server/0279-Configurable-block-fall-damage-modifiers.patch b/patches/server/0278-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0279-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0278-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0280-Language-API.patch b/patches/server/0279-Language-API.patch similarity index 93% rename from patches/server/0280-Language-API.patch rename to patches/server/0279-Language-API.patch index 7f4b559fb..f9e28ff77 100644 --- a/patches/server/0280-Language-API.patch +++ b/patches/server/0279-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e4f0b1a5b2165610c533f9a661341e5c46ffb63e..aef22db014c81332ba599ddb931afb264dc12a84 100644 +index 067164b3698bcb89ae2f8d09cb7009108a999670..aa04387019f2aef5e7e54a9654c05f832d508295 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -398,6 +398,20 @@ public final class CraftServer implements Server { diff --git a/patches/server/0281-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch similarity index 95% rename from patches/server/0281-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0280-Milk-Keeps-Beneficial-Effects.patch index 64696e48f..4c666c93c 100644 --- a/patches/server/0281-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ae8efb754e89c925647aa515f2e5bfc4c75a3857..1425a8321e3bc988a88ca45e3d3f0fcee18df58f 100644 +index f9e035405c42fbe0a8c0dca2157798d69214914b..8fd6e46882a1828abdf858c0b10f955c9f2718eb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1123,6 +1123,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,7 +30,7 @@ index 08320248a6956d41d60681e3d29f81768c80fd3d..237247cb91248eb2d05e967e95cb8ad0 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c7584f2cd12a75f61ca94100718df200b6c373e7..e3d9bd8fc246771a6d612d0c834a47c7a3255f74 100644 +index 0c928efa4e11a85901ece3dbc849c8c0c652cc71..1fc1c9d3f90fec901bddce5e55ab682bfa495b8f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0282-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0283-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0283-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0282-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 96% rename from patches/server/0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 23904467d..f819c8dab 100644 --- a/patches/server/0284-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,7 +24,7 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e3d9bd8fc246771a6d612d0c834a47c7a3255f74..39726c991874b631545e0a06fa5b06383e7b7115 100644 +index 1fc1c9d3f90fec901bddce5e55ab682bfa495b8f..92d16b3c5f2170c30019c093ca81aa85c92d0828 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1422,6 +1422,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0285-Fire-Immunity-API.patch b/patches/server/0284-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0285-Fire-Immunity-API.patch rename to patches/server/0284-Fire-Immunity-API.patch diff --git a/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 96% rename from patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 34649b32b..1b9a56822 100644 --- a/patches/server/0286-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,7 +17,7 @@ index 7d0aee4be3a240df18b47c583581ad9c7af5fdb6..251b336c1915f173c975fd0c568dfb04 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 39726c991874b631545e0a06fa5b06383e7b7115..7234603063091d3999f71e5d7781c6468665c8f3 100644 +index 92d16b3c5f2170c30019c093ca81aa85c92d0828..029e989caeb427997821216d14ef03b2099bcd58 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-Added-got-ram-event.patch b/patches/server/0286-Added-got-ram-event.patch similarity index 100% rename from patches/server/0287-Added-got-ram-event.patch rename to patches/server/0286-Added-got-ram-event.patch diff --git a/patches/server/0288-Log-skipped-entity-s-position.patch b/patches/server/0287-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0288-Log-skipped-entity-s-position.patch rename to patches/server/0287-Log-skipped-entity-s-position.patch diff --git a/patches/server/0289-End-Crystal-Cramming.patch b/patches/server/0288-End-Crystal-Cramming.patch similarity index 96% rename from patches/server/0289-End-Crystal-Cramming.patch rename to patches/server/0288-End-Crystal-Cramming.patch index 0dae8b87c..f972b87aa 100644 --- a/patches/server/0289-End-Crystal-Cramming.patch +++ b/patches/server/0288-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index 564d17bc460e2a04947ff9676fbf4c8b1569659c..440add62fcfa62d483409e1aecfc9159 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7234603063091d3999f71e5d7781c6468665c8f3..8f7f5b89efadc60dc8f95b5b4e002836b758be7c 100644 +index 029e989caeb427997821216d14ef03b2099bcd58..cd0ce2e5e80ab2519247d8e6cfa2084455101034 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 97% rename from patches/server/0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 0251391a6..03fc4c199 100644 --- a/patches/server/0290-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index a5f9747be5503dd24abd98f11cfa8229448ca3bf..99ef8d7e3ee0ee9777d12ad825e728c3 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f7f5b89efadc60dc8f95b5b4e002836b758be7c..6523578f35da2977567f0011a9f9f9a96b538560 100644 +index cd0ce2e5e80ab2519247d8e6cfa2084455101034..36aa99f6dd6fad2185890e5a3e126ae3a14aff06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -846,11 +846,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0291-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0291-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0292-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0292-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0291-Config-to-remove-explosion-radius-clamp.patch index 15e7361a6..7ac6a5f80 100644 --- a/patches/server/0292-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index 17abd085b3faf88e10a44a6c98af996892cc4e58..0c08a07d3d1efa35646dbaa5cc887bf9 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6523578f35da2977567f0011a9f9f9a96b538560..2bb310f0a7c94f036c0e849d8a3defb47a115f04 100644 +index 36aa99f6dd6fad2185890e5a3e126ae3a14aff06..d809d6062e3ecfd8c86c7dcc712363430ed88923 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch index dff31886d..8d8938d71 100644 --- a/patches/server/0293-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index ceaec1776067b7635c3952025f00f13f4ea86c88..8b6c43b0a2fb4b89d6f63716e56074ef + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2bb310f0a7c94f036c0e849d8a3defb47a115f04..ec46c926e6df9101322df22853d03eba05b48896 100644 +index d809d6062e3ecfd8c86c7dcc712363430ed88923..856a7576ecfb8d2ca5bffa594ad9da6f605917ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -900,8 +900,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0294-Add-PreExplodeEvents.patch b/patches/server/0293-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0294-Add-PreExplodeEvents.patch rename to patches/server/0293-Add-PreExplodeEvents.patch diff --git a/patches/server/0295-Improve-output-of-plugins-command.patch b/patches/server/0294-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0295-Improve-output-of-plugins-command.patch rename to patches/server/0294-Improve-output-of-plugins-command.patch diff --git a/patches/server/0296-Add-mending-multiplier.patch b/patches/server/0295-Add-mending-multiplier.patch similarity index 92% rename from patches/server/0296-Add-mending-multiplier.patch rename to patches/server/0295-Add-mending-multiplier.patch index b41257e2d..0efcbf1f8 100644 --- a/patches/server/0296-Add-mending-multiplier.patch +++ b/patches/server/0295-Add-mending-multiplier.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mending multiplier diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index a3ef8e6a698df4c78e0494da48063ddd29caf62f..1b8f5680c4122c7b6b19e2bc1ed6295caa024622 100644 +index 01f375047998cb68b3ec704aef9f050c9f0630dc..e594a6f318d34debdf884d4d98b11d53b4b8734a 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -359,13 +359,15 @@ public class ExperienceOrb extends Entity { @@ -27,7 +27,7 @@ index a3ef8e6a698df4c78e0494da48063ddd29caf62f..1b8f5680c4122c7b6b19e2bc1ed6295c public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec46c926e6df9101322df22853d03eba05b48896..2c9c5f8e432f076559bdb88e4485399ff74c8cd5 100644 +index 856a7576ecfb8d2ca5bffa594ad9da6f605917ab..4fa20bdc2a9ca0906f4fd32d7b1d2590da6094a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0297-Make-GUI-Great-Again.patch b/patches/server/0296-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0297-Make-GUI-Great-Again.patch rename to patches/server/0296-Make-GUI-Great-Again.patch diff --git a/patches/server/0298-Stored-Bee-API.patch b/patches/server/0297-Stored-Bee-API.patch similarity index 100% rename from patches/server/0298-Stored-Bee-API.patch rename to patches/server/0297-Stored-Bee-API.patch diff --git a/patches/server/0299-Shears-can-defuse-TNT.patch b/patches/server/0298-Shears-can-defuse-TNT.patch similarity index 95% rename from patches/server/0299-Shears-can-defuse-TNT.patch rename to patches/server/0298-Shears-can-defuse-TNT.patch index f43459e76..258a72eb9 100644 --- a/patches/server/0299-Shears-can-defuse-TNT.patch +++ b/patches/server/0298-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index c3e47426382296d650fa00ce0bc1a82bf23c7877..dfc3e9d2611ce418ac6f6cc5a23bb744 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c9c5f8e432f076559bdb88e4485399ff74c8cd5..3cefadcca5c0ab367fbb15a1b8565aed8f7e8689 100644 +index 4fa20bdc2a9ca0906f4fd32d7b1d2590da6094a3..4d6679eba841dc6d9b2d227d99ab5842adb1caeb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3288,4 +3288,11 @@ public class PurpurWorldConfig { +@@ -3284,4 +3284,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0300-Explorer-Map-API.patch b/patches/server/0299-Explorer-Map-API.patch similarity index 100% rename from patches/server/0300-Explorer-Map-API.patch rename to patches/server/0299-Explorer-Map-API.patch diff --git a/patches/server/0301-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 95% rename from patches/server/0301-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch index f36aa2272..beb3ac572 100644 --- a/patches/server/0301-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,7 +18,7 @@ index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cefadcca5c0ab367fbb15a1b8565aed8f7e8689..8da2d5defa55484dcaf7f448db586b412479fdb6 100644 +index 4d6679eba841dc6d9b2d227d99ab5842adb1caeb..2f0e119e6e630eba8229011d42185de40860f202 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2101,6 +2101,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 97% rename from patches/server/0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index c1da3ff32..6211f52a7 100644 --- a/patches/server/0302-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -45,7 +45,7 @@ index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8da2d5defa55484dcaf7f448db586b412479fdb6..eeaf4da4dff16d89f5e7ab350b411800c4fbfa88 100644 +index 2f0e119e6e630eba8229011d42185de40860f202..c1354f18f7dd11d1f28f37d38ad4db4b671e3af1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0303-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0303-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0304-place-end-crystal-on-any-block.patch b/patches/server/0303-place-end-crystal-on-any-block.patch similarity index 96% rename from patches/server/0304-place-end-crystal-on-any-block.patch rename to patches/server/0303-place-end-crystal-on-any-block.patch index 96733c1dc..bc7ea97f2 100644 --- a/patches/server/0304-place-end-crystal-on-any-block.patch +++ b/patches/server/0303-place-end-crystal-on-any-block.patch @@ -18,7 +18,7 @@ index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba6 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eeaf4da4dff16d89f5e7ab350b411800c4fbfa88..fb7bdaa64002729f9f9cd0fbbd2ae289643628b4 100644 +index c1354f18f7dd11d1f28f37d38ad4db4b671e3af1..68b86e3f9914b05312b94cc9f16ad8c39de103c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -969,6 +969,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0305-Add-hover-lines-API.patch b/patches/server/0304-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0305-Add-hover-lines-API.patch rename to patches/server/0304-Add-hover-lines-API.patch diff --git a/patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 96% rename from patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch index 0174a203c..1d6285652 100644 --- a/patches/server/0306-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,7 +18,7 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb7bdaa64002729f9f9cd0fbbd2ae289643628b4..bbf371428e343cfad0ae118c387fd2342541fe53 100644 +index 68b86e3f9914b05312b94cc9f16ad8c39de103c6..dab252cbadffbcdf19bacc0b378d671b29393e9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { From 544a2b6a4e49154037c2314057bd19c7e9ff70fb Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 9 Jan 2024 05:36:54 -0800 Subject: [PATCH 040/148] copy spawner data exactly when silk touching --- patches/server/0020-Silk-touch-spawners.patch | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/patches/server/0020-Silk-touch-spawners.patch b/patches/server/0020-Silk-touch-spawners.patch index 1c214676f..93df704bd 100644 --- a/patches/server/0020-Silk-touch-spawners.patch +++ b/patches/server/0020-Silk-touch-spawners.patch @@ -18,10 +18,10 @@ index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc374 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c55576424993236da46ed1c2ccd03b72d7ee97f9 100644 +index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..1ac38424a44aa2225b9bd3fa0fbbe61b7b24875c 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -@@ -42,6 +42,58 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -42,6 +42,60 @@ public class SpawnerBlock extends BaseEntityBlock { return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick); } @@ -35,6 +35,9 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c55576424993236da46ed1c2ccd03b72 + final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType == null ? Component.empty() : entityType.getDescription()); + net.minecraft.nbt.CompoundTag display = new net.minecraft.nbt.CompoundTag(); + net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); ++ net.minecraft.nbt.CompoundTag blockEntityTag = blockEntity.getUpdateTag(); ++ blockEntityTag.remove("Delay"); // remove this tag to allow stacking duplicate spawners ++ tag.put("BlockEntityTag", blockEntityTag); + + String name = level.purpurConfig.silkTouchSpawnerName; + if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { @@ -62,7 +65,6 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c55576424993236da46ed1c2ccd03b72 + + ItemStack item = new ItemStack(Blocks.SPAWNER.asItem()); + if (entityType != null) { -+ tag.putString("Purpur.mob_type", entityType.getName()); + tag.putDouble("HideFlags", ItemStack.TooltipPart.ADDITIONAL.getMask()); // hides the "Interact with Spawn Egg" tooltip + item.setTag(tag); + } @@ -80,7 +82,7 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..c55576424993236da46ed1c2ccd03b72 @Override public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); -@@ -50,6 +102,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -50,6 +104,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack, boolean flag) { @@ -133,10 +135,10 @@ index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..d4bca5b5f3d10c3a04befd8c365f4643 public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java new file mode 100644 -index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b869669a90 +index 0000000000000000000000000000000000000000..d6cc7e434cb2bacc00e4cad9e1f4be7fcf5d0bee --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java -@@ -0,0 +1,36 @@ +@@ -0,0 +1,38 @@ +package org.purpurmc.purpur.item; + +import net.minecraft.core.BlockPos; @@ -167,6 +169,8 @@ index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b8 + if (tag.contains("Purpur.mob_type")) { + EntityType.byString(tag.getString("Purpur.mob_type")).ifPresent(type -> + ((SpawnerBlockEntity) spawner).getSpawner().setEntityId(type, level, level.random, pos)); ++ } else if (tag.contains("BlockEntityTag")) { ++ spawner.load(tag.getCompound("BlockEntityTag")); + } + } + } From c9d4c1c1c3157942714068c76bc0172f9bbfd912 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 11 Jan 2024 15:05:38 -0800 Subject: [PATCH 041/148] properly increment history index, closes #1472 --- patches/server/0296-Make-GUI-Great-Again.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/server/0296-Make-GUI-Great-Again.patch b/patches/server/0296-Make-GUI-Great-Again.patch index 54766f26f..42a745a79 100644 --- a/patches/server/0296-Make-GUI-Great-Again.patch +++ b/patches/server/0296-Make-GUI-Great-Again.patch @@ -108,7 +108,7 @@ index d56fab50babe37865d0a40b7088b011c8ff6af88..d21260dd1b7305949f063123b427dec1 /* jline.console.ConsoleReader bufferedreader = DedicatedServer.this.reader; diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java -index dd9f611efc95f7d06fd3011fedd5d0317b1d0a85..be7b3fe2dc84493dcde9e185717b0b7c7c2e9822 100644 +index dd9f611efc95f7d06fd3011fedd5d0317b1d0a85..64e12201e164f4dc8070711605dcfcb6e56421f6 100644 --- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java +++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java @@ -43,6 +43,11 @@ public class MinecraftServerGui extends JComponent { @@ -181,7 +181,7 @@ index dd9f611efc95f7d06fd3011fedd5d0317b1d0a85..be7b3fe2dc84493dcde9e185717b0b7c + currentCommand = jtextfield.getText(); + } + if (historyIndex < history.size() - 1) { -+ jtextfield.setText(history.get(historyIndex)); ++ jtextfield.setText(history.get(++historyIndex)); + } + } + }); From 36974ea56e3eeee022d8b162532af505fa69a9d8 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 11 Jan 2024 15:13:19 -0800 Subject: [PATCH 042/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a80d31b Log command execution exceptions if debug=true (#10130) --- .idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index 00aa84396..24b23bbe9 100644 --- a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml +++ b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml @@ -1,6 +1,6 @@ -

+ * Damage: variable + */ diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index dad6ce57f..d0cdada7c 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -37,7 +37,7 @@ index 32f33eb8b99ad4655cf021b7cf16eb15fe96ba59..4220c1b4e44ecf67653fe5a50a209866 AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); Iterable iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7bd02429c 100644 +index 9c99b2e365aacb8309f29acb9025faccd2c676b3..5c9d49b40a940df724101bef339a9ac5a31fd025 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -99,6 +99,11 @@ public class CombatTracker { @@ -45,7 +45,7 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7 return Component.translatable(string + ".message", this.mob.getDisplayName(), component); } else { + // Purpur start -+ if (damageSource.isScissors) { ++ if (damageSource.isScissors()) { + return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); + } + // Purpur end @@ -53,34 +53,74 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7 } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..727a598f1c265ae524c3746c7b7c7d2d0774d530 100644 +index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..2e443b02108b63fbaea2754b989e241494510363 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -97,6 +97,8 @@ public class DamageSource { +@@ -27,6 +27,7 @@ public class DamageSource { + private boolean withSweep = false; + private boolean melting = false; + private boolean poison = false; ++ private boolean scissors = false; // Purpur + private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla + + public DamageSource sweep() { +@@ -56,6 +57,17 @@ public class DamageSource { + return this.poison; + } + ++ // Purpur start ++ public DamageSource scissors() { ++ this.scissors = true; ++ return this; ++ } ++ ++ public boolean isScissors() { ++ return this.scissors; ++ } ++ // Purpur end ++ + public Entity getCausingEntity() { + return (this.customCausingEntity != null) ? this.customCausingEntity : this.causingEntity; + } +@@ -93,6 +105,7 @@ public class DamageSource { + damageSource.withSweep = this.isSweep(); + damageSource.poison = this.isPoison(); + damageSource.melting = this.isMelting(); ++ damageSource.scissors = this.isScissors(); // Purpur + return damageSource; + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java +index a47473c9875c70c52b9a61e0156e55961f34c694..23c7f22dacc570837120c28e0a57f8c9155e92fc 100644 +--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java ++++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java +@@ -44,11 +44,13 @@ public class DamageSources { + // CraftBukkit start + private final DamageSource melting; + private final DamageSource poison; ++ private final DamageSource scissors; // Purpur + + public DamageSources(RegistryAccess registryManager) { + this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE); + this.melting = this.source(DamageTypes.ON_FIRE).melting(); + this.poison = this.source(DamageTypes.MAGIC).poison(); ++ this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur + // CraftBukkit end + this.inFire = this.source(DamageTypes.IN_FIRE); + this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT); +@@ -97,6 +99,12 @@ public class DamageSources { } // CraftBukkit end -+ public boolean isScissors; // Purpur -+ - public String toString() { - return "DamageSource (" + this.type().msgId() + ")"; - } -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index a47473c9875c70c52b9a61e0156e55961f34c694..28b57ed7e862eecc04dfb2eac0093385b64460e7 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -@@ -277,4 +277,11 @@ public class DamageSources { - public DamageSource genericKill() { - return this.genericKill; - } + // Purpur start + public DamageSource scissors() { -+ DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.MAGIC)); -+ source.isScissors = true; -+ return source; ++ return this.scissors; + } + // Purpur end - } ++ + public DamageSource inFire() { + return this.inFire; + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 57734b187e3a66d0d244db2f7968256884957ff2..6714c095714c3a34464b9190be964ceaac718d45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0251-Stonecutter-damage.patch b/patches/server/0251-Stonecutter-damage.patch index 36a3d53f1..888103a8e 100644 --- a/patches/server/0251-Stonecutter-damage.patch +++ b/patches/server/0251-Stonecutter-damage.patch @@ -5,47 +5,83 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 9e3608650c44ef5fa724c3aea86603d7bd02429c..8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0 100644 +index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba9275cec93d9 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -102,6 +102,8 @@ public class CombatTracker { // Purpur start - if (damageSource.isScissors) { + if (damageSource.isScissors()) { return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); -+ } else if (damageSource.isStoneCutter) { ++ } else if (damageSource.isStonecutter()) { + return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgStonecutter, this.mob); } // Purpur end return damageSource.getLocalizedDeathMessage(this.mob); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 727a598f1c265ae524c3746c7b7c7d2d0774d530..478173fe8e61730a2210e886a4c8dc2a6e018e90 100644 +index 2e443b02108b63fbaea2754b989e241494510363..09aa1677ad67701d592c18078eee5bd0317ba7c4 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -99,6 +99,8 @@ public class DamageSource { +@@ -28,6 +28,7 @@ public class DamageSource { + private boolean melting = false; + private boolean poison = false; + private boolean scissors = false; // Purpur ++ private boolean stonecutter = false; // Purpur + private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla - public boolean isScissors; // Purpur - -+ public boolean isStoneCutter; // Purpur -+ - public String toString() { - return "DamageSource (" + this.type().msgId() + ")"; - } -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index 28b57ed7e862eecc04dfb2eac0093385b64460e7..0f7d3e8573462c6fde8e5e2c1e86ad8406b9f549 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -@@ -283,5 +283,11 @@ public class DamageSources { - source.isScissors = true; - return source; + public DamageSource sweep() { +@@ -66,6 +67,15 @@ public class DamageSource { + public boolean isScissors() { + return this.scissors; } + + public DamageSource stonecutter() { -+ DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.MAGIC)); -+ source.isStoneCutter = true; -+ return source; ++ this.stonecutter = true; ++ return this; ++ } ++ ++ public boolean isStonecutter() { ++ return this.stonecutter; + } // Purpur end - } + + public Entity getCausingEntity() { +@@ -106,6 +116,7 @@ public class DamageSource { + damageSource.poison = this.isPoison(); + damageSource.melting = this.isMelting(); + damageSource.scissors = this.isScissors(); // Purpur ++ damageSource.stonecutter = this.isStonecutter(); // Purpur + return damageSource; + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java +index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3cf987349 100644 +--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java ++++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java +@@ -45,12 +45,14 @@ public class DamageSources { + private final DamageSource melting; + private final DamageSource poison; + private final DamageSource scissors; // Purpur ++ private final DamageSource stonecutter; // Purpur + + public DamageSources(RegistryAccess registryManager) { + this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE); + this.melting = this.source(DamageTypes.ON_FIRE).melting(); + this.poison = this.source(DamageTypes.MAGIC).poison(); + this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur ++ this.stonecutter = this.source(DamageTypes.MAGIC).stonecutter(); // Purpur + // CraftBukkit end + this.inFire = this.source(DamageTypes.IN_FIRE); + this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT); +@@ -103,6 +105,9 @@ public class DamageSources { + public DamageSource scissors() { + return this.scissors; + } ++ public DamageSource stonecutter() { ++ return this.stonecutter; ++ } + // Purpur end + + public DamageSource inFire() { diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b2fdd6520 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java @@ -87,6 +123,19 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe if (blockState.is(Blocks.HONEY_BLOCK)) { return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { +diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +index aa89fcab22c7ad0c9425f5ae65cc2c6b150579cc..069ea4dc556d179d166e1dba3527c9def7129e65 100644 +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -1133,7 +1133,7 @@ public class CraftEventFactory { + return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); + } else if (source.getDirectBlock() != null) { + DamageCause cause; +- if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL)) { ++ if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL) || source.isStonecutter()) { // Purpur + cause = DamageCause.CONTACT; + } else if (source.is(DamageTypes.HOT_FLOOR)) { + cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch index 2da5ab7f4..e9ab9b13e 100644 --- a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option for always showing item in player death messages diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0..6e8d9be28c5908fb12c44c0ecb0e02180601371a 100644 +index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d37a1784e 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -59,7 +59,7 @@ public class CombatTracker { @@ -18,10 +18,10 @@ index 8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0..6e8d9be28c5908fb12c44c0ecb0e0218 private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 478173fe8e61730a2210e886a4c8dc2a6e018e90..081bf5e60cd17fc88efeba3adf1c113bd8958e2a 100644 +index 09aa1677ad67701d592c18078eee5bd0317ba7c4..4b920672dbd7d9baf15191caa8892359d378f3e7 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -169,7 +169,7 @@ public class DamageSource { +@@ -189,7 +189,7 @@ public class DamageSource { ItemStack itemstack1 = itemstack; From d0e4b7ba9eec658c92bc1ace07dafaea55805a55 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 16 Feb 2024 02:07:20 -0800 Subject: [PATCH 063/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@37df121 Fix BlockState being set to null for damage events (#10252) --- gradle.properties | 2 +- patches/server/0007-Component-related-conveniences.patch | 4 ++-- patches/server/0132-Dont-run-with-scissors.patch | 4 ++-- patches/server/0251-Stonecutter-damage.patch | 6 +++--- ...d-option-for-always-showing-item-in-player-death-m.patch | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index d976de2be..7b45e30fb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 31699ae9a8f3a57491e9c9276cffa5a51e9a5f60 +paperCommit = 37df12143c4f19eb6017619b7e7abeb0f848598a org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index d2d04d7a8..2078c8fb7 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -61,10 +61,10 @@ index 91feb12732564c90656da487664dbc12e55397fc..a2e76fb8431cd4dc0cbf94245086c939 Iterator iterator = this.players.iterator(); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index fe9b45bfc3d000956f6de5594bf5732fa0e6bb08..6f1b9cd34a714c02e9800ff2972aa24ad4080842 100644 +index 1561b85a45f52a8162f43553f8485bfe084b8f1f..938524dc5b495ad160b9b14219db573e4e7c6a8a 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -169,6 +169,15 @@ public class DamageSource { +@@ -170,6 +170,15 @@ public class DamageSource { } } diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index d0cdada7c..bd278a77e 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -53,7 +53,7 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..5c9d49b40a940df724101bef339a9ac5 } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..2e443b02108b63fbaea2754b989e241494510363 100644 +index 938524dc5b495ad160b9b14219db573e4e7c6a8a..f7786be77a0594fa5e11a328648cbad16bbab2e1 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -27,6 +27,7 @@ public class DamageSource { @@ -82,7 +82,7 @@ index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..2e443b02108b63fbaea2754b989e2414 public Entity getCausingEntity() { return (this.customCausingEntity != null) ? this.customCausingEntity : this.causingEntity; } -@@ -93,6 +105,7 @@ public class DamageSource { +@@ -94,6 +106,7 @@ public class DamageSource { damageSource.withSweep = this.isSweep(); damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); diff --git a/patches/server/0251-Stonecutter-damage.patch b/patches/server/0251-Stonecutter-damage.patch index 888103a8e..18cbb8337 100644 --- a/patches/server/0251-Stonecutter-damage.patch +++ b/patches/server/0251-Stonecutter-damage.patch @@ -18,7 +18,7 @@ index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba927 // Purpur end return damageSource.getLocalizedDeathMessage(this.mob); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 2e443b02108b63fbaea2754b989e241494510363..09aa1677ad67701d592c18078eee5bd0317ba7c4 100644 +index f7786be77a0594fa5e11a328648cbad16bbab2e1..6736093629bf92a888b0c971f3cf0a4e725cddec 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -28,6 +28,7 @@ public class DamageSource { @@ -45,7 +45,7 @@ index 2e443b02108b63fbaea2754b989e241494510363..09aa1677ad67701d592c18078eee5bd0 // Purpur end public Entity getCausingEntity() { -@@ -106,6 +116,7 @@ public class DamageSource { +@@ -107,6 +117,7 @@ public class DamageSource { damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); damageSource.scissors = this.isScissors(); // Purpur @@ -124,7 +124,7 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index aa89fcab22c7ad0c9425f5ae65cc2c6b150579cc..069ea4dc556d179d166e1dba3527c9def7129e65 100644 +index 2d47fd8290c9712bbf720452f5ffe134b1941d8c..b30d0d4d453252d1f5774f5155fb1ab61294d6be 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1133,7 +1133,7 @@ public class CraftEventFactory { diff --git a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch index e9ab9b13e..e13956348 100644 --- a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch @@ -18,10 +18,10 @@ index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 09aa1677ad67701d592c18078eee5bd0317ba7c4..4b920672dbd7d9baf15191caa8892359d378f3e7 100644 +index 6736093629bf92a888b0c971f3cf0a4e725cddec..ba4466c49a7c1713007140efdc2eb805e2516b4c 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -189,7 +189,7 @@ public class DamageSource { +@@ -190,7 +190,7 @@ public class DamageSource { ItemStack itemstack1 = itemstack; From d66bc35cd896daddba767a84edfbc47dc6255089 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 16 Feb 2024 18:39:14 -0800 Subject: [PATCH 064/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@7f85940 Updated Upstream (Bukkit) (#10255) PaperMC/Paper@7ccefdc Fire entity knockback event for ownerless tnt (#7171) --- gradle.properties | 2 +- patches/api/0007-Ridables.patch | 4 ++-- patches/api/0027-API-for-any-mob-to-burn-daylight.patch | 4 ++-- patches/api/0046-Fire-Immunity-API.patch | 4 ++-- patches/api/0052-Stonecutter-damage.patch | 4 ++-- patches/server/0265-Remove-Mojang-Profiler.patch | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7b45e30fb..64eb5a863 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 37df12143c4f19eb6017619b7e7abeb0f848598a +paperCommit = 7ccefdcd6cf6f467a3212fa02a75a8b9322f3582 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0007-Ridables.patch b/patches/api/0007-Ridables.patch index 2cf288cdd..67bcb9f69 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0007-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 9022567f32a58b94ed030db22524876d8f1df4aa..9fedbceb7f0cd65594a7084d9743373704333ad6 100644 +index d9929d9311e4b2b0ae13a8f6f13563257263f298..ee617a8681d2d887216d63211ed0595dc1fe7ddb 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1102,4 +1102,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1104,4 +1104,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch index 75c18dec1..c0536abe1 100644 --- a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 9fedbceb7f0cd65594a7084d9743373704333ad6..c646c51674f348bec6e2dee796cde5710da7bb67 100644 +index ee617a8681d2d887216d63211ed0595dc1fe7ddb..9fee171108e335827c5c164144284eb5a598742c 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1132,5 +1132,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1134,5 +1134,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); diff --git a/patches/api/0046-Fire-Immunity-API.patch b/patches/api/0046-Fire-Immunity-API.patch index 46b773bf3..2213b4431 100644 --- a/patches/api/0046-Fire-Immunity-API.patch +++ b/patches/api/0046-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index c646c51674f348bec6e2dee796cde5710da7bb67..f842fd5505f1e52b81299da179ed26780a1a1a13 100644 +index 9fee171108e335827c5c164144284eb5a598742c..a36fc32dd83339b6939cb4046538ec6285042397 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1139,5 +1139,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1141,5 +1141,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/api/0052-Stonecutter-damage.patch b/patches/api/0052-Stonecutter-damage.patch index c64311052..8d0888381 100644 --- a/patches/api/0052-Stonecutter-damage.patch +++ b/patches/api/0052-Stonecutter-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -index 3b20000d9ac3e29fe3bc5093e6635377bee88dbd..fae6f2c125eb6db88f3e8741b77f17b6817d62a9 100644 +index 446b3ffd5caca5344be1c250475679834cd0d4a2..3da8d3d8925cd7a111c0c357bceecfd3a801c8eb 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -@@ -292,7 +292,8 @@ public class EntityDamageEvent extends EntityEvent implements Cancellable { +@@ -303,7 +303,8 @@ public class EntityDamageEvent extends EntityEvent implements Cancellable { WORLD_BORDER, /** * Damage caused when an entity contacts a block such as a Cactus, diff --git a/patches/server/0265-Remove-Mojang-Profiler.patch b/patches/server/0265-Remove-Mojang-Profiler.patch index 679d787af..4b5cea4b2 100644 --- a/patches/server/0265-Remove-Mojang-Profiler.patch +++ b/patches/server/0265-Remove-Mojang-Profiler.patch @@ -1221,7 +1221,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1b58cc6ee449cfb655b7179be9d3bf8d48a86c4e..5c667328f76688d6b557452319117734aaa861a6 100644 +index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808ef676cc2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -409,7 +409,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1799,10 +1799,10 @@ index 857d1d80afd35d30a2947b0a6f953e5af1516048..18f92478f07de7c941ff8bbe0ec2ef2f this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index f0fbde839a527481314f54a1aefa0fc317ba2221..2feebcd1b6ca062f027acf02c15c36c810942980 100644 +index b678da2cbb93cea7971bc3c4d324cfca18b0bc97..b0884758d00efb1e3b4b47a539de2a819aab978a 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -665,7 +665,7 @@ public class Explosion { +@@ -675,7 +675,7 @@ public class Explosion { } if (flag1) { @@ -1811,7 +1811,7 @@ index f0fbde839a527481314f54a1aefa0fc317ba2221..2feebcd1b6ca062f027acf02c15c36c8 List> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); -@@ -741,7 +741,7 @@ public class Explosion { +@@ -751,7 +751,7 @@ public class Explosion { Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } From bcd90f7089dd090a20ea4138cdae0ab11b045281 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 Feb 2024 17:22:23 +0000 Subject: [PATCH 065/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a07d526 [ci skip] Fix JavaDoc mistake in BlockPistonRetractEvent (#10250) PaperMC/Paper@9a66f2b [ci skip] Fix javadoc mistake in PluginMeta (#10258) PaperMC/Paper@1964b22 Scoreboard objective number format api (#10036) PaperMC/Paper@d95341e FluidState API (#9951) PaperMC/Paper@351923d Run round-trip adventure codec tests with JSON, NBT, and Java ops. Use JavaOps for conversions. (#10031) PaperMC/Paper@4939f87 Add more ResourceLocation checks, some cleanup --- gradle.properties | 2 +- .../server/0001-Pufferfish-Server-Changes.patch | 16 ++++++++-------- patches/server/0002-Rebrand.patch | 6 +++--- patches/server/0003-Fix-pufferfish-issues.patch | 4 ++-- patches/server/0008-Ridables.patch | 10 +++++----- patches/server/0012-AFK-API.patch | 6 +++--- .../server/0071-Allow-color-codes-in-books.patch | 10 +++++----- patches/server/0072-Entity-lifespan.patch | 8 ++++---- .../0098-Furnace-uses-lava-from-underneath.patch | 8 ++++---- .../server/0119-PlayerBookTooLargeEvent.patch | 6 +++--- patches/server/0132-Dont-run-with-scissors.patch | 6 +++--- ...hift-right-click-to-use-exp-for-mending.patch | 6 +++--- ...n-to-disable-kick-for-out-of-order-chat.patch | 4 ++-- patches/server/0264-Remove-Timings.patch | 10 +++++----- ...ogger-output-for-invalid-movement-kicks.patch | 4 ++-- .../0275-Add-item-packet-serialize-event.patch | 4 ++-- 16 files changed, 55 insertions(+), 55 deletions(-) diff --git a/gradle.properties b/gradle.properties index 64eb5a863..d740e2788 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 7ccefdcd6cf6f467a3212fa02a75a8b9322f3582 +paperCommit = 4939f8711884901ddf1c56337f606de71cdae78d org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 46177b6b7..974e869ea 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..658e9b4590a82d179907feea04e129fdba9a2f42 100644 +index ce3747d8d2a8f4327766cf23d5aaa72cfcb380bc..998429d65a001d5d54a3e9cf53c8314c9ea26d2c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -52,7 +52,7 @@ index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..658e9b4590a82d179907feea04e129fd testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -57,6 +68,14 @@ dependencies { +@@ -58,6 +69,14 @@ dependencies { } val craftbukkitPackageVersion = "1_20_R3" // Paper @@ -67,7 +67,7 @@ index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..658e9b4590a82d179907feea04e129fd tasks.jar { archiveClassifier.set("dev") -@@ -69,7 +88,7 @@ tasks.jar { +@@ -70,7 +89,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -76,7 +76,7 @@ index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..658e9b4590a82d179907feea04e129fd "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -209,7 +228,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> +@@ -210,7 +229,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> } tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" @@ -1794,10 +1794,10 @@ index 6934e9dac0d69c043b73b7c46d59f2d39b37c67f..dbe612427b894df9da1335b94163ba9b if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6d943b5c38932de5fc3abb28618bf518c36edb47..9b7ee7a5a3c52a931e9db1c84f9941c5d9619d49 100644 +index ab5b259d8f72022c875cae73be25fe2da346c6b3..90910646031a73e1254fb844efdb9c8e32ec4233 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1139,6 +1139,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1135,6 +1135,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -2074,7 +2074,7 @@ index 09e8445a3f8c6b3ebc852a75a9a25b41a51ba659..dc11683ee4d8a6b7a1c42bcae36dc6e8 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 902c0e7f2a167845f46adef4578bc71ca8cabfe8..a66dc9c1fcaa0e89e00c78f2cd2fd6bf537a790b 100644 +index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e6c92cc99 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2980,7 +2980,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index a94300a457b25f0e33a8eeabba6dd5720ca9ab1e..b41635dd0569ff7df909df492d3e850aef7214be 100644 +index f52ccd4f3e062af3c7cc6eaea5b074a3bbd21690..a5cd70b6ada2b44f64db0985483ee5eadc67003f 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -94,12 +94,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index 23a3da893..313c7f105 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 658e9b4590a82d179907feea04e129fdba9a2f42..f253b340d75302fda8e59a2ad113f652c2417869 100644 +index 998429d65a001d5d54a3e9cf53c8314c9ea26d2c..3caad009206da9c8161f549af0c3437923f6aa4a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -36,7 +36,7 @@ index 658e9b4590a82d179907feea04e129fdba9a2f42..f253b340d75302fda8e59a2ad113f652 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -88,7 +92,7 @@ tasks.jar { +@@ -89,7 +93,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -45,7 +45,7 @@ index 658e9b4590a82d179907feea04e129fdba9a2f42..f253b340d75302fda8e59a2ad113f652 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -172,7 +176,7 @@ fun TaskContainer.registerRunTask( +@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 9fa74dca5..70635abfe 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/build.gradle.kts b/build.gradle.kts -index f253b340d75302fda8e59a2ad113f652c2417869..0c92d10f334f82d196e065c0811d0c1f48887377 100644 +index 3caad009206da9c8161f549af0c3437923f6aa4a..6bceca84bd073e25fc9aa19b8b713a2873713696 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -232,5 +232,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> +@@ -233,5 +233,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> } tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index d1b9cd956..f181c6fc9 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -66,10 +66,10 @@ index d39a3359249e2a312da0645d5abb625d98fe4034..44409eed0b603a1e8203a35ff0263d36 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9b7ee7a5a3c52a931e9db1c84f9941c5d9619d49..671757b90c21d2c7e9eeb24340e6b820e3d1a99e 100644 +index 90910646031a73e1254fb844efdb9c8e32ec4233..88eaf67ee621e06025f23657fe870cc2c9cb9b8f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2718,6 +2718,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -190,7 +190,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a66dc9c1fcaa0e89e00c78f2cd2fd6bf537a790b..dfc7b015da2a553122f98677c12636a84ce90a1f 100644 +index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353ae1717ede 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -4492,7 +4492,7 @@ index 61162ecd43dc5e6f7898daecdec49f444e6d869b..bfd69abf24d788b5e539498d56ade57f if (flag && !this.isSilent()) { this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 30ea3f64234fd1fda8dada3c7fb12be0730322a8..841fba3edf697647f59d0485b751c83625cccc83 100644 +index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf5f14a7d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -63,6 +63,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -5204,7 +5204,7 @@ index 8698104e3eb98e2cc5da5de87a8f538860c1d91d..39ae3335866669be54f31ee6cd10d41b + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 347bd2482c89e06716121bd7d05941203bab2a8b..aa89fcab22c7ad0c9425f5ae65cc2c6b150579cc 100644 +index d677759ac6b6d3cfe5a2af76dc1f0034b216ac2d..2d47fd8290c9712bbf720452f5ffe134b1941d8c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -591,6 +591,15 @@ public class CraftEventFactory { diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 702be370d..7ba17a034 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index 44409eed0b603a1e8203a35ff0263d360d81be32..cdb3cf1b9a809e3936164dbbcf9ccdfc return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 671757b90c21d2c7e9eeb24340e6b820e3d1a99e..cf2c47ad32539865c94dc768c9fe592086b85a4e 100644 +index 88eaf67ee621e06025f23657fe870cc2c9cb9b8f..56589f5c674670534ecf0b97c73c97e302716b9c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -124,7 +124,7 @@ index 671757b90c21d2c7e9eeb24340e6b820e3d1a99e..cf2c47ad32539865c94dc768c9fe5920 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1509,7 +1531,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1505,7 +1527,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { movedWrongly = true; if (event.getLogWarning()) @@ -133,7 +133,7 @@ index 671757b90c21d2c7e9eeb24340e6b820e3d1a99e..cf2c47ad32539865c94dc768c9fe5920 } } -@@ -1576,6 +1598,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1572,6 +1594,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/server/0071-Allow-color-codes-in-books.patch index aef067107..0be3d03d3 100644 --- a/patches/server/0071-Allow-color-codes-in-books.patch +++ b/patches/server/0071-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 5323fa77e8b4e489286a61c50fbaa4f8088f9988..cd740e4f7555a33f16bbec51e02130dbc7bb00ac 100644 +index 56589f5c674670534ecf0b97c73c97e302716b9c..39950e314ee9373c9b2a7a70dac1977ee7a303bf 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1249,13 +1249,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1245,13 +1245,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 5323fa77e8b4e489286a61c50fbaa4f8088f9988..cd740e4f7555a33f16bbec51e02130db this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1267,10 +1270,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1263,10 +1266,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 5323fa77e8b4e489286a61c50fbaa4f8088f9988..cd740e4f7555a33f16bbec51e02130db Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1280,11 +1286,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1276,11 +1282,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 5323fa77e8b4e489286a61c50fbaa4f8088f9988..cd740e4f7555a33f16bbec51e02130db } } -@@ -1297,6 +1303,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1293,6 +1299,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index df437c26a..b90a1c164 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-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 cd740e4f7555a33f16bbec51e02130dbc7bb00ac..01d9a2aa583280dc3bbb035205798c09e905677a 100644 +index 39950e314ee9373c9b2a7a70dac1977ee7a303bf..17d3d4caa010c97d0c78f6286140cb44c75a8b40 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2749,6 +2749,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2745,6 +2745,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { @@ -17,7 +17,7 @@ index cd740e4f7555a33f16bbec51e02130dbc7bb00ac..01d9a2aa583280dc3bbb035205798c09 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 e9b82e27730221778e38d3417d58484b139d40af..8a8ddfffe83554352f1e97fd33e8afd4bb4d82c0 100644 +index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85396edbe3 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -94,7 +94,7 @@ index e9b82e27730221778e38d3417d58484b139d40af..8a8ddfffe83554352f1e97fd33e8afd4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61aaa72034c4b8b964b65aab7b9edb4d3471bf93..f88bcb94067626daf8fe080f85de15dc81536fee 100644 +index 55ae989ae13ae9c0730f6f8df5f7eba52a560b1f..9ba3a90e1af9c733949c52988c56c05af46356e8 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/server/0098-Furnace-uses-lava-from-underneath.patch b/patches/server/0098-Furnace-uses-lava-from-underneath.patch index f6092ad88..2dd5b5a93 100644 --- a/patches/server/0098-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0098-Furnace-uses-lava-from-underneath.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Furnace uses lava from underneath diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 5eaab97a0c3b93a44a45e2ed11033fe01c0c95c2..4fa77dbb02b5b2ad679f022ad10702453af0d178 100644 +index 89d06253b00604114e543ebbe12a9993ae95dc41..c5bbb83f54d942d438ce8cf3a060ef2184069b88 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -44,6 +44,7 @@ import net.minecraft.world.level.Level; @@ -16,7 +16,7 @@ index 5eaab97a0c3b93a44a45e2ed11033fe01c0c95c2..4fa77dbb02b5b2ad679f022ad1070245 import net.minecraft.world.phys.Vec3; // CraftBukkit start import org.bukkit.craftbukkit.block.CraftBlock; -@@ -325,6 +326,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -330,6 +331,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit } ItemStack itemstack = (ItemStack) blockEntity.items.get(1); @@ -38,7 +38,7 @@ index 5eaab97a0c3b93a44a45e2ed11033fe01c0c95c2..4fa77dbb02b5b2ad679f022ad1070245 boolean flag2 = !((ItemStack) blockEntity.items.get(0)).isEmpty(); boolean flag3 = !itemstack.isEmpty(); -@@ -410,6 +426,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -415,6 +431,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit setChanged(world, pos, state); } @@ -47,7 +47,7 @@ index 5eaab97a0c3b93a44a45e2ed11033fe01c0c95c2..4fa77dbb02b5b2ad679f022ad1070245 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder 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 a468de219bfc2c6304d57368c36851b39363b5bb..79daa10d7fe58b8ddc428bc57b0f8227490da839 100644 +index ff057de0327eeb15d374c923729dafac5d811f2a..666ff3e30e09c91653bf51041afc95799c8955fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -409,6 +409,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0119-PlayerBookTooLargeEvent.patch index f37e2f43a..f40326c75 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0119-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 01d9a2aa583280dc3bbb035205798c09e905677a..e3d6323a8e11ec68fecb88c723b2de5cbb030a10 100644 +index 17d3d4caa010c97d0c78f6286140cb44c75a8b40..79034a8fdf8d8d71056bec84b05ad70ae5ceb99e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1169,10 +1169,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1165,10 +1165,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -24,7 +24,7 @@ index 01d9a2aa583280dc3bbb035205798c09e905677a..e3d6323a8e11ec68fecb88c723b2de5c server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1196,6 +1201,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1192,6 +1197,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index bd278a77e..4676b5315 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 32f33eb8b99ad4655cf021b7cf16eb15fe96ba59..4220c1b4e44ecf67653fe5a50a209866ddafd3bf 100644 +index 79034a8fdf8d8d71056bec84b05ad70ae5ceb99e..cac4127571c514a6f7697f31eb7d1edeca47d99a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1657,6 +1657,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1653,6 +1653,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 32f33eb8b99ad4655cf021b7cf16eb15fe96ba59..4220c1b4e44ecf67653fe5a50a209866 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1696,6 +1703,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1692,6 +1699,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch index aa4aa2f68..9badb2061 100644 --- a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0a5de5984f402aa49324ebc691bf8f84682aa680..1b2836737a38eb11e484c6073a6a33f5bc16d4e1 100644 +index cac4127571c514a6f7697f31eb7d1edeca47d99a..5e17a72dbe105a1a0221d857b6da39a855127aab 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2055,6 +2055,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,7 +48,7 @@ index 0a5de5984f402aa49324ebc691bf8f84682aa680..1b2836737a38eb11e484c6073a6a33f5 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd17cf2aabd7a778c481aa036258b91a27229998..100d0a10c83d69cfeca0b88572f9838682fc5cef 100644 +index da270cdc4afe91c65513469b04b4d247066a05ec..83da28a7edb4b101138034ed6ac71a0ae36a091b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -411,6 +411,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch index 664ea897c..003f1e1c7 100644 --- a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1b2836737a38eb11e484c6073a6a33f5bc16d4e1..8aad8c78869b644f0111e9b2265c128633386787 100644 +index 5e17a72dbe105a1a0221d857b6da39a855127aab..7dec861f49e7db0ac7cf4f4942881f237ebcd61f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1720,7 +1720,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { diff --git a/patches/server/0264-Remove-Timings.patch b/patches/server/0264-Remove-Timings.patch index e90aa25c7..67b7ac987 100644 --- a/patches/server/0264-Remove-Timings.patch +++ b/patches/server/0264-Remove-Timings.patch @@ -214,7 +214,7 @@ index 0088180c3574ace7eb4170c385d2ca9fc098d6f3..b1d2464fc151d4c636c3c2dc4e7b9446 this.profiler.popPush("send chunks"); iterator = this.playerList.getPlayers().iterator(); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 655b49f74139d960b81985e3c2eae23004f1e7e4..014883b1f7acf32a00e03da87862cabefefdf5f9 100644 +index 952b312c35b1c0d015e9d08646ee42d91f8bf1e3..957473abe92bdcdfe46c936f5331fc3e480eb156 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -523,7 +523,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -630,10 +630,10 @@ index 009d077f979d5ae85b359f3829038015af347429..b4b256721b7a5d25deec717123501a16 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8aad8c78869b644f0111e9b2265c128633386787..a5913c1b5c7cfb1db482d21607e264bea2862114 100644 +index 7dec861f49e7db0ac7cf4f4942881f237ebcd61f..19b4a69a3062870b831c37728cab8376d3340d54 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2460,7 +2460,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2456,7 +2456,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -642,7 +642,7 @@ index 8aad8c78869b644f0111e9b2265c128633386787..a5913c1b5c7cfb1db482d21607e264be if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2470,7 +2470,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2466,7 +2466,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -651,7 +651,7 @@ index 8aad8c78869b644f0111e9b2265c128633386787..a5913c1b5c7cfb1db482d21607e264be return; } -@@ -2483,7 +2483,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2479,7 +2479,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { diff --git a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch index 34066e4dd..5ef8024ed 100644 --- a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a5913c1b5c7cfb1db482d21607e264bea2862114..e38de89141ee2f61966abdd81bd00a2d671ef949 100644 +index 19b4a69a3062870b831c37728cab8376d3340d54..4cb24be39cdb223cfeb34c102bdc707f3850033b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index a5913c1b5c7cfb1db482d21607e264bea2862114..e38de89141ee2f61966abdd81bd00a2d return; } -@@ -1368,8 +1369,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1364,8 +1365,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index cde976b34..8edb72a24 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index 8384f72d408f6f31c4c8a1ba47b8caba600faaad..b1dd8d66a524254a270a725f5f7a46f2 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e38de89141ee2f61966abdd81bd00a2d671ef949..5b37a0bc513a68e0696362fa53633c125eb1fa8b 100644 +index 4cb24be39cdb223cfeb34c102bdc707f3850033b..b7803d6753d28f174b8a6e5b31eccfa44b94c6be 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3369,6 +3369,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3365,6 +3365,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } From 5b468f25626e796aee99ddef87509861a58780a7 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 Feb 2024 16:00:59 -0800 Subject: [PATCH 066/148] Fix bee count payload lag/crash exploit and make it configurable. (#1491) Co-authored-by: Dexuby --- ...counts-in-beehives-to-Purpur-clients.patch | 28 ++++++++++++++++--- .../0239-Configurable-food-attributes.patch | 4 +-- .../server/0240-Max-joins-per-second.patch | 6 ++-- ...o-disable-kick-for-out-of-order-chat.patch | 4 +-- patches/server/0264-Remove-Timings.patch | 2 +- ...0275-Add-item-packet-serialize-event.patch | 4 +-- ...on-to-fix-MC-3304-projectile-looting.patch | 8 +++--- ...-Configurable-block-blast-resistance.patch | 4 +-- ...igurable-block-fall-damage-modifiers.patch | 4 +-- ...dd-log-suppression-for-LibraryLoader.patch | 4 +-- ...bute-clamping-and-armor-limit-config.patch | 4 +-- ...lways-showing-item-in-player-death-m.patch | 4 +-- 12 files changed, 48 insertions(+), 28 deletions(-) diff --git a/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 508428d29..b988a29b9 100644 --- a/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -17,23 +17,39 @@ index 4a0e56f4fb6903ea5f4974052d9d55447a6254ea..cd2394263cc14d99861f98c77f016e54 this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 20bf50f07f50409d0d1f394d7c3acde9a00ff98d..655b49f74139d960b81985e3c2eae23004f1e7e4 100644 +index 0d70fe71651c8f9d75a604ed2d5c480b41df1dd6..38de0e9b83ecac489ca676725274d14fcb60dd5c 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -376,6 +376,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) mobSpawnExecutor.start(); // Pufferfish org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur -+ org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur return true; } } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index ffff69021335ca52d10a07bb3b3f272eea6ebcb5..0e28cf20a870f3f3662bd1d8f7a4f2cbf13c48bf 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -434,6 +434,11 @@ public class PurpurConfig { + allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); + } + ++ public static boolean beeCountPayload = false; ++ private static void beeCountPayload() { ++ beeCountPayload = getBoolean("settings.bee-count-payload", beeCountPayload); ++ } ++ + public static boolean loggerSuppressInitLegacyMaterialError = false; + public static boolean loggerSuppressIgnoredAdvancementWarnings = false; + public static boolean loggerSuppressUnrecognizedRecipeErrors = false; diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..8a5faed6c1ac6850b87405e774e4393877d61c92 +index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409faab8b62e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java -@@ -0,0 +1,92 @@ +@@ -0,0 +1,96 @@ +package org.purpurmc.purpur.task; + +import com.google.common.io.ByteArrayDataInput; @@ -92,6 +108,10 @@ index 0000000000000000000000000000000000000000..8a5faed6c1ac6850b87405e774e43938 + + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + ++ // targeted block info max range specified in client at net.minecraft.client.gui.hud.DebugHud#render ++ if (!pos.getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20 ++ if (serverPlayer.level().getChunkIfLoaded(pos) == null) return; ++ + BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos); + if (!(blockEntity instanceof BeehiveBlockEntity beehive)) { + return; diff --git a/patches/server/0239-Configurable-food-attributes.patch b/patches/server/0239-Configurable-food-attributes.patch index 025e3251c..0dde5b5bb 100644 --- a/patches/server/0239-Configurable-food-attributes.patch +++ b/patches/server/0239-Configurable-food-attributes.patch @@ -69,10 +69,10 @@ index e83ea53da012f3dcaa1f53bf6082a17a69e6ee13..cf68dca4096556b0c2594c76fcf11341 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ffff69021335ca52d10a07bb3b3f272eea6ebcb5..590286e593fec706a3f16f0080b35aa0637ca06d 100644 +index 0e28cf20a870f3f3662bd1d8f7a4f2cbf13c48bf..ce3ab604e6ed6669f38abf83d40b500148277b9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -461,4 +461,75 @@ public class PurpurConfig { +@@ -466,4 +466,75 @@ public class PurpurConfig { String setPattern = getString("settings.username-valid-characters", defaultPattern); usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0240-Max-joins-per-second.patch b/patches/server/0240-Max-joins-per-second.patch index 065daf299..96b02d210 100644 --- a/patches/server/0240-Max-joins-per-second.patch +++ b/patches/server/0240-Max-joins-per-second.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index e18406b4172499b0cb116a45cd5a968ae3e3fdce..57d0fbca001da7cace3eeb69526e28e8a2ef5ac5 100644 +index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..b41cab778f446434b788946ea9d3e02c152e570e 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -569,11 +569,20 @@ public class Connection extends SimpleChannelInboundHandler> { @@ -31,10 +31,10 @@ index e18406b4172499b0cb116a45cd5a968ae3e3fdce..57d0fbca001da7cace3eeb69526e28e8 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 590286e593fec706a3f16f0080b35aa0637ca06d..f17b160b304b1adbde80690ae482986309f3befe 100644 +index ce3ab604e6ed6669f38abf83d40b500148277b9d..a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -451,8 +451,10 @@ public class PurpurConfig { +@@ -456,8 +456,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch index 003f1e1c7..aee69dd0d 100644 --- a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index 5e17a72dbe105a1a0221d857b6da39a855127aab..7dec861f49e7db0ac7cf4f4942881f23 voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3a49455509a26063a62e39fb3d3ad81e80bced54..40922e69274de6bc3da6f74b0216a816a1fb7722 100644 +index 9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2..b55a4366f69a1f259d5d7aed01764aec14a1dbb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -456,9 +456,11 @@ public class PurpurConfig { +@@ -461,9 +461,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0264-Remove-Timings.patch b/patches/server/0264-Remove-Timings.patch index 67b7ac987..0ca41254e 100644 --- a/patches/server/0264-Remove-Timings.patch +++ b/patches/server/0264-Remove-Timings.patch @@ -214,7 +214,7 @@ index 0088180c3574ace7eb4170c385d2ca9fc098d6f3..b1d2464fc151d4c636c3c2dc4e7b9446 this.profiler.popPush("send chunks"); iterator = this.playerList.getPlayers().iterator(); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 952b312c35b1c0d015e9d08646ee42d91f8bf1e3..957473abe92bdcdfe46c936f5331fc3e480eb156 100644 +index 38de0e9b83ecac489ca676725274d14fcb60dd5c..6a9bd431e9c2e1fc1e51d394eaccba864bbeac89 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -523,7 +523,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index 8edb72a24..ebb823fd1 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -65,10 +65,10 @@ index 4cb24be39cdb223cfeb34c102bdc707f3850033b..b7803d6753d28f174b8a6e5b31eccfa4 boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 128eab7246bf263e302cbeb5e4c359a41dd2cd3f..be7b302257447d5593efe9b512d036b293f340b5 100644 +index 5313ba91ffc625b27d5bb99395f0e719829f6bda..5329ad6493950a561bd46045e35a9bd70ac4405f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -563,4 +563,9 @@ public class PurpurConfig { +@@ -568,4 +568,9 @@ public class PurpurConfig { } }); } diff --git a/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 7d1f05d58..2fd337bec 100644 --- a/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) 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 00ec6661f07d9b8dc3744c4d2d128643f680c8d8..56c150d037964e82d9aa3fac2008dc1e14cced8c 100644 +index 2d1bff45830b489caba33552cafa2ae795d6def6..fd1d6c4c3f78b610282318e98ba3742f8bf6e20e 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -74,6 +74,7 @@ public abstract class AbstractArrow extends Projectile { @@ -48,7 +48,7 @@ index 220513d3fd5645322886522ea4f6b8c55d043b3c..d45a2f49c82d00801578c34e5f5277fc org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(entityhuman, stack, itemstack1, entityarrow, entityhuman.getUsedItemHand(), f, !flag1); if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index b112845e94d354bbadff67673ea0b4939672bd3e..62f291abef664d8bccd682db9de8d0ae6fe2b9bd 100644 +index 05d3a7c077df1b92819655790230cd22028f6893..211d8e59a9b3460b346e5f8cf581df70b05d1b8f 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -291,6 +291,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { @@ -104,10 +104,10 @@ index 3fb1e558c3510243c94981211f9a0e5e0ef1895b..e5177e5ffcac360f935f2139db4554c6 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index be7b302257447d5593efe9b512d036b293f340b5..2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181 100644 +index 5329ad6493950a561bd46045e35a9bd70ac4405f..88763ca8cc31bda23f8f31d2bc990fb4a85c9955 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -568,4 +568,9 @@ public class PurpurConfig { +@@ -573,4 +573,9 @@ public class PurpurConfig { private static void fixNetworkSerializedCreativeItems() { fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative); } diff --git a/patches/server/0277-Configurable-block-blast-resistance.patch b/patches/server/0277-Configurable-block-blast-resistance.patch index 82e061390..3504b073e 100644 --- a/patches/server/0277-Configurable-block-blast-resistance.patch +++ b/patches/server/0277-Configurable-block-blast-resistance.patch @@ -18,10 +18,10 @@ index 63c4d52c348d9297a24abb17e105b2f4c7758740..d38d8fc7ef22fb68e867cc29dab1171c protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181..3c163e2b512294f93255f25ccdc7917ded14ca4a 100644 +index 88763ca8cc31bda23f8f31d2bc990fb4a85c9955..b13635ec623c80b1c32f2a6c11680dae899e8ec7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -573,4 +573,19 @@ public class PurpurConfig { +@@ -578,4 +578,19 @@ public class PurpurConfig { private static void fixProjectileLootingTransfer() { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0278-Configurable-block-fall-damage-modifiers.patch b/patches/server/0278-Configurable-block-fall-damage-modifiers.patch index 2ddf94a1f..a5a16d4a8 100644 --- a/patches/server/0278-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0278-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3c163e2b512294f93255f25ccdc7917ded14ca4a..f743f97c622f1672374cc446331435edb1ce1ed9 100644 +index b13635ec623c80b1c32f2a6c11680dae899e8ec7..bc001cac7d478baf5118ec746de8d2d2eba2ba5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -588,4 +588,50 @@ public class PurpurConfig { +@@ -593,4 +593,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch index 119549530..e636b97ae 100644 --- a/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f743f97c622f1672374cc446331435edb1ce1ed9..24db1eb4d9b1677287bbe157320575fee926577a 100644 +index bc001cac7d478baf5118ec746de8d2d2eba2ba5c..5343628ea71c14fba785a0b36ef4abd05b6f63c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -465,11 +465,14 @@ public class PurpurConfig { +@@ -470,11 +470,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch index d25508bc6..63c6d9a31 100644 --- a/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch @@ -36,10 +36,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 24db1eb4d9b1677287bbe157320575fee926577a..3eba2f3df5723d068ff62c78243e39b8f4e3f853 100644 +index 5343628ea71c14fba785a0b36ef4abd05b6f63c3..cd2c365bcaca0720dc543188a23ff585192cb76e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -577,6 +577,16 @@ public class PurpurConfig { +@@ -582,6 +582,16 @@ public class PurpurConfig { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch index e13956348..fa2d82985 100644 --- a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,10 +31,10 @@ index 6736093629bf92a888b0c971f3cf0a4e725cddec..ba4466c49a7c1713007140efdc2eb805 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3eba2f3df5723d068ff62c78243e39b8f4e3f853..e9fc2b4661f5275b93db5d3fdf25a8bdc3b38920 100644 +index cd2c365bcaca0720dc543188a23ff585192cb76e..776d397fc31db121fa933a2ae2b4f1589fc10247 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -647,4 +647,9 @@ public class PurpurConfig { +@@ -652,4 +652,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } From 8f371ac6c4f399d98d6dab29b755033753ef6314 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 Feb 2024 16:30:16 -0800 Subject: [PATCH 067/148] add an option to register "unused" minecraft commands --- ...06-register-minecraft-debug-commands.patch | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 patches/server/0306-register-minecraft-debug-commands.patch diff --git a/patches/server/0306-register-minecraft-debug-commands.patch b/patches/server/0306-register-minecraft-debug-commands.patch new file mode 100644 index 000000000..f6fe0d95d --- /dev/null +++ b/patches/server/0306-register-minecraft-debug-commands.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Sun, 18 Feb 2024 16:28:32 -0800 +Subject: [PATCH] register minecraft debug commands + + +diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java +index b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4..4b88c94816645eb9a1b438f6e9312b5b5fd8d0a7 100644 +--- a/src/main/java/net/minecraft/commands/Commands.java ++++ b/src/main/java/net/minecraft/commands/Commands.java +@@ -221,7 +221,7 @@ public class Commands { + JfrCommand.register(this.dispatcher); + } + +- if (SharedConstants.IS_RUNNING_IN_IDE) { ++ if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur + TestCommand.register(this.dispatcher); + ResetChunksCommand.register(this.dispatcher); + RaidCommand.register(this.dispatcher); +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 776d397fc31db121fa933a2ae2b4f1589fc10247..efe25d3894f3ad000257c72d9a5e06ef22446d41 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -657,4 +657,9 @@ public class PurpurConfig { + private static void playerDeathsAlwaysShowItem() { + playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); + } ++ ++ public static boolean registerMinecraftDebugCommands = false; ++ private static void registerMinecraftDebugCommands() { ++ registerMinecraftDebugCommands = getBoolean("settings.register-minecraft-debug-commands", registerMinecraftDebugCommands); ++ } + } From ec60d4826eee00a1df37d0d4a98b05b84f3084d3 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 Feb 2024 18:13:06 -0800 Subject: [PATCH 068/148] load config early for registerMinecraftDebugCommands option --- ...06-register-minecraft-debug-commands.patch | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/patches/server/0306-register-minecraft-debug-commands.patch b/patches/server/0306-register-minecraft-debug-commands.patch index f6fe0d95d..ce76ca9a6 100644 --- a/patches/server/0306-register-minecraft-debug-commands.patch +++ b/patches/server/0306-register-minecraft-debug-commands.patch @@ -1,22 +1,39 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: granny +From: granny Date: Sun, 18 Feb 2024 16:28:32 -0800 Subject: [PATCH] register minecraft debug commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4..4b88c94816645eb9a1b438f6e9312b5b5fd8d0a7 100644 +index b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4..b203394ed62807e7d5df433830993f1d2ee14939 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -221,7 +221,7 @@ public class Commands { +@@ -221,8 +221,8 @@ public class Commands { JfrCommand.register(this.dispatcher); } - if (SharedConstants.IS_RUNNING_IN_IDE) { +- TestCommand.register(this.dispatcher); + if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur - TestCommand.register(this.dispatcher); ++ if (!org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands) TestCommand.register(this.dispatcher); // Purpur ResetChunksCommand.register(this.dispatcher); RaidCommand.register(this.dispatcher); + DebugPathCommand.register(this.dispatcher); +diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java +index 61840cfd64caba6595dfc99c91c76a195638d4ee..b4a009a1108758110181af3321a91b3ec9cf74dc 100644 +--- a/src/main/java/net/minecraft/server/Main.java ++++ b/src/main/java/net/minecraft/server/Main.java +@@ -141,6 +141,10 @@ public class Main { + // Paper start - load config files early for access below if needed + org.bukkit.configuration.file.YamlConfiguration bukkitConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("bukkit-settings")); + org.bukkit.configuration.file.YamlConfiguration spigotConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("spigot-settings")); ++ // Purpur start ++ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); ++ org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands = purpurConfiguration.getBoolean("settings.register-minecraft-debug-commands"); ++ // Purpur end + // Paper end - load config files early for access below if needed + + if (optionset.has("initSettings")) { // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 776d397fc31db121fa933a2ae2b4f1589fc10247..efe25d3894f3ad000257c72d9a5e06ef22446d41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java From 9cd8eb4fcbf703f1098ceb8be29830fd11a7a32f Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 19 Feb 2024 21:37:33 -0800 Subject: [PATCH 069/148] move code back into tick method, closes #1493 --- ...s-attracted-to-crystals-and-crystals-shoot-ph.patch | 10 +++++----- .../server/0130-End-crystal-explosion-options.patch | 6 +++--- patches/server/0288-End-Crystal-Cramming.patch | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 6aa570d76..53dd3c50f 100644 --- a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0066-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 c99ab157e43fc990549fc06f5b6fb1e227014fde..4f0e1a653a117687b5b330ff424873d01f574bee 100644 +index c99ab157e43fc990549fc06f5b6fb1e227014fde..aa75a9229210302dbccd6186439c3c35481ef46c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -30,6 +30,12 @@ public class EndCrystal extends Entity { @@ -21,8 +21,8 @@ index c99ab157e43fc990549fc06f5b6fb1e227014fde..4f0e1a653a117687b5b330ff424873d0 public EndCrystal(EntityType type, Level world) { super(type, world); -@@ -158,6 +164,49 @@ public class EndCrystal extends Entity { - } +@@ -79,6 +85,49 @@ public class EndCrystal extends Entity { + // Paper end - Fix invulnerable end crystals } + // Purpur start @@ -70,7 +70,7 @@ index c99ab157e43fc990549fc06f5b6fb1e227014fde..4f0e1a653a117687b5b330ff424873d0 + // Purpur end } - public void setBeamTarget(@Nullable BlockPos beamTarget) { + @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 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b1fecf3a7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -256,7 +256,7 @@ index 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b 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 5c83d5b665bfccd7c54c18012d4bec7d975de3f2..522ffc7b0d7a028436c385da4809070fb6095c4c 100644 +index 7fabef36d3f9a5294a62ed956010d7ef853e00ab..e1652079b92a5c951b5191997803e9d486892c61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1065,6 +1065,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0130-End-crystal-explosion-options.patch b/patches/server/0130-End-crystal-explosion-options.patch index 5f774c9bd..a5d06766a 100644 --- a/patches/server/0130-End-crystal-explosion-options.patch +++ b/patches/server/0130-End-crystal-explosion-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] End crystal explosion options 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 4f0e1a653a117687b5b330ff424873d01f574bee..9d86ce2012a93d9fb0d52dc6db796ae31d4f0e21 100644 +index aa75a9229210302dbccd6186439c3c35481ef46c..ea7075dd4a9bc466d850cabc69199d56e48c825a 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 @@ -48,6 +48,22 @@ public class EndCrystal extends Entity { @@ -31,7 +31,7 @@ index 4f0e1a653a117687b5b330ff424873d01f574bee..9d86ce2012a93d9fb0d52dc6db796ae3 @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -130,16 +146,18 @@ public class EndCrystal extends Entity { +@@ -173,16 +189,18 @@ public class EndCrystal extends Entity { // CraftBukkit end this.remove(Entity.RemovalReason.KILLED); if (!source.is(DamageTypeTags.IS_EXPLOSION)) { @@ -53,7 +53,7 @@ index 4f0e1a653a117687b5b330ff424873d01f574bee..9d86ce2012a93d9fb0d52dc6db796ae3 this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d3725563f58b523482bac44134f54e13d017ce8..4d7d111a2cb6f02d3263174af9e70548be0fe971 100644 +index f1e99cc608fb9afab44c2c960c7b74468ec62c07..40ca971f169bd07da0a2f7ba37e3a4aa534d0c7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -464,6 +464,43 @@ public class PurpurWorldConfig { diff --git a/patches/server/0288-End-Crystal-Cramming.patch b/patches/server/0288-End-Crystal-Cramming.patch index 649be02ba..f805f9e4d 100644 --- a/patches/server/0288-End-Crystal-Cramming.patch +++ b/patches/server/0288-End-Crystal-Cramming.patch @@ -5,7 +5,7 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 85ae4790e9079c60a266a029c9c19bd0955300b2..c52b3d9dec7d04305cd4515e0af74d2f201702d4 100644 +index ea7075dd4a9bc466d850cabc69199d56e48c825a..2b850c313c7bb2f83af62709583d0ec35400215a 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 @@ -99,6 +99,7 @@ public class EndCrystal extends Entity { @@ -15,9 +15,9 @@ index 85ae4790e9079c60a266a029c9c19bd0955300b2..c52b3d9dec7d04305cd4515e0af74d2f + if (this.level().purpurConfig.endCrystalCramming > 0 && this.level().getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level().purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur } - } + // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 029e989caeb427997821216d14ef03b2099bcd58..cd0ce2e5e80ab2519247d8e6cfa2084455101034 100644 +index 61dfb8c7e8606136981ec61f2b7ef02711d3a395..6ec6806033a1033d3740e450b84f242b8e3749a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { From 8f4b0aeb6758ca751eca49e508dd98c39909b33b Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 22 Feb 2024 23:29:50 -0800 Subject: [PATCH 070/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@3ea95ef Do not access world state to see if we can see a Player --- gradle.properties | 2 +- patches/server/0008-Ridables.patch | 4 ++-- patches/server/0072-Entity-lifespan.patch | 4 ++-- patches/server/0275-Add-item-packet-serialize-event.patch | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index d740e2788..4a975ddb5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 4939f8711884901ddf1c56337f606de71cdae78d +paperCommit = 3ea95efdebba7254e842dec66214f71de4721993 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index f181c6fc9..9a8cac58d 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -66,10 +66,10 @@ index d39a3359249e2a312da0645d5abb625d98fe4034..44409eed0b603a1e8203a35ff0263d36 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 90910646031a73e1254fb844efdb9c8e32ec4233..88eaf67ee621e06025f23657fe870cc2c9cb9b8f 100644 +index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6bd9ac31a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2718,6 +2718,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index b90a1c164..9b482f430 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-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 39950e314ee9373c9b2a7a70dac1977ee7a303bf..17d3d4caa010c97d0c78f6286140cb44c75a8b40 100644 +index 1cc86f8dd63802b7227de56b44c859c253a80756..b9a4815d6f942d78851213224a475b154c264d86 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2745,6 +2745,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2749,6 +2749,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index ebb823fd1..c3e08b0cc 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -48,10 +48,10 @@ index 8384f72d408f6f31c4c8a1ba47b8caba600faaad..b1dd8d66a524254a270a725f5f7a46f2 while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4cb24be39cdb223cfeb34c102bdc707f3850033b..b7803d6753d28f174b8a6e5b31eccfa44b94c6be 100644 +index 921e04a0280dde21ee5af79188052294d30a0bbc..ae5a2152cde8922deeb8d1d8a85bf39518ccd759 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3365,6 +3365,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3369,6 +3369,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } From 1083e45074966cc634f23f0a92506fb7d3685874 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 23 Feb 2024 22:51:48 -0800 Subject: [PATCH 071/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@71c84c8 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#10277) PaperMC/Paper@e3bc4c4 Make debug mode print current configuration phase PaperMC/Paper@d0ebfbb Fix corrupted plugin.yml breaking plugin loading (#10279) PaperMC/Paper@681bbff Fix spawnreason saving --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 88 +++---- patches/server/0002-Rebrand.patch | 8 +- .../server/0003-Fix-pufferfish-issues.patch | 43 +++- .../0007-Component-related-conveniences.patch | 8 +- patches/server/0008-Ridables.patch | 236 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 84 +++---- .../0010-Barrels-and-enderchests-6-rows.patch | 8 +- patches/server/0012-AFK-API.patch | 8 +- .../0015-LivingEntity-safeFallDistance.patch | 12 +- ...0026-Charged-creeper-naturally-spawn.patch | 6 +- .../server/0029-Tulips-change-fox-type.patch | 10 +- ...option-to-set-armorstand-step-height.patch | 10 +- patches/server/0034-Cows-eat-mushrooms.patch | 6 +- ...cow-rotation-when-shearing-mooshroom.patch | 4 +- .../server/0036-Pigs-give-saddle-back.patch | 6 +- ...38-Ender-dragon-always-drop-full-exp.patch | 6 +- ...able-loot-drops-on-death-by-cramming.patch | 6 +- ...hould-check-if-entity-can-use-portal.patch | 4 +- .../0045-Add-permission-for-F3-N-debug.patch | 4 +- ...low-loyalty-on-tridents-to-work-in-t.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...0049-Villagers-follow-emerald-blocks.patch | 12 +- .../0050-Allow-leashing-villagers.patch | 14 +- ...Add-player-death-exp-control-options.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 8 +- .../0055-Add-canSaveToDisk-to-Entity.patch | 14 +- ...ispenser-curse-of-binding-protection.patch | 4 +- ...g-mends-most-damages-equipment-first.patch | 4 +- .../0060-Implement-elytra-settings.patch | 4 +- .../server/0061-Item-entity-immunities.patch | 12 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- patches/server/0072-Entity-lifespan.patch | 16 +- ...leport-to-spawn-if-outside-world-bor.patch | 4 +- .../0076-Configurable-villager-breeding.patch | 6 +- .../0078-Totems-work-in-inventory.patch | 4 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ows-should-not-reset-despawn-counter.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 36 +-- ...mes-from-item-forms-of-entities-to-e.patch | 10 +- ...106-Add-configurable-snowball-damage.patch | 10 +- ...07-Changeable-Mob-Left-Handed-Chance.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 8 +- patches/server/0117-Implement-TPSBar.patch | 8 +- ...therite-armor-grants-fire-resistance.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 40 +-- ...0124-Add-EntityTeleportHinderedEvent.patch | 10 +- ...26-Movement-options-for-armor-stands.patch | 10 +- .../server/0127-Fix-stuck-in-portals.patch | 4 +- ...oggle-for-water-sensitive-mob-damage.patch | 90 +++---- .../0130-End-crystal-explosion-options.patch | 14 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 10 +- patches/server/0133-One-Punch-Man.patch | 4 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +- ...dd-back-player-spawned-endermite-API.patch | 14 +- ...ig-to-make-Creepers-explode-on-death.patch | 12 +- ...0145-Add-config-for-villager-trading.patch | 10 +- patches/server/0147-Drowning-Settings.patch | 10 +- ...ig-to-show-Armor-Stand-arms-on-spawn.patch | 6 +- ...-Config-to-change-max-number-of-bees.patch | 4 +- ...8-Config-for-wither-explosion-radius.patch | 6 +- .../0162-Configurable-mob-blindness.patch | 4 +- ...h-to-impact-Creeper-explosion-radius.patch | 6 +- ...nge-multiplier-critical-damage-value.patch | 4 +- ...ee-can-work-when-raining-or-at-night.patch | 8 +- ...173-API-for-any-mob-to-burn-daylight.patch | 24 +- .../0176-Add-toggle-for-sand-duping-fix.patch | 8 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...after-eating-food-fills-hunger-bar-c.patch | 8 +- ...layer-join-full-server-by-permission.patch | 4 +- .../0181-Add-portal-permission-bypass.patch | 6 +- patches/server/0190-Summoner-API.patch | 16 +- .../0194-Player-ridable-in-water-option.patch | 4 +- .../0197-Toggle-for-kinetic-damage.patch | 4 +- ...0201-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...turally-aggressive-to-players-chance.patch | 12 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...xtinguish-fire-blocks-with-snowballs.patch | 8 +- .../0225-Mobs-always-drop-experience.patch | 126 +++++----- .../0230-Mob-head-visibility-percent.patch | 4 +- ...rable-valid-characters-for-usernames.patch | 4 +- ...-Shears-can-have-looting-enchantment.patch | 8 +- ...Configurable-player-pickup-exp-delay.patch | 8 +- ...nfigurable-minimum-demand-for-trades.patch | 6 +- .../0242-Lobotomize-stuck-villagers.patch | 10 +- ...fig-for-mob-last-hurt-by-player-time.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 6 +- patches/server/0251-Stonecutter-damage.patch | 6 +- .../0254-Skeletons-eat-wither-roses.patch | 6 +- ...0261-Add-toggle-for-RNG-manipulation.patch | 6 +- patches/server/0264-Remove-Timings.patch | 14 +- .../server/0265-Remove-Mojang-Profiler.patch | 70 +++--- ...on-to-fix-MC-3304-projectile-looting.patch | 6 +- .../0280-Milk-Keeps-Beneficial-Effects.patch | 8 +- patches/server/0284-Fire-Immunity-API.patch | 16 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 6 +- .../server/0288-End-Crystal-Cramming.patch | 4 +- .../server/0295-Add-mending-multiplier.patch | 6 +- patches/server/0297-Stored-Bee-API.patch | 8 +- .../server/0298-Shears-can-defuse-TNT.patch | 6 +- ...r-piglins-to-ignore-gold-trimmed-arm.patch | 6 +- 104 files changed, 782 insertions(+), 743 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4a975ddb5..68e007376 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 3ea95efdebba7254e842dec66214f71de4721993 +paperCommit = 681bbff110d9a56152ae898c4dfe1c0356b40e69 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 974e869ea..1b3c10ccc 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index ce3747d8d2a8f4327766cf23d5aaa72cfcb380bc..998429d65a001d5d54a3e9cf53c8314c9ea26d2c 100644 +index 241808d8619e17c0681f79acbbc98af5bf52dd89..12b774464e8de3a07993be23e233d31e11ede7b1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -52,7 +52,7 @@ index ce3747d8d2a8f4327766cf23d5aaa72cfcb380bc..998429d65a001d5d54a3e9cf53c8314c testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -58,6 +69,14 @@ dependencies { +@@ -59,6 +70,14 @@ dependencies { } val craftbukkitPackageVersion = "1_20_R3" // Paper @@ -67,7 +67,7 @@ index ce3747d8d2a8f4327766cf23d5aaa72cfcb380bc..998429d65a001d5d54a3e9cf53c8314c tasks.jar { archiveClassifier.set("dev") -@@ -70,7 +89,7 @@ tasks.jar { +@@ -71,7 +90,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -76,7 +76,7 @@ index ce3747d8d2a8f4327766cf23d5aaa72cfcb380bc..998429d65a001d5d54a3e9cf53c8314c "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -210,7 +229,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> +@@ -211,7 +230,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> } tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" @@ -1560,7 +1560,7 @@ index 68d268b6fff126e8645b6deec3fb549ea2286b77..435b129c433704c24828d8fb57e14333 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 5a7278b093e37b95fb005ad5cc3cac90ac36f8fb..28d05b46952397bb664a1c8dae71816cafee89ce 100644 +index 12109446fc76a39faee6cda042ca48b3fd3809f4..1081e9df44bb24b2c51ebd9364c21c7b2a3a205a 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -243,7 +243,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1738,7 +1738,7 @@ index 529ab44baaf573b97cf7e89560c548642733188f..db55ad9aaabfa1ea998754f3ac352d16 this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6934e9dac0d69c043b73b7c46d59f2d39b37c67f..dbe612427b894df9da1335b94163ba9b89b090c0 100644 +index 6907d1be36fbdf0856c0e11983218d2fd1f9cb46..531c9ef0d6504fc1632b83bd93b9cf76e91377e8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -894,6 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1794,7 +1794,7 @@ index 6934e9dac0d69c043b73b7c46d59f2d39b37c67f..dbe612427b894df9da1335b94163ba9b if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ab5b259d8f72022c875cae73be25fe2da346c6b3..90910646031a73e1254fb844efdb9c8e32ec4233 100644 +index 87e5ee042ab2c052d25ab4c2521a68cf2e2d67b6..601ac8738a775eafde2c9e237feb596a9a47ba89 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1135,6 +1135,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1918,10 +1918,10 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f6df53999 100644 +index 45439b0cc4ea69e409fd41d4684403c0e0feab12..098c410f0285948d7ac48835c352f9c97742c5c7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -308,7 +308,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double yo; public double zo; private Vec3 position; @@ -1930,7 +1930,7 @@ index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f private ChunkPos chunkPosition; private Vec3 deltaMovement; private float yRot; -@@ -423,6 +423,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -424,6 +424,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean fixedPose = false; // Paper - Expand Pose API @@ -1940,7 +1940,7 @@ index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -807,6 +810,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -820,6 +823,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public void tick() { @@ -1953,7 +1953,7 @@ index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f this.baseTick(); } -@@ -4405,16 +4414,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4421,16 +4430,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -1979,7 +1979,7 @@ index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4422,14 +4433,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4438,14 +4449,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2047,7 +2047,7 @@ index 906eded9a2ab61737a30cfe89292a71237ce4eb7..0f2af6968f6bb47f5ef7e3f63cbfdc2f if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4451,9 +4509,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4467,9 +4525,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end } } @@ -2074,10 +2074,10 @@ index 09e8445a3f8c6b3ebc852a75a9a25b41a51ba659..dc11683ee4d8a6b7a1c42bcae36dc6e8 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e6c92cc99 100644 +index 23570a0b1227a840b9c1e6ae326827ea655bb5f7..25e30408c964b5257f1cf945892bd668df38252b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; +@@ -143,7 +143,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; // CraftBukkit end @@ -2085,7 +2085,7 @@ index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e public abstract class LivingEntity extends Entity implements Attackable { -@@ -413,7 +412,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -414,7 +413,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; if (!this.level().isClientSide) { @@ -2094,7 +2094,7 @@ index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1410,6 +1409,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1418,6 +1417,19 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } @@ -2114,7 +2114,7 @@ index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -2016,6 +2028,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2024,6 +2036,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -2136,10 +2136,10 @@ index aceee33eebd4d5f89e62a42910ec51843f33843b..aa9696facf7780313c322d01928aab7e if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index fa0b78139fecc0245e168ebeb4172ea2531a3fec..4be5ae6bfc7bbb8c928e13208dfcd7f455c56cfe 100644 +index 2439f8d48daca7329049436414f06a36b4b79029..4cf2963fdbe9003fd18ac8c2035ccded57c02abd 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -221,14 +221,16 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -222,14 +222,16 @@ public abstract class Mob extends LivingEntity implements Targeting { return this.lookControl; } @@ -2158,7 +2158,7 @@ index fa0b78139fecc0245e168ebeb4172ea2531a3fec..4be5ae6bfc7bbb8c928e13208dfcd7f4 this.targetSelector.tick(); } } -@@ -912,16 +914,20 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -913,16 +915,20 @@ public abstract class Mob extends LivingEntity implements Targeting { if (i % 2 != 0 && this.tickCount > 1) { this.level().getProfiler().push("targetSelector"); @@ -2359,10 +2359,10 @@ index 295769d039f2a1e4f48912a60f9dbe267d8992c1..e88b058c0734e436ef24bab6364b206c this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5 100644 +index 958816ce2166248b542c96c10c398a52d769b4db..415afe3473d9f8a50b1edab8cfda6158e59836e6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -77,9 +77,11 @@ public class Tadpole extends AbstractFish { +@@ -80,9 +80,11 @@ public class Tadpole extends AbstractFish { return SoundEvents.TADPOLE_FLOP; } @@ -2391,10 +2391,10 @@ index 5d247ac38fe8a61603b3d934f3000bcda773142b..2e4177cfb02616ef6fa689f6d378976e this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); 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 ac9eaeaf7df1e84ee588f371628c0a10784d50bc..ea8883b0661e894a466eca24bfc247ac37f40a81 100644 +index 12440ee2dccc0a697fb403765f2e1b987ccc0283..de2471cfa96a23944f229f33ffdff88b6b7756e4 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 -@@ -150,6 +150,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -151,6 +151,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob this.bossEvent.setName(this.getDisplayName()); } @@ -2483,10 +2483,10 @@ index 937f81a859953498abe73bea560c86e6560e1c33..0a151c679b0dc943598180942d6d4b38 this.level().getProfiler().pop(); super.customServerAiStep(); 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 1aae466e3e334d7f4bbb3ea9365a255afcc3dd3a..b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d 100644 +index 24044795d8e0f1fb15a4f2f5401f44897092f2a3..96ca567af2d8fb2ba39f995be80b935344550124 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -143,6 +143,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return holder.is(PoiTypes.MEETING); }); @@ -2495,7 +2495,7 @@ index 1aae466e3e334d7f4bbb3ea9365a255afcc3dd3a..b1fa6e102a694b63f2aa9660b9e6b649 public Villager(EntityType entityType, Level world) { this(entityType, world, VillagerType.PLAINS); } -@@ -245,6 +247,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -246,6 +248,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Spigot End @@ -2503,7 +2503,7 @@ index 1aae466e3e334d7f4bbb3ea9365a255afcc3dd3a..b1fa6e102a694b63f2aa9660b9e6b649 @Override @Deprecated // Paper protected void customServerAiStep() { -@@ -254,7 +257,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -255,7 +258,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void customServerAiStep(final boolean inactive) { // Paper end this.level().getProfiler().push("villagerBrain"); @@ -2590,10 +2590,10 @@ index 156809090f1f83ad68e7e2477a3cfddac5757a8e..837f68825f601971f374be47952b2310 if (entity != null) { this.ownerUUID = entity.getUUID(); diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java -index 6d23c39e4eadf23616080d6d08672e13b5d3c37d..e7115f1635821e0aab32e8aeea6914388dc24639 100644 +index 756d0434472921992c9d84597d7c9c824e93614c..38c573d440946ca7ee6016ef92e9c1605031e611 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java -@@ -27,7 +27,10 @@ import org.bukkit.inventory.InventoryHolder; +@@ -28,7 +28,10 @@ import org.bukkit.inventory.InventoryHolder; public abstract class AbstractMinecartContainer extends AbstractMinecart implements ContainerEntity { @@ -2604,7 +2604,7 @@ index 6d23c39e4eadf23616080d6d08672e13b5d3c37d..e7115f1635821e0aab32e8aeea691438 @Nullable public ResourceLocation lootTable; public long lootTableSeed; -@@ -89,12 +92,18 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme +@@ -90,12 +93,18 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme protected AbstractMinecartContainer(EntityType type, Level world) { super(type, world); @@ -2625,7 +2625,7 @@ index 6d23c39e4eadf23616080d6d08672e13b5d3c37d..e7115f1635821e0aab32e8aeea691438 } @Override -@@ -156,6 +165,10 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme +@@ -164,6 +173,10 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme protected void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.lootableData.loadNbt(nbt); // Paper @@ -2697,7 +2697,7 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 19f23a6c8fb5c02843c27fb8a242ec9d0d1b538b..9c02040543825e99f576c6f8995133ec6a329940 100644 +index f476ba6c97944bdffae5aacae2e285d17541f46e..506100b02e7e9a3eabfde6b1f93858c4cc048524 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -207,6 +207,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -2720,9 +2720,9 @@ index 19f23a6c8fb5c02843c27fb8a242ec9d0d1b538b..9c02040543825e99f576c6f8995133ec final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); MinecraftServer.LOGGER.error(msg, throwable); getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent -- entity.discard(); +- entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); - // Paper end - Prevent block entity and entity crashes -+ entity.discard(); // Pufferfish - diff on change ServerLevel.tick ++ entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Pufferfish - diff on change ServerLevel.tick + // Paper end } } @@ -2884,10 +2884,10 @@ index 9b1243d96e0694c62fc9e82e9be540bce0d2b3ad..3514022d898a24052c917ebf55dcef3e @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f0478af4679f 100644 +index 757edf74751dc7183454656fda9cecc4eb601e4c..9e577408d8e794c40bf34bc800cd0920856a5d2b 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -@@ -47,7 +47,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -48,7 +48,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen public static final int MOVE_ITEM_SPEED = 8; public static final int HOPPER_CONTAINER_SIZE = 5; @@ -2898,7 +2898,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 private int cooldownTime; private long tickedGameTime; -@@ -83,14 +86,37 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -84,14 +87,37 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen public HopperBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.HOPPER, pos, state); @@ -2938,7 +2938,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 if (!this.tryLoadLootTable(nbt)) { ContainerHelper.loadAllItems(nbt, this.items); } -@@ -491,6 +517,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -492,6 +518,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen } private static boolean isFullContainer(Container inventory, Direction direction) { @@ -2946,7 +2946,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 // Paper start - Perf: Optimize Hoppers if (inventory instanceof WorldlyContainer worldlyContainer) { for (final int slot : worldlyContainer.getSlotsForFace(direction)) { -@@ -513,7 +540,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -514,7 +541,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen } private static boolean isEmptyContainer(Container inv, Direction facing) { @@ -2958,7 +2958,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 } public static boolean suckInItems(Level world, Hopper hopper) { -@@ -713,7 +743,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -714,7 +744,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen if (HopperBlockEntity.canPlaceItemInContainer(to, stack, slot, side)) { boolean flag = false; @@ -2967,7 +2967,7 @@ index a61d7cd2b078fe511ff00344197b6ea11feebfb2..7041394d366e6145369d032a0a14f047 if (itemstack1.isEmpty()) { // Spigot start - SPIGOT-6693, InventorySubcontainer#setItem -@@ -908,7 +938,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -909,7 +939,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @Override protected void setItems(NonNullList list) { diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index 313c7f105..93bb2a1e0 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 998429d65a001d5d54a3e9cf53c8314c9ea26d2c..3caad009206da9c8161f549af0c3437923f6aa4a 100644 +index 12b774464e8de3a07993be23e233d31e11ede7b1..7e82d2c6a6085a5ea335ba9ef2a5ec3f5a37e787 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -36,7 +36,7 @@ index 998429d65a001d5d54a3e9cf53c8314c9ea26d2c..3caad009206da9c8161f549af0c34379 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -89,7 +93,7 @@ tasks.jar { +@@ -90,7 +94,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -45,7 +45,7 @@ index 998429d65a001d5d54a3e9cf53c8314c9ea26d2c..3caad009206da9c8161f549af0c34379 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask( +@@ -174,7 +178,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -239,7 +239,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f1e4dfd203d455ec089cd2b5679c4083400dbc7f..6f9cb8f328f47d6f3eb3142d701d80ceb51af926 100644 +index 3f952d1409118535f325f614f1a6507c40efa4d6..98df582ca3425f621396ce93cf7a0617ce3fb11f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -953,7 +953,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 70635abfe..1418270d7 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/build.gradle.kts b/build.gradle.kts -index 3caad009206da9c8161f549af0c3437923f6aa4a..6bceca84bd073e25fc9aa19b8b713a2873713696 100644 +index 7e82d2c6a6085a5ea335ba9ef2a5ec3f5a37e787..32366253c04c493135f2b22d1940f83669104723 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -233,5 +233,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> +@@ -234,5 +234,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> } tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" @@ -40,9 +40,18 @@ index f6a3364175476c57a7763a087ff55e1689474800..5e01bfdad663656168604fc878a993dd "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dbe612427b894df9da1335b94163ba9b89b090c0..0982d44b9dd30c13d9d879095cc9a839bbda8bdc 100644 +index 531c9ef0d6504fc1632b83bd93b9cf76e91377e8..09594f96cf79aa38142a859bef2e3b6b8d00f7db 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -924,7 +924,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); + MinecraftServer.LOGGER.error(msg, throwable); + getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); +- entity.discard(); ++ entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Purpur + // Paper end + } + // Pufferfish end @@ -992,7 +992,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -52,8 +61,34 @@ index dbe612427b894df9da1335b94163ba9b89b090c0..0982d44b9dd30c13d9d879095cc9a839 // Paper end private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index 098c410f0285948d7ac48835c352f9c97742c5c7..3773b05d0e2875db8817835e623272292855925f 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S + public void tick() { + // Pufferfish start - entity TTL + if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) { +- discard(); ++ discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Purpur + return; + } + // Pufferfish end - entity TTL +diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +index 837f68825f601971f374be47952b23108bf66ba6..2a8a8030feefae84e394460612405887e63f2ac7 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +@@ -64,7 +64,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { + if (!isLoaded) { + if (Projectile.loadedThisTick > gg.pufferfish.pufferfish.PufferfishConfig.maxProjectileLoadsPerTick) { + if (++this.loadedLifetime > gg.pufferfish.pufferfish.PufferfishConfig.maxProjectileLoadsPerProjectile) { +- this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Purpur + } + return; + } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9c02040543825e99f576c6f8995133ec6a329940..d6a08f06812bc15813559eb8ff66eddf7cf22888 100644 +index 506100b02e7e9a3eabfde6b1f93858c4cc048524..27447e4acb7db91b7595a7c25b682a4a4ce8c151 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -207,7 +207,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 2078c8fb7..c4f20c5e6 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -36,10 +36,10 @@ index 1d91ce01e7ce806a5b2e937ff855ebf159534f29..d39a3359249e2a312da0645d5abb625d public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 91feb12732564c90656da487664dbc12e55397fc..a2e76fb8431cd4dc0cbf94245086c939625fb0da 100644 +index 1e5f709115007ff19901c0a6c3cf884d9e4d3a6c..6886f5808ffaaed06dcae122f7cba6a12ad563af 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1063,6 +1063,20 @@ public abstract class PlayerList { +@@ -1064,6 +1064,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -81,10 +81,10 @@ index 1561b85a45f52a8162f43553f8485bfe084b8f1f..938524dc5b495ad160b9b14219db573e return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0f2af6968f6bb47f5ef7e3f63cbfdc2f6df53999..169d5e539b1474a3e400b53e21f867e5fb175182 100644 +index 3773b05d0e2875db8817835e623272292855925f..b96535eb07da6535bbb287c9478b81e7022247b1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4136,6 +4136,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4152,6 +4152,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 9a8cac58d..1b2b2bf25 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index a6d3f90f7867cfbda0ef406ff3ce1bd8b9f787b0..0831d305a3b9d8d27cef946f46c0b03f this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0982d44b9dd30c13d9d879095cc9a839bbda8bdc..cdc17904cdf3d6669503e09debfbb156a80f0020 100644 +index 09594f96cf79aa38142a859bef2e3b6b8d00f7db..8ef87310566772024193aeade42faf0bca1c0ecb 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -79,10 +79,10 @@ index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 169d5e539b1474a3e400b53e21f867e5fb175182..46e3d7a949d79d9168e0a976be09be5a178bea15 100644 +index b96535eb07da6535bbb287c9478b81e7022247b1..add00d6f63ed57d95abba3666095b64c3d47791a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -378,7 +378,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index 169d5e539b1474a3e400b53e21f867e5fb175182..46e3d7a949d79d9168e0a976be09be5a private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3011,6 +3011,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3027,6 +3027,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 169d5e539b1474a3e400b53e21f867e5fb175182..46e3d7a949d79d9168e0a976be09be5a this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3050,6 +3057,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3066,6 +3073,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index 169d5e539b1474a3e400b53e21f867e5fb175182..46e3d7a949d79d9168e0a976be09be5a if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4987,4 +5002,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -5011,4 +5026,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -190,10 +190,10 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353ae1717ede 100644 +index 25e30408c964b5257f1cf945892bd668df38252b..4621dd94e9346bdd2eeca1d17869ff99aede0077 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -206,7 +206,7 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -285,7 +285,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -215,7 +215,7 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -336,6 +336,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION); } @@ -223,7 +223,7 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2742,7 +2743,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2750,7 +2751,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper - Prevent excessive velocity through repeated crits @@ -232,7 +232,7 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a Vec3 vec3d = this.getDeltaMovement(); // Paper start - Prevent excessive velocity through repeated crits long time = System.nanoTime(); -@@ -3520,8 +3521,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3528,8 +3529,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start - Add EntityMoveEvent @@ -245,7 +245,7 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3531,6 +3534,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3539,6 +3542,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -268,10 +268,10 @@ index aa9696facf7780313c322d01928aab7e6c92cc99..5436e9645426e01f2cae2f567fe3353a // Paper end - Add EntityMoveEvent if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4be5ae6bfc7bbb8c928e13208dfcd7f455c56cfe..1a31090435898c9ffc1a4e124d2d6c9130a77015 100644 +index 4cf2963fdbe9003fd18ac8c2035ccded57c02abd..8b39ea90558dbd5356c038b74fa4037fb69546ac 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -148,8 +148,8 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -149,8 +149,8 @@ public abstract class Mob extends LivingEntity implements Targeting { this.restrictRadius = -1.0F; this.goalSelector = new GoalSelector(world.getProfilerSupplier()); this.targetSelector = new GoalSelector(world.getProfilerSupplier()); @@ -282,7 +282,7 @@ index 4be5ae6bfc7bbb8c928e13208dfcd7f455c56cfe..1a31090435898c9ffc1a4e124d2d6c91 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1397,7 +1397,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1398,7 +1398,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -291,7 +291,7 @@ index 4be5ae6bfc7bbb8c928e13208dfcd7f455c56cfe..1a31090435898c9ffc1a4e124d2d6c91 } public boolean isWithinRestriction() { -@@ -1786,4 +1786,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1787,4 +1787,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -965,10 +965,10 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb // CraftBukkit end 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 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c74eeaad3f 100644 +index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c863d1eb89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal { +@@ -83,14 +83,82 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -1052,7 +1052,7 @@ index 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c7 @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -159,6 +227,7 @@ public class Dolphin extends WaterAnimal { +@@ -160,6 +228,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -1060,7 +1060,7 @@ index 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c7 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -169,6 +238,7 @@ public class Dolphin extends WaterAnimal { +@@ -170,6 +239,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -1068,7 +1068,7 @@ index 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c7 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -220,7 +290,7 @@ public class Dolphin extends WaterAnimal { +@@ -221,7 +291,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -1077,7 +1077,7 @@ index 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c7 } @Override -@@ -255,6 +325,11 @@ public class Dolphin extends WaterAnimal { +@@ -256,6 +326,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1090,10 +1090,10 @@ index 178e1e75fcd0e60a1dd2729a894df08cf4129526..2412cdb1bdaf7a558ad7235fca7ea5c7 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 12b49510deb0494c4a70b63679f8818960f2af06..142e45f4b5f2eb90b980f5085abe104505fa7dab 100644 +index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef1a9dc2e8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -144,6 +144,44 @@ public class Fox extends Animal implements VariantHolder { +@@ -148,6 +148,44 @@ public class Fox extends Animal implements VariantHolder { this.setCanPickUpLoot(true); } @@ -1138,7 +1138,7 @@ index 12b49510deb0494c4a70b63679f8818960f2af06..142e45f4b5f2eb90b980f5085abe1045 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -163,6 +201,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -167,6 +205,7 @@ public class Fox extends Animal implements VariantHolder { return entityliving instanceof AbstractSchoolingFish; }); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); @@ -1146,7 +1146,7 @@ index 12b49510deb0494c4a70b63679f8818960f2af06..142e45f4b5f2eb90b980f5085abe1045 this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2D)); -@@ -189,6 +228,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -193,6 +232,7 @@ public class Fox extends Animal implements VariantHolder { this.goalSelector.addGoal(11, new Fox.FoxSearchForItemsGoal()); this.goalSelector.addGoal(12, new Fox.FoxLookAtPlayerGoal(this, Player.class, 24.0F)); this.goalSelector.addGoal(13, new Fox.PerchAndSearchGoal()); @@ -1154,7 +1154,7 @@ index 12b49510deb0494c4a70b63679f8818960f2af06..142e45f4b5f2eb90b980f5085abe1045 this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); -@@ -781,16 +821,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -785,16 +825,16 @@ public class Fox extends Animal implements VariantHolder { return new Vec3(0.0D, (double) (0.55F * this.getEyeHeight()), (double) (this.getBbWidth() * 0.4F)); } @@ -1174,7 +1174,7 @@ index 12b49510deb0494c4a70b63679f8818960f2af06..142e45f4b5f2eb90b980f5085abe1045 } } -@@ -801,16 +841,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -805,16 +845,16 @@ public class Fox extends Animal implements VariantHolder { } } @@ -1251,10 +1251,10 @@ index 6cfe0d6c46caa122db107c607d27a2bdcd82f7a8..cb05267fb287b9de9d1829e90d9bb9c9 float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index e1f174ff0f791b20be7d6ad8e4a172d1e0c81e33..2f1385cbd88e7085ee5f39f8b5c371c9f0206c23 100644 +index 161c128d27f50f145f88142191f1a5c93649ea65..b59d6a3f799f100702efb1fd10bbc48da4f4bd8f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -63,6 +63,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder> optional = this.getEffectsFromItemStack(itemstack); if (optional.isEmpty()) { @@ -1340,10 +1340,10 @@ index 4300fab61765dd224fab084d118aae7294fc9de6..66f80ec010909648278c4e74c80d3766 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } 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 be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67a802fa1b 100644 +index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f431e0e0b89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -114,6 +114,32 @@ public class Panda extends Animal { +@@ -115,6 +115,32 @@ public class Panda extends Animal { } @@ -1376,7 +1376,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -275,6 +301,7 @@ public class Panda extends Animal { +@@ -276,6 +302,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1384,7 +1384,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); -@@ -290,6 +317,7 @@ public class Panda extends Animal { +@@ -291,6 +318,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); @@ -1392,7 +1392,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -636,7 +664,7 @@ public class Panda extends Animal { +@@ -637,7 +665,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1401,7 +1401,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level().isClientSide); -@@ -654,7 +682,7 @@ public class Panda extends Animal { +@@ -655,7 +683,7 @@ public class Panda extends Animal { this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying } else { if (this.level().isClientSide || this.isSitting() || this.isInWater()) { @@ -1410,7 +1410,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 } this.tryToSit(); -@@ -673,7 +701,7 @@ public class Panda extends Animal { +@@ -674,7 +702,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1419,7 +1419,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 } } -@@ -718,7 +746,7 @@ public class Panda extends Animal { +@@ -719,7 +747,7 @@ public class Panda extends Animal { return new Vector3f(0.0F, dimensions.height - (this.isBaby() ? 0.4375F : 0.0F) * scaleFactor, 0.0F); } @@ -1428,7 +1428,7 @@ index be554dbaa9900207753e4f67f0ba402333e21338..87a1a6ff04b40ceebded50e81aaafe67 private final Panda panda; -@@ -728,9 +756,9 @@ public class Panda extends Animal { +@@ -729,9 +757,9 @@ public class Panda extends Animal { } @Override @@ -1527,10 +1527,10 @@ index f3f48225c2a1e4bd3d0091d1b4b7e4e150850ed2..06568c109d806a4e98b092016d0efd5b this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index a43479c92775d618794f8f1fbeb31f42d303e167..28f68a7383fe6e53541eb1b36ba73eb15723f0f7 100644 +index 24770540c51fe4831040d6b46b27636d25ebac40..ebfa162f172bdad7b17ce153fdee508748620fc0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java -@@ -67,9 +67,27 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { +@@ -68,9 +68,27 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { this.steering = new ItemBasedSteering(this.entityData, Pig.DATA_BOOST_TIME, Pig.DATA_SADDLE_ID); } @@ -2372,10 +2372,10 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..3103df74b7ae5a5ed841bf97794284cd43ad59de 100644 +index 415afe3473d9f8a50b1edab8cfda6158e59836e6..c19513b3b35bbb05c3159606caacee0559366610 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish { +@@ -48,13 +48,50 @@ public class Tadpole extends AbstractFish { protected static final ImmutableList>> SENSOR_TYPES = ImmutableList.of(SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.HURT_BY, SensorType.FROG_TEMPTATIONS); protected static final ImmutableList> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.LOOK_TARGET, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.NEAREST_VISIBLE_ADULT, MemoryModuleType.TEMPTATION_COOLDOWN_TICKS, MemoryModuleType.IS_TEMPTED, MemoryModuleType.TEMPTING_PLAYER, MemoryModuleType.BREED_TARGET, MemoryModuleType.IS_PANICKING); public boolean ageLocked; // Paper @@ -2427,7 +2427,7 @@ index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..3103df74b7ae5a5ed841bf97794284cd @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); -@@ -81,8 +118,7 @@ public class Tadpole extends AbstractFish { +@@ -84,8 +121,7 @@ public class Tadpole extends AbstractFish { @Override protected void customServerAiStep() { this.level().getProfiler().push("tadpoleBrain"); @@ -2636,10 +2636,10 @@ index a6601f70890f90691923c0e6a9f10ea597ccabc2..ae7bcfa608d8bdd2a2320618225294de protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 41596d9c2e8e6c91f77b1bbe3ccf828708b6b970..6e7b7d2e9ccf67f9df458dc30cfea7242dc212ac 100644 +index 184f508d19aad46267302a0e17f7cb9bdafce079..19d463cf5f57b2943431f1c5306fb51c19c7dc3a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -35,6 +35,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -42,6 +42,13 @@ public class SkeletonHorse extends AbstractHorse { super(type, world); } @@ -2651,21 +2651,24 @@ index 41596d9c2e8e6c91f77b1bbe3ccf828708b6b970..6e7b7d2e9ccf67f9df458dc30cfea724 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); + } +@@ -59,7 +66,9 @@ public class SkeletonHorse extends AbstractHorse { } -@@ -54,6 +61,7 @@ public class SkeletonHorse extends AbstractHorse { @Override - protected void addBehaviourGoals() { +- protected void addBehaviourGoals() {} ++ protected void addBehaviourGoals() { + if (level().purpurConfig.skeletonHorseCanSwim) goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); - } ++ } @Override + protected SoundEvent getAmbientSound() { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java -index b016f53c6644c6411b3a91e09049892131187179..5fc37e2322188e0db12f7679e40b1a3d40268ca7 100644 +index 038de19633002e8f7c4b1ead7438cef0163456ce..c1d1321c75330231777adb4ff6e0ca604f3fab80 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -27,6 +27,28 @@ public class TraderLlama extends Llama { +@@ -30,6 +30,28 @@ public class TraderLlama extends Llama { super(type, world); } @@ -2781,10 +2784,10 @@ index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6ead32b0a 100644 +index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b7c0a72e2 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -108,6 +108,7 @@ public class EnderDragon extends Mob implements Enemy { @Nullable private BlockPos podium; // Paper end - Allow changing the EnderDragon podium @@ -2792,7 +2795,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -129,6 +130,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -130,6 +131,37 @@ public class EnderDragon extends Mob implements Enemy { this.noCulling = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY, ParticleTypes.EXPLOSION, ParticleTypes.EXPLOSION_EMITTER, SoundEvents.GENERIC_EXPLODE); // CraftBukkit @@ -2830,7 +2833,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 } public void setDragonFight(EndDragonFight fight) { -@@ -143,6 +175,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -144,6 +176,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2848,7 +2851,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -204,6 +247,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -205,6 +248,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2886,7 +2889,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -230,6 +304,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -231,6 +305,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2895,7 +2898,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -242,9 +318,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -243,9 +319,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2907,7 +2910,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -278,7 +354,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -279,7 +355,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2916,7 +2919,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -347,7 +423,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -348,7 +424,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -2925,7 +2928,7 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 this.knockBack(this.level().getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.knockBack(this.level().getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.hurt(this.level().getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -391,7 +467,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -392,7 +468,7 @@ public class EnderDragon extends Mob implements Enemy { } if (!this.level().isClientSide) { @@ -2935,10 +2938,10 @@ index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6 this.dragonFight.updateDragon(this); } 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 ea8883b0661e894a466eca24bfc247ac37f40a81..6af131d0574a508bccc84b85d0e0b3b5bab6f795 100644 +index de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd0376d03e 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 -@@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -85,16 +85,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); @@ -2970,7 +2973,7 @@ index ea8883b0661e894a466eca24bfc247ac37f40a81..6af131d0574a508bccc84b85d0e0b3b5 this.setHealth(this.getMaxHealth()); this.xpReward = 50; } -@@ -108,13 +122,113 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -109,13 +123,113 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return navigationflying; } @@ -3084,7 +3087,7 @@ index ea8883b0661e894a466eca24bfc247ac37f40a81..6af131d0574a508bccc84b85d0e0b3b5 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -264,6 +378,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -3101,7 +3104,7 @@ index ea8883b0661e894a466eca24bfc247ac37f40a81..6af131d0574a508bccc84b85d0e0b3b5 int i; if (this.getInvulnerableTicks() > 0) { -@@ -584,11 +708,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -585,11 +709,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3247,10 +3250,10 @@ index 70d25bb45ad603095a1f5812cc396dfc5f16a1e1..562faf0257388d9c22146a418f25716c public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 6a91960f93e624a4b975c1cf76698eb45ceda838..577a829595f67708b220407b53dca1bd145a3479 100644 +index 9657796d08f4a102d9d5ff7685f2a152d1a87fda..30b4c8513e97463ce1a96775b1c22a1d95bd6fbd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -59,21 +59,98 @@ public class Creeper extends Monster implements PowerableMob { +@@ -60,21 +60,98 @@ public class Creeper extends Monster implements PowerableMob { public int maxSwell = 30; public int explosionRadius = 3; private int droppedSkulls; @@ -3349,7 +3352,7 @@ index 6a91960f93e624a4b975c1cf76698eb45ceda838..577a829595f67708b220407b53dca1bd this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); } -@@ -324,6 +401,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -325,6 +402,7 @@ public class Creeper extends Monster implements PowerableMob { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.entityData.set(Creeper.DATA_IS_IGNITED, event.isIgnited()); @@ -3503,10 +3506,10 @@ index 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca6 boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 66b6c55f72aec7e4e9dfa5417a46ba68dbb16a83..7fb02aab225a45e951ab1e7c6ba1c53f53d0fecd 100644 +index b8ce2a9ad151b20f0f4e9e8e34a57069d8d77128..75de003b4f7556cd9c5137fe324b66348835141a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -38,14 +38,33 @@ public class Endermite extends Monster { +@@ -43,14 +43,33 @@ public class Endermite extends Monster { this.xpReward = 3; } @@ -3537,7 +3540,7 @@ index 66b6c55f72aec7e4e9dfa5417a46ba68dbb16a83..7fb02aab225a45e951ab1e7c6ba1c53f this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -4048,10 +4051,10 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 private class PhantomBodyRotationControl extends BodyRotationControl { diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index cec545c3baa6599d47b9cf1a4b97de8771062a22..31d204d8d81ccc30371070af3678d82dc721618d 100644 +index 05ed2f06a41f3b12e0432a37faf98d0b1fea7a8b..3eca357a82eebedc56237a03503017a17f17d3a6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -@@ -62,15 +62,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -66,15 +66,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve super(type, world); } @@ -4083,7 +4086,7 @@ index cec545c3baa6599d47b9cf1a4b97de8771062a22..31d204d8d81ccc30371070af3678d82d this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 15.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 15.0F)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -4185,10 +4188,10 @@ index f3c2a2ffb74daa89a516db4c188ce675c79932bf..a695ac9b9e4c3e423d74d082e2492858 public ShulkerLookControl(Mob entity) { super(entity); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 2c60a3765d22909e73b660492410ab8456304b68..f5dda5ed4532c8572bc4f511c49377c262efe057 100644 +index fcd5cc3ff8d4b38f4dea08f78723db3dac53ffde..e884e44139e2c7a05f5769192c3f6c7632eeb730 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -47,14 +47,33 @@ public class Silverfish extends Monster { +@@ -48,14 +48,33 @@ public class Silverfish extends Monster { super(type, world); } @@ -4251,10 +4254,10 @@ index 92974452d8f63fde8524cfac305ee2ef5212f840..3568c4b7ecfa250bbeb1799685b487df protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b16f8b4f9 100644 +index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da73330139 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -61,6 +61,7 @@ public class Slime extends Mob implements Enemy { +@@ -62,6 +62,7 @@ public class Slime extends Mob implements Enemy { public float squish; public float oSquish; private boolean wasOnGround; @@ -4262,7 +4265,7 @@ index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b public Slime(EntityType type, Level world) { super(type, world); -@@ -68,12 +69,48 @@ public class Slime extends Mob implements Enemy { +@@ -69,12 +70,48 @@ public class Slime extends Mob implements Enemy { this.moveControl = new Slime.SlimeMoveControl(this); } @@ -4311,7 +4314,7 @@ index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -378,11 +415,12 @@ public class Slime extends Mob implements Enemy { +@@ -386,11 +423,12 @@ public class Slime extends Mob implements Enemy { } @Override @@ -4325,7 +4328,7 @@ index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b } @Nullable -@@ -416,7 +454,7 @@ public class Slime extends Mob implements Enemy { +@@ -424,7 +462,7 @@ public class Slime extends Mob implements Enemy { return super.getDimensions(pose).scale(0.255F * (float) this.getSize()); } @@ -4334,7 +4337,7 @@ index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b private float yRot; private int jumpDelay; -@@ -435,21 +473,33 @@ public class Slime extends Mob implements Enemy { +@@ -443,21 +481,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4371,7 +4374,7 @@ index 2502cb476032c6a247132ce2e427721d6c9f8ce4..23ed3890fd5a5786c1d251b926cb386b if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -466,7 +516,7 @@ public class Slime extends Mob implements Enemy { +@@ -474,7 +524,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -5007,10 +5010,10 @@ index 0a151c679b0dc943598180942d6d4b3886211688..384e7b29215cadfa40af07a183a9c9c6 public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { 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 b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d..3f9945db1970c6356e3fbde3520c07e2a75fbb48 100644 +index 96ca567af2d8fb2ba39f995be80b935344550124..8e3e9bfe614057450ec771f72c9b1d7ea061d66e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -157,6 +157,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -158,6 +158,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -5039,7 +5042,7 @@ index b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d..3f9945db1970c6356e3fbde3520c07e2 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -257,11 +279,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -258,11 +280,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void customServerAiStep(final boolean inactive) { // Paper end this.level().getProfiler().push("villagerBrain"); @@ -5054,7 +5057,7 @@ index b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d..3f9945db1970c6356e3fbde3520c07e2 this.level().getProfiler().pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -318,7 +340,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -319,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -5063,7 +5066,7 @@ index b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d..3f9945db1970c6356e3fbde3520c07e2 } else { boolean flag = this.getOffers().isEmpty(); -@@ -331,8 +353,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -332,8 +354,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { @@ -5075,10 +5078,10 @@ index b1fa6e102a694b63f2aa9660b9e6b649bcae9a7d..3f9945db1970c6356e3fbde3520c07e2 this.startTrading(player); } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 1c89f20debfad9807c90a21cc336d5790294ebce..3782209c6d3408393e91ffe64976a15cba025843 100644 +index 8d1cc1a644415be251f469ab1cb2ebc09fe5c3eb..80b9c2043f2a84dc44b082a9c97a7b5dbbb93dc2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -70,6 +70,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -71,6 +71,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill //this.setDespawnDelay(48000); // CraftBukkit - set default from MobSpawnerTrader // Paper - move back to MobSpawnerTrader - Vanilla behavior is that only traders spawned by it have this value set. } @@ -5102,7 +5105,7 @@ index 1c89f20debfad9807c90a21cc336d5790294ebce..3782209c6d3408393e91ffe64976a15c @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -117,8 +134,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -118,8 +135,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } if (this.getOffers().isEmpty()) { @@ -5114,10 +5117,10 @@ index 1c89f20debfad9807c90a21cc336d5790294ebce..3782209c6d3408393e91ffe64976a15c this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 5ca1f834f311a87323ced2578535e66efa14e47f..835e4451b075d00de53f99a796b91010fbae29b2 100644 +index 567704f61034363e48ef2a5b5566ebdc91682297..8a6acc19e9f3afb778420495a5ed41ce78227f1a 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -193,6 +193,19 @@ public abstract class Player extends LivingEntity { +@@ -194,6 +194,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5138,10 +5141,10 @@ index 5ca1f834f311a87323ced2578535e66efa14e47f..835e4451b075d00de53f99a796b91010 super(EntityType.PLAYER, world); this.lastItemInMainHand = ItemStack.EMPTY; diff --git a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5e062d31c 100644 +index 8f5376543cca9cbfb2a014f67ec373d984b0df64..3673d1442778331ece25f8faca95b3499cafe46e 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -@@ -26,6 +26,12 @@ public class LlamaSpit extends Projectile { +@@ -29,6 +29,12 @@ public class LlamaSpit extends Projectile { this.setPos(owner.getX() - (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.sin(owner.yBodyRot * 0.017453292F), owner.getEyeY() - 0.10000000149011612D, owner.getZ() + (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(owner.yBodyRot * 0.017453292F)); } @@ -5155,10 +5158,10 @@ index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5 public void tick() { super.tick(); 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 78dd3365dc4d1265fc2102f740d75a384f5df5c5..4a2331c22a022881d66bcfd4134b0ffe421a0633 100644 +index 35e76fc8667d9fde5a8fc426699a617fb0a08e4b..41261b72bfa5157139a5384b6a0b66b719ec02b9 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -110,6 +110,12 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -111,6 +111,12 @@ public class WitherSkull extends AbstractHurtingProjectile { } @@ -5172,10 +5175,10 @@ index 78dd3365dc4d1265fc2102f740d75a384f5df5c5..4a2331c22a022881d66bcfd4134b0ffe public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 8698104e3eb98e2cc5da5de87a8f538860c1d91d..39ae3335866669be54f31ee6cd10d41bc70b193c 100644 +index 0b5a31477e3b76833fb97a455842316193663c8e..74599d29538b7072464d3bb16b6356da09513d21 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1227,4 +1227,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1228,4 +1228,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5204,10 +5207,10 @@ index 8698104e3eb98e2cc5da5de87a8f538860c1d91d..39ae3335866669be54f31ee6cd10d41b + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index d677759ac6b6d3cfe5a2af76dc1f0034b216ac2d..2d47fd8290c9712bbf720452f5ffe134b1941d8c 100644 +index 4c2e8129481384a143384d327e14320023735b1a..ac836274a2d725e3fac55394154ae2148024853a 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -591,6 +591,15 @@ public class CraftEventFactory { +@@ -592,6 +592,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5223,7 +5226,7 @@ index d677759ac6b6d3cfe5a2af76dc1f0034b216ac2d..2d47fd8290c9712bbf720452f5ffe134 return event; } -@@ -1182,6 +1191,7 @@ public class CraftEventFactory { +@@ -1183,6 +1192,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); @@ -6357,10 +6360,10 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000000000000000000000000000000000..83dd3f982d5869e26748e6e0d0b38a3c7a08fe02 +index 0000000000000000000000000000000000000000..b7e3994879a2b1de0c504f122b0c3c3229e4c356 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java -@@ -0,0 +1,99 @@ +@@ -0,0 +1,100 @@ +package org.purpurmc.purpur.entity; + +import net.minecraft.core.particles.ParticleTypes; @@ -6379,6 +6382,7 @@ index 0000000000000000000000000000000000000000..83dd3f982d5869e26748e6e0d0b38a3c +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; ++import org.bukkit.event.entity.EntityRemoveEvent; + +public class DolphinSpit extends LlamaSpit { + public LivingEntity dolphin; @@ -6422,7 +6426,7 @@ index 0000000000000000000000000000000000000000..83dd3f982d5869e26748e6e0d0b38a3c + } + + if (++ticksLived > 20) { -+ this.discard(); ++ this.discard(EntityRemoveEvent.Cause.DISCARD); + } else { + this.setDeltaMovement(mot.scale(0.99D)); + if (!this.isNoGravity()) { @@ -6457,12 +6461,12 @@ index 0000000000000000000000000000000000000000..83dd3f982d5869e26748e6e0d0b38a3c + } + BlockState state = this.level().getBlockState(blockHitResult.getBlockPos()); + state.onProjectileHit(this.level(), state, blockHitResult, this); -+ this.discard(); ++ this.discard(EntityRemoveEvent.Cause.DISCARD); + } +} diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000000000000000000000000000000000..8fa9b376682d9e8b1971a9f72b918c6dc6872d04 +index 0000000000000000000000000000000000000000..bc139e518c8214246c3f514b64f987bdd5de6f23 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -0,0 +1,114 @@ @@ -6530,11 +6534,11 @@ index 0000000000000000000000000000000000000000..8fa9b376682d9e8b1971a9f72b918c6d + } + + if (++ticksLived > 20) { -+ this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + } else if (this.level().getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) { -+ this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + } else if (this.isInWaterOrBubble()) { -+ this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + } else { + this.setDeltaMovement(mot.scale(0.99D)); + if (!this.isNoGravity()) { @@ -6577,7 +6581,7 @@ index 0000000000000000000000000000000000000000..8fa9b376682d9e8b1971a9f72b918c6d + BlockState state = this.level().getBlockState(blockHitResult.getBlockPos()); + state.onProjectileHit(this.level(), state, blockHitResult, this); + } -+ this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + } +} diff --git a/src/main/java/org/purpurmc/purpur/entity/ai/HasRider.java b/src/main/java/org/purpurmc/purpur/entity/ai/HasRider.java diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 1a2b26256..df9141018 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 46e3d7a949d79d9168e0a976be09be5a178bea15..9a025cb4b760090fe506d7c398d5c86fb3ac13ca 100644 +index add00d6f63ed57d95abba3666095b64c3d47791a..aa1e2c05c65391b5fbfce203c5095afd50682874 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -159,7 +159,7 @@ import org.bukkit.plugin.PluginManager; +@@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end public abstract class Entity implements Nameable, EntityAccess, CommandSource, ScoreHolder { @@ -34,10 +34,10 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index dfc7b015da2a553122f98677c12636a84ce90a1f..e907240898d30084acd7b048c44fc85d4c2435df 100644 +index 4621dd94e9346bdd2eeca1d17869ff99aede0077..781eefa21c958c28c35d2d9559d89da236ce9387 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,7 +45,7 @@ index dfc7b015da2a553122f98677c12636a84ce90a1f..e907240898d30084acd7b048c44fc85d this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -301,6 +302,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -302,6 +303,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -158,10 +158,10 @@ index b0cff23aa6f841ad291437964ea5bebb6395de84..f440eabffb1abe4c7370bf7badf6137a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 2412cdb1bdaf7a558ad7235fca7ea5c74eeaad3f..f3a145be1970dd1e78e04b2ea0d77c6339a42fd8 100644 +index 18380c1ee458507de98a8aeb53c8b0c863d1eb89..df6306572f11762ec0d54b738c1a8a30269c9224 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -158,6 +158,11 @@ public class Dolphin extends WaterAnimal { +@@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal { } // Purpur end @@ -174,10 +174,10 @@ index 2412cdb1bdaf7a558ad7235fca7ea5c74eeaad3f..f3a145be1970dd1e78e04b2ea0d77c63 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 142e45f4b5f2eb90b980f5085abe104505fa7dab..310f7b5ad4d1441c186045c296aded01610c1b4a 100644 +index c63634825ffffed2eccc560af9e9fcef1a9dc2e8..3faa945f9687abeba7a36f8198cb307685e348a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -182,6 +182,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -186,6 +186,11 @@ public class Fox extends Animal implements VariantHolder { } // Purpur end @@ -206,10 +206,10 @@ index cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7..46e28d807a72b6d302d29d65c52ab081 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 2f1385cbd88e7085ee5f39f8b5c371c9f0206c23..d6fbb914ad2434e4431f3aa6bfab07b8b8eb0da4 100644 +index b59d6a3f799f100702efb1fd10bbc48da4f4bd8f..0ff5902dde47c4bb9922d6605d874868fb4820b9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -80,6 +80,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 3782209c6d3408393e91ffe64976a15cba025843..5184939949ab54504f178f86fffba4507a895568 100644 +index 80b9c2043f2a84dc44b082a9c97a7b5dbbb93dc2..80a157aa57fe5e6725b6e06a93b841d66cf62455 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -87,6 +87,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0010-Barrels-and-enderchests-6-rows.patch index 54524ad04..cccb1f1c7 100644 --- a/patches/server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0010-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a2e76fb8431cd4dc0cbf94245086c939625fb0da..a2715cc02f3a8a12aa8538fb7b52e5da03f1278c 100644 +index 6886f5808ffaaed06dcae122f7cba6a12ad563af..f8a6d48200dae42cb73ed4f7eb52f957e7530e8c 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1188,6 +1188,27 @@ public abstract class PlayerList { +@@ -1189,6 +1189,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,10 +37,10 @@ index a2e76fb8431cd4dc0cbf94245086c939625fb0da..a2715cc02f3a8a12aa8538fb7b52e5da public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 835e4451b075d00de53f99a796b91010fbae29b2..0c06194b9a182447459815d88a8dcb96b7b4b896 100644 +index 8a6acc19e9f3afb778420495a5ed41ce78227f1a..cad2ff51d79d584312a03f35266774b297883c0c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { +@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { public float hurtDir; // Paper - protected -> public public boolean affectsSpawning = true; // Paper - Affects Spawning API public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 7ba17a034..f57a93231 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index 44409eed0b603a1e8203a35ff0263d360d81be32..cdb3cf1b9a809e3936164dbbcf9ccdfc return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 88eaf67ee621e06025f23657fe870cc2c9cb9b8f..56589f5c674670534ecf0b97c73c97e302716b9c 100644 +index 7f73d724af2c468a06dcfd760a70b8d6bd9ac31a..69919fa008780a09b5cfea5e41bb71ddfb4c0b80 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -192,10 +192,10 @@ index 931cbbe41905d7ed3fd46c53d3ddd06a6b9a7c8a..d8642979b7296737d08529f6db4f64e4 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 0c06194b9a182447459815d88a8dcb96b7b4b896..e1e5837c6f90c811f63053bbca80c512229cd727 100644 +index cad2ff51d79d584312a03f35266774b297883c0c..97805659af862213e9217c408519563de2be5b35 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -188,6 +188,13 @@ public abstract class Player extends LivingEntity { +@@ -189,6 +189,13 @@ public abstract class Player extends LivingEntity { public boolean fauxSleeping; public int oldLevel = -1; @@ -223,7 +223,7 @@ index ed84c87a3f76bc0254c1abb189e6b8b808823465..5bc68b1ef33f297e9a4b1bdd7d69f86a if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ab96c92d3d995a64ea9fd1c3996da35148195c48..008da41d0fa6d80dc731e4eeb9aa4d4cb4b1873e 100644 +index ee8c5a9881de75a9a8fe4224f7585a036017653a..bcf3393ad12a70eea0e1b24f69fac15b08af32fb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -488,10 +488,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index ae5dc41d5..189f3cda3 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e907240898d30084acd7b048c44fc85d4c2435df..a9d54deefa076a03bd142983261f997270a49e1e 100644 +index 781eefa21c958c28c35d2d9559d89da236ce9387..5e5485906f1157e52a7082278adcb7b6e56f3f06 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -252,6 +252,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected boolean skipDropExperience; // CraftBukkit start public int expToDrop; @@ -16,7 +16,7 @@ index e907240898d30084acd7b048c44fc85d4c2435df..a9d54deefa076a03bd142983261f9972 public boolean forceDrops; public ArrayList drops = new ArrayList<>(); // Paper - Restore vanilla drops behavior public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -352,7 +353,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); } @@ -25,7 +25,7 @@ index e907240898d30084acd7b048c44fc85d4c2435df..a9d54deefa076a03bd142983261f9972 double d1 = this.getX(); double d2 = this.getY(); double d3 = this.getZ(); -@@ -367,7 +368,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable { d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; } @@ -34,7 +34,7 @@ index e907240898d30084acd7b048c44fc85d4c2435df..a9d54deefa076a03bd142983261f9972 double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2109,7 +2110,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2117,7 +2118,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -69,7 +69,7 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6f9cb8f328f47d6f3eb3142d701d80ceb51af926..152dff14fec82432aeddf82cda6236b7d6326dca 100644 +index 98df582ca3425f621396ce93cf7a0617ce3fb11f..de7a555a646aa4eb1ed4b75e01e6ef373444ac65 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1156,4 +1156,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0026-Charged-creeper-naturally-spawn.patch b/patches/server/0026-Charged-creeper-naturally-spawn.patch index 8442e2226..ed722a27b 100644 --- a/patches/server/0026-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0026-Charged-creeper-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 33ba948bafc879f6e9cd28f7fe6bce85628cc463..7770880c9525805b67199f3c6b54618af15d106f 100644 +index e6542240c317be28a7b536a736f7ccdc9f050dca..bc3d0654759b330c473de080b8a51c0a04cf3a19 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -256,6 +256,14 @@ public class Creeper extends Monster implements PowerableMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth); } @@ -24,7 +24,7 @@ index 33ba948bafc879f6e9cd28f7fe6bce85628cc463..7770880c9525805b67199f3c6b54618a protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06ea43ddbbaf3165b74303a713f55512b9701765..c7956dfe6ef01868106d7c0989d5c6a612e07b7d 100644 +index 41822b9b050f4267cc0151ea85682523f89af57f..e033ef722d9b6336f1cbc6bdf404f35c34b45db9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0029-Tulips-change-fox-type.patch b/patches/server/0029-Tulips-change-fox-type.patch index a7d520491..d3f71bc69 100644 --- a/patches/server/0029-Tulips-change-fox-type.patch +++ b/patches/server/0029-Tulips-change-fox-type.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 310f7b5ad4d1441c186045c296aded01610c1b4a..586d6453b45efc75b4c150707f9034576ad140e1 100644 +index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb512c1c51 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -36,6 +36,7 @@ import net.minecraft.util.RandomSource; @@ -16,7 +16,7 @@ index 310f7b5ad4d1441c186045c296aded01610c1b4a..586d6453b45efc75b4c150707f903457 import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; -@@ -390,6 +391,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -394,6 +395,11 @@ public class Fox extends Animal implements VariantHolder { } private void setTargetGoals() { @@ -28,7 +28,7 @@ index 310f7b5ad4d1441c186045c296aded01610c1b4a..586d6453b45efc75b4c150707f903457 if (this.getVariant() == Fox.Type.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -423,6 +429,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -427,6 +433,7 @@ public class Fox extends Animal implements VariantHolder { public void setVariant(Fox.Type variant) { this.entityData.set(Fox.DATA_TYPE_ID, variant.getId()); @@ -36,7 +36,7 @@ index 310f7b5ad4d1441c186045c296aded01610c1b4a..586d6453b45efc75b4c150707f903457 } List getTrustedUUIDs() { -@@ -769,6 +776,29 @@ public class Fox extends Animal implements VariantHolder { +@@ -773,6 +780,29 @@ public class Fox extends Animal implements VariantHolder { } // Paper end @@ -67,7 +67,7 @@ index 310f7b5ad4d1441c186045c296aded01610c1b4a..586d6453b45efc75b4c150707f903457 // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6087141b308c1998a6be13dbf6e1ef75d6ddc6a8..532e25d00128c62c6eae4d0076dc0a3bd16c5b4e 100644 +index a96aa7f127467a6ea8025c09f4e336f1910cc8af..d084d5ef20b2fb4d3b5479cb51003fb82a0358fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -509,6 +509,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch index 54ce4727d..96fce4658 100644 --- a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 036688d52541dda8d8eef6fee43823844f245124..7ca03d221e33cec1df99b6dcd60fcdd401530938 100644 +index aa1e2c05c65391b5fbfce203c5095afd50682874..f8db28b15e551fc0e0c7f37c355237685c637529 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -336,7 +336,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -337,7 +337,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public double xOld; public double yOld; public double zOld; @@ -18,10 +18,10 @@ index 036688d52541dda8d8eef6fee43823844f245124..7ca03d221e33cec1df99b6dcd60fcdd4 public final RandomSource random; public int tickCount; diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 94a30a0c1266bf919d1dc4ca2b19489edd54a7fa..61a2048625df012f563d3a0db567630bdfe489c3 100644 +index eadcebd7845ee716e33c0ac0544502da1a6c5941..8cb248a185d880bf82ea4746341fe3db5dc89459 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -677,6 +677,7 @@ public class ArmorStand extends LivingEntity { +@@ -678,6 +678,7 @@ public class ArmorStand extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 94a30a0c1266bf919d1dc4ca2b19489edd54a7fa..61a2048625df012f563d3a0db567630b if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c76957ae7e9f2aa6b34d0a1098cfbc036b723237..ba7f378b9b0c791dd77862439f310a6653cccf30 100644 +index 4cd6d9309ed81956d59063fe4d229c6f930922ed..6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0034-Cows-eat-mushrooms.patch b/patches/server/0034-Cows-eat-mushrooms.patch index a6cca9377..7a70e2b82 100644 --- a/patches/server/0034-Cows-eat-mushrooms.patch +++ b/patches/server/0034-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981611b0bc3 100644 +index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df50feef90 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -100,7 +100,7 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981 + return InteractionResult.PASS; + } + this.level().addFreshEntity(mooshroom); -+ this.remove(RemovalReason.DISCARDED); ++ this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } @@ -114,7 +114,7 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6102535823eab8862c23919f20a8062f9f750eb6..0db470bab81016af906dda69c9ff487e88bb63a9 100644 +index c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa..ab5960b9104d362852ee3d6ba151cf78dd58a0ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -342,6 +342,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch index 63e3c904e..23314c286 100644 --- a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 557592aa5799dca43c778ef7a0d3b98619b90b90..c58b3ff4e7e5dba4543a77c2c4d9bad3911fba98 100644 +index 0ff5902dde47c4bb9922d6605d874868fb4820b9..4c3a4a5e79412a570b0dc1fdeaf540b83eb84b82 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -221,7 +221,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 8ead6c74e598eeeccb5f24cc3d1e86f03d2fe46a..8ab868c88e37fad978ffcf151ad527e57bdf4cb5 100644 +index 301d985b89b98a644603a6b086889442f4a37d79..6f30c22fe0058320b995570c9af7b15ae917dd76 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -92,6 +92,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth); } @@ -49,7 +49,7 @@ index 8ead6c74e598eeeccb5f24cc3d1e86f03d2fe46a..8ab868c88e37fad978ffcf151ad527e5 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 431fa9e522662b506c82fbe7e0266e5662ad91cc..40a0cd68b1e35894360f0edc45bc30a5bd47622f 100644 +index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346af890ae0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1436,6 +1436,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0053-Add-player-death-exp-control-options.patch b/patches/server/0053-Add-player-death-exp-control-options.patch index 2f7943c0d..10f253acf 100644 --- a/patches/server/0053-Add-player-death-exp-control-options.patch +++ b/patches/server/0053-Add-player-death-exp-control-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e1e5837c6f90c811f63053bbca80c512229cd727..f26322bfa6b26d2b97a1e89218c685b508a3253b 100644 +index 97805659af862213e9217c408519563de2be5b35..e68ed7339d8aed2b97e310edeee3960611ed7bf1 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1936,9 +1936,19 @@ public abstract class Player extends LivingEntity { +@@ -1944,9 +1944,19 @@ public abstract class Player extends LivingEntity { @Override public int getExperienceReward() { if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index cd8661487..ebba07669 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-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 35a92f63aaf6ad90a028bf9954de48a06030cc7b..df57683541a603daf5ac2af2d5c0e03a14bb910b 100644 +index f8db28b15e551fc0e0c7f37c355237685c637529..7fe6f44d25790cd222b700cf5ce1d5f36d89e650 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -899,7 +899,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -912,7 +912,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,10 +18,10 @@ index 35a92f63aaf6ad90a028bf9954de48a06030cc7b..df57683541a603daf5ac2af2d5c0e03a && (!(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 ba1ca47591756558d6722788695338ef03aadef6..fbba6e2da222f30fc763a680a825d5f2d53b5e4d 100644 +index a065009d01a5e28a3054241f30e5bedf21350cb5..c80e2c400f264d7d195dbf87f5dec95ba5df7444 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2555,7 +2555,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2563,7 +2563,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { diff --git a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch index abc4318b4..77dbb304e 100644 --- a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ 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 31c51f882fa1e6c45daeb9b8c2cd32388ed2367e..ae0162d881d75e29d662f77e8be7cd5a91df4e2f 100644 +index 7fe6f44d25790cd222b700cf5ce1d5f36d89e650..95baff79c07f1fdb1f2c2799527c0d245790cd60 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 Nameable, EntityAccess, CommandSource, S +@@ -558,6 +558,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } @@ -20,10 +20,10 @@ index 31c51f882fa1e6c45daeb9b8c2cd32388ed2367e..ae0162d881d75e29d662f77e8be7cd5a return this.hardCollides; } 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 4a2331c22a022881d66bcfd4134b0ffe421a0633..d57ef27df0a3597416564f8723b4b986413ad314 100644 +index 41261b72bfa5157139a5384b6a0b66b719ec02b9..8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -116,6 +116,11 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -117,6 +117,11 @@ public class WitherSkull extends AbstractHurtingProjectile { return target != this.getRider() && super.canHitEntity(target); } @@ -48,10 +48,10 @@ index 23dc37ff1f92951817864963bf93220d5aae91bb..af563ffb67c43b50555951fe1b5e4320 final EntityType entityType = entity.getType(); final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java -index 83dd3f982d5869e26748e6e0d0b38a3c7a08fe02..92d562fa11f69bb6b841299aef257ea0c674ca1c 100644 +index b7e3994879a2b1de0c504f122b0c3c3229e4c356..3e846f38902024875d1961b16a60c50201df309d 100644 --- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java -@@ -35,6 +35,13 @@ public class DolphinSpit extends LlamaSpit { +@@ -36,6 +36,13 @@ public class DolphinSpit extends LlamaSpit { dolphin.getZ() + (double) (dolphin.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(dolphin.yBodyRot * 0.017453292F)); } @@ -66,7 +66,7 @@ index 83dd3f982d5869e26748e6e0d0b38a3c7a08fe02..92d562fa11f69bb6b841299aef257ea0 super_tick(); diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java -index 8fa9b376682d9e8b1971a9f72b918c6dc6872d04..d0d951f867390fa12cae2ba2a49212354b10d7b0 100644 +index bc139e518c8214246c3f514b64f987bdd5de6f23..11825590af9346c61d5d15e5ef446b3c77b81b54 100644 --- a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -38,6 +38,13 @@ public class PhantomFlames extends LlamaSpit { diff --git a/patches/server/0056-Dispenser-curse-of-binding-protection.patch b/patches/server/0056-Dispenser-curse-of-binding-protection.patch index b72604287..dc3c4f0a3 100644 --- a/patches/server/0056-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0056-Dispenser-curse-of-binding-protection.patch @@ -5,7 +5,7 @@ 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 9101ac55f26f130e5d4aa4b4d4a4d5003a3d1043..e9b82e27730221778e38d3417d58484b139d40af 100644 +index 43f2654eb0a396bce98e0840bdc8a8b16f00b2ba..b30292dcc9bbfc0ded94ee8a0f4a5e949327da54 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -66,6 +66,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -16,7 +16,7 @@ index 9101ac55f26f130e5d4aa4b4d4a4d5003a3d1043..e9b82e27730221778e38d3417d58484b import net.minecraft.world.level.GameRules; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; -@@ -1182,6 +1183,12 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1183,6 +1184,12 @@ public abstract class Mob extends LivingEntity implements Targeting { } diff --git a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch index 72f7fb611..04a64d90b 100644 --- a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch @@ -5,10 +5,10 @@ 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 e814b2ef2577f032d6760de2f798d4fe18c67d0c..673b3aee680bb8a2d20f96be661d5fa9c61f4ce3 100644 +index 36422fb394a158f36c84ba0ee03cc704956c91b2..c8671996f07f1daafe48448f4a5b837ca2f658c6 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -331,7 +331,7 @@ public class ExperienceOrb extends Entity { +@@ -332,7 +332,7 @@ public class ExperienceOrb extends Entity { } private int repairPlayerItems(Player player, int amount) { diff --git a/patches/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index bb797edd9..fcba012db 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fbba6e2da222f30fc763a680a825d5f2d53b5e4d..65c36f41fe7602bfc8d2349b065c7494eb1abfb6 100644 +index c80e2c400f264d7d195dbf87f5dec95ba5df7444..40a22471b7828d660b1d8aa3f16af060694a86e3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3581,7 +3581,16 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3589,7 +3589,16 @@ public abstract class LivingEntity extends Entity implements Attackable { int j = i / 10; if (j % 2 == 0) { diff --git a/patches/server/0061-Item-entity-immunities.patch b/patches/server/0061-Item-entity-immunities.patch index 07c7adae8..77de6ba12 100644 --- a/patches/server/0061-Item-entity-immunities.patch +++ b/patches/server/0061-Item-entity-immunities.patch @@ -18,10 +18,10 @@ index db55ad9aaabfa1ea998754f3ac352d1698936696..04b98e23eed926d8473cc2464e04a5b9 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 eb0d6238588efa35fa868f26290547574a08eca2..633c2b7b02873f83c488a286acda34937ce0b496 100644 +index c7f06c3cfb737bd17a706798bf9cf0e1af5f0cc0..3cac817351a149935df75ef23d9f9417f6502016 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -58,6 +58,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -59,6 +59,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 eb0d6238588efa35fa868f26290547574a08eca2..633c2b7b02873f83c488a286acda3493 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -364,7 +370,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -365,7 +371,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public boolean hurt(DamageSource source, float amount) { @@ -52,7 +52,7 @@ index eb0d6238588efa35fa868f26290547574a08eca2..633c2b7b02873f83c488a286acda3493 return false; } else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { return false; -@@ -567,6 +582,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -568,6 +583,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 @@ -66,7 +66,7 @@ index eb0d6238588efa35fa868f26290547574a08eca2..633c2b7b02873f83c488a286acda3493 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 832def3c518be8d6d81e71f6022566e6179e2d17..e99007570a89eebe3c85ad549cf24286514306f8 100644 +index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1ae17678f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -151,4 +151,46 @@ public class CraftItem extends CraftEntity implements Item { @@ -117,7 +117,7 @@ index 832def3c518be8d6d81e71f6022566e6179e2d17..e99007570a89eebe3c85ad549cf24286 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9aab2c1dc14f9683953cb2876ee9471f603da629..b5599360a524a55183b3a21f822b5cb24f59dc67 100644 +index 88aabe09118cbbad3add3cee44e237580294f685..62074152a0a494bbde4c39074942425a8b850ffd 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/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 53dd3c50f..bdc70fd0b 100644 --- a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,10 +5,10 @@ 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 c99ab157e43fc990549fc06f5b6fb1e227014fde..aa75a9229210302dbccd6186439c3c35481ef46c 100644 +index 036640d49a5e891e9a0f767abe33f1f51d6d4cde..c0c8bdfbab17d8a10d616e2625ebfa7babf5fab3 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -30,6 +30,12 @@ public class EndCrystal extends Entity { +@@ -31,6 +31,12 @@ public class EndCrystal extends Entity { private static final EntityDataAccessor DATA_SHOW_BOTTOM = SynchedEntityData.defineId(EndCrystal.class, EntityDataSerializers.BOOLEAN); public int time; public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals @@ -21,7 +21,7 @@ index c99ab157e43fc990549fc06f5b6fb1e227014fde..aa75a9229210302dbccd6186439c3c35 public EndCrystal(EntityType type, Level world) { super(type, world); -@@ -79,6 +85,49 @@ public class EndCrystal extends Entity { +@@ -80,6 +86,49 @@ public class EndCrystal extends Entity { // Paper end - Fix invulnerable end crystals } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index 9b482f430..217cfc57d 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-Entity-lifespan.patch @@ -17,10 +17,10 @@ index 1cc86f8dd63802b7227de56b44c859c253a80756..b9a4815d6f942d78851213224a475b15 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 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85396edbe3 100644 +index b30292dcc9bbfc0ded94ee8a0f4a5e949327da54..20e8c3c88891f0fe20556b700fab5122682b2bdb 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -137,6 +137,7 @@ public abstract class Mob extends LivingEntity implements Targeting { private BlockPos restrictCenter; private float restrictRadius; @@ -28,7 +28,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -325,6 +326,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -326,6 +327,7 @@ public abstract class Mob extends LivingEntity implements Targeting { entityliving = null; } } @@ -36,7 +36,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 this.target = entityliving; return true; // CraftBukkit end -@@ -372,8 +374,28 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -373,8 +375,28 @@ public abstract class Mob extends LivingEntity implements Targeting { } this.level().getProfiler().pop(); @@ -57,7 +57,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 + return; // mob persistent + } + if (this.ticksSinceLastInteraction > this.level().purpurConfig.entityLifeSpan) { -+ this.discard(); ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + } + } + // Purpur end @@ -65,7 +65,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 @Override protected void playHurtSound(DamageSource source) { this.resetAmbientSoundTime(); -@@ -563,6 +585,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -564,6 +586,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 } @Override -@@ -633,6 +656,11 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -634,6 +657,11 @@ public abstract class Mob extends LivingEntity implements Targeting { this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,7 +85,7 @@ index 6c6d31ca2321499b1834e16545b6af9436c96b37..431f9a872a1195d6014ff9e87eef9c85 } @Override -@@ -1716,6 +1744,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1717,6 +1745,7 @@ public abstract class Mob extends LivingEntity implements Targeting { this.setLastHurtMob(target); } diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 7c3eb71eb..a7b78f144 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,10 +36,10 @@ index 8b2550bada2cca8cb9875580133ce0ee6cc19325..498c60a8669b867101f030b5735deffe + // 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 65c36f41fe7602bfc8d2349b065c7494eb1abfb6..7caf73407b0a98fdb316a6b738704fe737f4c65b 100644 +index 40a22471b7828d660b1d8aa3f16af060694a86e3..dea777da2b5cb5182fd165d070dd90d579f99bea 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -426,6 +426,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch index e27c64bf1..dae08b084 100644 --- a/patches/server/0076-Configurable-villager-breeding.patch +++ b/patches/server/0076-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 f4ed6ae7e8f122a0a2ce7f4488b0fe1ed0c7da3d..ce450d4b0d42443a47861dcb54b78a01ede734d1 100644 +index 451443c942285b0553c87c3456e140e69586b77c..976388612d64cd137b18870119928cbd45dfd2a4 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -786,7 +786,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -787,7 +787,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { @@ -18,7 +18,7 @@ index f4ed6ae7e8f122a0a2ce7f4488b0fe1ed0c7da3d..ce450d4b0d42443a47861dcb54b78a01 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0477b47563214152483423121523f836827306b..3decdb56a21e7be052ef9386f2059e912738d4be 100644 +index dcd9f80eb69e34b514f57158568e4cb59e9860ec..df4f384032f398fc9852e753dee820ffa33e10bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch index b35a75724..9f0a2c81f 100644 --- a/patches/server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0078-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 7caf73407b0a98fdb316a6b738704fe737f4c65b..a0573d7c164091ad8fa3d98d1c462a4eee309a2f 100644 +index dea777da2b5cb5182fd165d070dd90d579f99bea..02be3c960bc89464b589a557d4269fce8fb88766 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1632,6 +1632,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1640,6 +1640,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch index 950b4604f..8651cd48d 100644 --- a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0082-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 519e52b303cb9a2d4b1cae84d8436f2057003fcb..ff11643193495f0646de4bcf13b7f1e57731e4fb 100644 +index df6306572f11762ec0d54b738c1a8a30269c9224..3e32787cc7e96e83dc408e556a92b25607d487a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -480,6 +480,7 @@ public class Dolphin extends WaterAnimal { +@@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { @@ -17,7 +17,7 @@ index 519e52b303cb9a2d4b1cae84d8436f2057003fcb..ff11643193495f0646de4bcf13b7f1e5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f22aae24973fc8f6464c0de0188d01c8171546f..afc67803bf71d26e84f9130c30ac2b1b3d1114bf 100644 +index 4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9..b9faaf71e0cd5918b072d068bbc2096aa2805616 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch index 531225775..1f1731b03 100644 --- a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 2d24aa01680dfc8ada8db55d9af57bcff8218624..2300068427a5e0fe7e263455e6035cb5cff33a5f 100644 +index 95baff79c07f1fdb1f2c2799527c0d245790cd60..8307646d2ff06ae8cde245c8d1aec259df2330a2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4446,6 +4446,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4462,6 +4462,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch index a229521d3..23cc463f3 100644 --- a/patches/server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2300068427a5e0fe7e263455e6035cb5cff33a5f..53e072f6070101f9c1bd24eacf1114e0a1c16305 100644 +index 8307646d2ff06ae8cde245c8d1aec259df2330a2..ca0719307e4d50b3dcfe13195f1c1e680b00350c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3151,7 +3151,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3167,7 +3167,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 2300068427a5e0fe7e263455e6035cb5cff33a5f..53e072f6070101f9c1bd24eacf1114e0 if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3857,7 +3857,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3873,7 +3873,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch index 9aa0c4d37..6ad148bf8 100644 --- a/patches/server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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 29957114850eb897b54997dcad0753e0c895ce6e..93cf322ea4943fea127dc89eed900a2ca21b096c 100644 +index 51ccbf3bd77bbcf77833b39fadc6c01fd28f2131..0c7623cc87c534cf02ee78a1ffb6928a31758f6f 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 -@@ -526,8 +526,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -527,8 +527,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } @@ -23,7 +23,7 @@ index 29957114850eb897b54997dcad0753e0c895ce6e..93cf322ea4943fea127dc89eed900a2c 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 4ffd1263f48a426e5f7a79fd266a0f445975dc2e..6b7602954de34a114893e49e8f93665ba30ed494 100644 +index 1f25407aafba71762a482f0b1982302fed14387f..beea39d7cdbca783de7248a5c40ea2c7ab02e5b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1717,6 +1717,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch index 3a71241de..0751b3adf 100644 --- a/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0099-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 42ebd91196ae420eee57f4380abc558555457163..49b55db16c8c2f389fb6990b3b3ad7dc29eb10c3 100644 +index e8faca6e443239968f0111519f9e5cd018ed3297..5d60f038220ef4e7b66834c172cc47c7abfe7da7 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -319,7 +319,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -320,7 +320,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 42ebd91196ae420eee57f4380abc558555457163..49b55db16c8c2f389fb6990b3b3ad7dc @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1701bd63540f1672ceb821f0e37d29587847da9..c0f3f52068d147ca06dbb87da51d628b56cf51e4 100644 +index 666ff3e30e09c91653bf51041afc95799c8955fe..4386ae1f2f1e0340ad045023124693f619cf4283 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/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index a9742f003..a8ee7bf82 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -95,7 +95,7 @@ index bc3094493d7d25eaf50da8fdd74eacae25692b09..b142e5c489e9fe65b7258f541ef121b2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index d42c8bcd85ffb1e00d2883485bf22981611b0bc3..c501704251e5b23f697efc307ebdc906cd2e5acd 100644 +index 9a1e1387932a92fdf86a144b2d94b4df50feef90..3fd310fe80b0f725746e20e8be2b3b7710467c28 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -69,6 +69,11 @@ public class Cow extends Animal { @@ -111,10 +111,10 @@ index d42c8bcd85ffb1e00d2883485bf22981611b0bc3..c501704251e5b23f697efc307ebdc906 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 586d6453b45efc75b4c150707f9034576ad140e1..bc91862958fe18602d301f748ebeb73f65a4ee89 100644 +index a910e897cbd11fa17469642de43225eb512c1c51..4f1ae50564a7e646172b3b923d15a002ee736601 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -188,6 +188,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -192,6 +192,11 @@ public class Fox extends Animal implements VariantHolder { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.foxMaxHealth); } @@ -126,7 +126,7 @@ index 586d6453b45efc75b4c150707f9034576ad140e1..bc91862958fe18602d301f748ebeb73f @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -1003,8 +1008,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -1007,8 +1012,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,10 +140,10 @@ index 586d6453b45efc75b4c150707f9034576ad140e1..bc91862958fe18602d301f748ebeb73f this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index e21fc50313052fe38ad54e5b44b3739c881ccd22..56427c987439c2d6d5652dae0f2c0a72d4eba26e 100644 +index 4c3a4a5e79412a570b0dc1fdeaf540b83eb84b82..b699f88ce9480ef4da5bfb97004a9c5f62d58894 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -85,6 +85,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder 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 aace7991c198ccfe1338625e7b64b88921cefe0c..d1ada87d222e5b35c2df5a0e7b0075ec3413fa66 100644 +index 2ffa81c374bd4dc618b8e284317d13f6a070dc52..a654c26742d8aa5e4c58a6391ad2fc5fe917ed3a 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 @@ -91,6 +91,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -426,10 +426,10 @@ index abbeb305b2d09e9c4c02ade603adac5ceb34bdd0..1de48560ac5a1db8845c98c812b2e9f9 protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 68981762e3b71cfdf12180c9a711f22b33c471b7..76de20b86b6b99c10379adeb303fac4371891923 100644 +index d65d3c1275623a199d90497152519e45317a110f..250a51017cfbb42730ed736a112b269a258c19af 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -57,6 +57,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -64,6 +64,11 @@ public class SkeletonHorse extends AbstractHorse { return generateSpeed(this.level().purpurConfig.skeletonHorseMovementSpeedMin, this.level().purpurConfig.skeletonHorseMovementSpeedMax); } @@ -439,13 +439,13 @@ index 68981762e3b71cfdf12180c9a711f22b33c471b7..76de20b86b6b99c10379adeb303fac43 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 4abb9d5fedf63eba9dc3f716d44ea11806607af0..3632fcb124be8cf77d9bebf7b861a48196252ed0 100644 +index 85e32d35cdfb7dd11b3c28146b9b71eae2b5c685..0a6cf9f0f16882c8042a333852699129402f75f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -64,6 +64,11 @@ public class TraderLlama extends Llama { +@@ -67,6 +67,11 @@ public class TraderLlama extends Llama { return generateSpeed(this.level().purpurConfig.traderLlamaMovementSpeedMin, this.level().purpurConfig.traderLlamaMovementSpeedMax); } @@ -522,7 +522,7 @@ index 9748b32692b14bffde1506e88149939c4ed25900..fae14f6ab139e7d7a0e8625488c472f0 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52b9e364056b0b405779965daa634a8b0f1f82e0..bbff889198f33fa8fede86fef7be81236a0a591c 100644 +index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de89b627098 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -501,10 +501,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch index 7afe94dbe..52c243b50 100644 --- a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index b9bb4745cf540b5720259b009e973633647c36c6..1bb58a662f885670e3104e30c7ff0160198ceeed 100644 +index 8cb248a185d880bf82ea4746341fe3db5dc89459..aca5e7a2b0eab93c613b03834509366f7119ec03 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -606,7 +606,7 @@ public class ArmorStand extends LivingEntity { +@@ -607,7 +607,7 @@ public class ArmorStand extends LivingEntity { private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(DamageSource damageSource) { // Paper ItemStack itemstack = new ItemStack(Items.ARMOR_STAND); @@ -19,7 +19,7 @@ index b9bb4745cf540b5720259b009e973633647c36c6..1bb58a662f885670e3104e30c7ff0160 } 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 69912c5b300b67394dce3876d2d96872033cf156..d728dc8a9b5fa2de0a824aaf132ee15db090b02e 100644 +index 80303f9466b8c7097151be313afc9a383693d18a..e5b7598a5613a8281a991e42af5b950bcc2995ca 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -268,7 +268,13 @@ public class ItemFrame extends HangingEntity { @@ -57,7 +57,7 @@ index 03c065d0ad97d29f3586ba2bf3cd207b867ed634..62cdc36a21c0203ed98d2946a1efdf54 } 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 960bada23cb89a7f270d1ee24d62f2bc108522af..7e9c88efd2a1edea673d1ef81635c2891a04d30e 100644 +index 96c6b4c37a556da8a4c6807db121c44c3f1b0729..81e0930acccd014e977b88d22e10346627f0edb0 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java @@ -968,7 +968,13 @@ public class Boat extends VehicleEntity implements VariantHolder { @@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 569a09a73c9d800e78a77c430494292457453ab1..82d7028c1fc2ddfbb8bbcee9205375f4807c8e25 100644 +index 4e2619e07b177cd8ce732e58da538de89b627098..2d9429ef5884f0ee542c2fb197ae263c2e5d6577 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0106-Add-configurable-snowball-damage.patch b/patches/server/0106-Add-configurable-snowball-damage.patch index 6a739bed7..76ee96d82 100644 --- a/patches/server/0106-Add-configurable-snowball-damage.patch +++ b/patches/server/0106-Add-configurable-snowball-damage.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Add configurable snowball damage diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72a726f520 100644 +index 5e82549ea2e80b3968b793b7b4b685c4891e9a91..8d1591c3b29e02794f6f66b742ec6a121920ad71 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -@@ -53,7 +53,7 @@ public class Snowball extends ThrowableItemProjectile { +@@ -58,7 +58,7 @@ public class Snowball extends ThrowableItemProjectile { protected void onHitEntity(EntityHitResult entityHitResult) { super.onHitEntity(entityHitResult); Entity entity = entityHitResult.getEntity(); - int i = entity instanceof Blaze ? 3 : 0; + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur - entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i); - } + entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2c8ec43768c1a3243bca0998350400d8ea51b89..06558480c2f3b9b1e81ba48fe7c7a80ea5652599 100644 +index ed2bc4524167521bdfb1b9c516106b14b4b05e50..1f41804ec120b2e50ef99ef50d41d44a91ba3814 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -350,6 +350,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch index 4fe30e18e..78f269413 100644 --- a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8a8ddfffe83554352f1e97fd33e8afd4bb4d82c0..a7b22c652ed8876a1a8da14ffcba69fccedb578f 100644 +index 20e8c3c88891f0fe20556b700fab5122682b2bdb..050d6705cfa7ce59b85a3120a0569b3e8f9be6b7 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1311,7 +1311,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1312,7 +1312,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); @@ -18,7 +18,7 @@ index 8a8ddfffe83554352f1e97fd33e8afd4bb4d82c0..a7b22c652ed8876a1a8da14ffcba69fc } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26d0491025361ca2c898d9daa5a47430f9b8ed5e..8ccfa4ff11ca26ff3ac9785daa11d5a03d22649a 100644 +index 1f41804ec120b2e50ef99ef50d41d44a91ba3814..e84e5007a0952a77b991ff6c00549af28aa54230 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -156,8 +156,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index a9d248102..24a15efb5 100644 --- a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,10 +136,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index ce450d4b0d42443a47861dcb54b78a01ede734d1..833db485054338cd4a5e626b35ec050c35f15477 100644 +index 976388612d64cd137b18870119928cbd45dfd2a4..430e660f74ee523d0bb98e21784f32158495de7a 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -225,7 +225,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index ce450d4b0d42443a47861dcb54b78a01ede734d1..833db485054338cd4a5e626b35ec050c } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -979,6 +979,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -980,6 +980,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { @@ -174,7 +174,7 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7bcec0062d777134fdc963ed4e8874730df36711..743f53357131695b89cb71c0c126f2e53a46c9f1 100644 +index c034b4686a1f5c67daef7ece163b92f54c6813d4..aebeb25fcb6b9a72ad52d249f8df794c3f5cce11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1808,6 +1808,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch index a3dcdb1db..60df30ee8 100644 --- a/patches/server/0117-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -29,7 +29,7 @@ index 808ec6b3fa06dd0de76e78ec832894b2570eef8c..69af88f3ed690cbb751d367171c4cf6a this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a7388e51a169d43f22a1bd193b88f4383949cea6..f0745f41ba4c1931e4b61ac75edcff8f8cea5b34 100644 +index aa47b0af34cff5eaa638d6c24c718d02a0a266cf..d66fc3f1b8d960782a7a2e08dd72831025f9c8fd 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -351,6 +351,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -83,10 +83,10 @@ index fbf1b37a0328d72c54331f8b567088731e5cc5d0..a30732576b86bcf9c56e7d0ced8eb849 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index f00121174230b16d852a6b5aaa75d277deaf5dff..d283a8c2e976c0320c65e3be542bd36dad809cc9 100644 +index 8d4e080540fb24b434e6d01eee6e7c2116c66804..89ba5789c6d6e4fe8360a854f0a6123036a5a792 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -486,6 +486,7 @@ public abstract class PlayerList { +@@ -487,6 +487,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -94,7 +94,7 @@ index f00121174230b16d852a6b5aaa75d277deaf5dff..d283a8c2e976c0320c65e3be542bd36d PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -598,6 +599,7 @@ public abstract class PlayerList { +@@ -599,6 +600,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent diff --git a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch index 82158b7e3..5a5b75daa 100644 --- a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f26322bfa6b26d2b97a1e89218c685b508a3253b..ad4046a24f04845e794d1e446e12eb6c5c581d14 100644 +index e68ed7339d8aed2b97e310edeee3960611ed7bf1..73f8aeb1b5253cfd7d5502d506677a3ef906625e 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -368,6 +368,16 @@ public abstract class Player extends LivingEntity { +@@ -369,6 +369,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index 8a12662db..8c2093783 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a0573d7c164091ad8fa3d98d1c462a4eee309a2f..2a5d3d5c0a337933c62e1168de1a595a92bc5444 100644 +index 02be3c960bc89464b589a557d4269fce8fb88766..0461debc992ad7812a28ea73f3e18d5c0c22f700 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1810,7 +1810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index a0573d7c164091ad8fa3d98d1c462a4eee309a2f..2a5d3d5c0a337933c62e1168de1a595a BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 3fd1951441b149af2fcf335fd4b5886b4d66d5b0..c5cf5e84893f137ee4bead287e80eb57ff1a7407 100644 +index 050d6705cfa7ce59b85a3120a0569b3e8f9be6b7..56ba7ac3d9d1f65de84f98eb724761d6bb374d47 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -706,7 +706,7 @@ public abstract class Mob extends LivingEntity implements Targeting { public void aiStep() { super.aiStep(); this.level().getProfiler().push("looting"); @@ -92,10 +92,10 @@ index 5580a396a56c6e0f364a5368985ee99b9e2be0a8..3facfd6eee17cb0b59425494c966e198 } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index bc91862958fe18602d301f748ebeb73f65a4ee89..ef2f07cd030d66797cc00932ad61282c634e8047 100644 +index 4f1ae50564a7e646172b3b923d15a002ee736601..5ddc3e997fec6417c379561f60c438386030d49d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1397,7 +1397,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -1401,7 +1401,7 @@ public class Fox extends Animal implements VariantHolder { } protected void onReachedTarget() { @@ -131,10 +131,10 @@ index b97f892fe5824b5275905cd51599bea17da3dd19..1d70a108293a61b7813b70cc9ce600a3 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 88bc3710cf7229f85805ec210a06b224aec65a4b..50f6b8977866248d1a69f0c82d427eb8ef480952 100644 +index e4b2b35cb1704e61ce0a84cb97578cee7e1eed43..39cf974313c7c0bdcd6599c6c8bec450efe0277a 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -604,7 +604,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -605,7 +605,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index 88bc3710cf7229f85805ec210a06b224aec65a4b..50f6b8977866248d1a69f0c82d427eb8 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 6bc0713a8bc8ac86f1febe3414bed135c1cd5336..a655c38eccc41d97cfb6d329e104bad6d9ccbc95 100644 +index 0c7623cc87c534cf02ee78a1ffb6928a31758f6f..3cc47b0e05621c913a3e8d04c653bafab4a86744 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 -@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -221,10 +221,10 @@ index 226b44ba4cd3a08562c8cb0d79c1d880cfac34ec..056fa8b12368dac5d1a12962b8ee92e8 AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc8170c8a8 100644 +index e81c162f7a2061180f81754de341b2c33da76a0d..69f6306b91e535050fe8b22852503dfb0514f316 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -210,7 +210,7 @@ public class Silverfish extends Monster { +@@ -211,7 +211,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -233,7 +233,7 @@ index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -248,7 +248,7 @@ public class Silverfish extends Monster { +@@ -249,7 +249,7 @@ public class Silverfish extends Monster { } else { RandomSource randomsource = this.mob.getRandom(); @@ -256,10 +256,10 @@ index b5e6a48192592e9bc5a7c0a2775e5d78f06cd46a..03b58860ecb72976ecce99f368d16942 protected boolean canReplaceCurrentItem(ItemStack stack) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e83031751cf50 100644 +index 9d89872c5958f3e8d6c1ef4fd93f9b8b85296851..6a94c86acce5afbf1e9c8e7d664b3eb2d79ab5ab 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -@@ -16,20 +16,20 @@ public class LargeFireball extends Fireball { +@@ -19,20 +19,20 @@ public class LargeFireball extends Fireball { public LargeFireball(EntityType type, Level world) { super(type, world); @@ -284,7 +284,7 @@ index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e8303 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 837f68825f601971f374be47952b23108bf66ba6..422145f30b7c8e11366705cd9b974a5a89ba5e10 100644 +index 2a8a8030feefae84e394460612405887e63f2ac7..577df1ad8eb57ae7a53c9931c379824a6882fa5f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -334,7 +334,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @@ -297,10 +297,10 @@ index 837f68825f601971f374be47952b23108bf66ba6..422145f30b7c8e11366705cd9b974a5a public boolean mayBreak(Level world) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 9d43c8520953d6fe0d0948f9dbe14e0650ee01c2..deee9fffe6981d7e728621cc799a812d78000592 100644 +index 6724fe4470aeea338eb4cfd10a7e61fbcac1e5b7..dd38f32ac6a62905c9a79dacf85cf073fa6941b3 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -@@ -24,7 +24,7 @@ public class SmallFireball extends Fireball { +@@ -27,7 +27,7 @@ public class SmallFireball extends Fireball { super(EntityType.SMALL_FIREBALL, owner, velocityX, velocityY, velocityZ, world); // CraftBukkit start if (this.getOwner() != null && this.getOwner() instanceof Mob) { @@ -310,10 +310,10 @@ index 9d43c8520953d6fe0d0948f9dbe14e0650ee01c2..deee9fffe6981d7e728621cc799a812d // CraftBukkit end } diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index 226fb5c88dd43c8008c5237299ef80db9e847af7..2da00acac01e333c23f7d155594011dceeb50f64 100644 +index 93bbf7556f9599e9dd90761085a57d78bd521867..b3912881892b4f1bca577761083c5da1568c8187 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java -@@ -319,7 +319,7 @@ public abstract class Raider extends PatrollingMonster { +@@ -322,7 +322,7 @@ public abstract class Raider extends PatrollingMonster { @Override public boolean canUse() { diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch index 46f8a6b9e..e3c302ec9 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -55,10 +55,10 @@ index 1b5cc5d6aa0b4313da980ce175c54145852d0db0..613df7b174ba4cb87314a631ebc7dfed EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index f5f464e69bfb00f5ea493d109bdd96e459fcad46..c3d25a26883f7cbe7106c2f3415af0b18f534ee2 100644 +index 400b7bbf49b1aa42eebb5d8f349a19d4ff321a7c..1b150b9fc444a248f6c01572447c7bb8eecfc76e 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -178,6 +178,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -179,6 +179,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { if (!entity.canChangeDimensions()) return; // Purpur @@ -74,10 +74,10 @@ index f5f464e69bfb00f5ea493d109bdd96e459fcad46..c3d25a26883f7cbe7106c2f3415af0b1 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 39ae3335866669be54f31ee6cd10d41bc70b193c..a260e3768892dcf7ddd955cf8753d4d19cd2e8d3 100644 +index 74599d29538b7072464d3bb16b6356da09513d21..61348dfaab2fe3da35ae3195b7224e4b239dddd8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -252,6 +252,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -253,6 +253,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -89,7 +89,7 @@ index 39ae3335866669be54f31ee6cd10d41bc70b193c..a260e3768892dcf7ddd955cf8753d4d1 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 008da41d0fa6d80dc731e4eeb9aa4d4cb4b1873e..498310a94284c25d2e28d7de8299b80b1f34de3b 100644 +index bcf3393ad12a70eea0e1b24f69fac15b08af32fb..f74e632f6be8ab2c7bdf9f5ba2ad2a2a0ef4d14e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1356,6 +1356,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch index 623c0b362..5436c6ebf 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0126-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53e072f6070101f9c1bd24eacf1114e0a1c16305..36dd6555fb2245958ae5372b376d2329346060ea 100644 +index ca0719307e4d50b3dcfe13195f1c1e680b00350c..7380008f1bd25eb459e5875f753015593135486f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1872,7 +1872,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1885,7 +1885,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } @@ -30,10 +30,10 @@ index 53e072f6070101f9c1bd24eacf1114e0a1c16305..36dd6555fb2245958ae5372b376d2329 if (entity instanceof Boat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 728814649f8d6837586cd5400b271d25b8306e35..53f36e281e42a2bfc174f06f448f1eb85eb02aff 100644 +index aca5e7a2b0eab93c613b03834509366f7119ec03..40550897d5be12fcb8e1e751ee2e7a138512ce0b 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { +@@ -100,10 +100,12 @@ public class ArmorStand extends LivingEntity { private boolean noTickPoseDirty = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -46,7 +46,7 @@ index 728814649f8d6837586cd5400b271d25b8306e35..53f36e281e42a2bfc174f06f448f1eb8 this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); this.headPose = ArmorStand.DEFAULT_HEAD_POSE; -@@ -1005,4 +1007,18 @@ public class ArmorStand extends LivingEntity { +@@ -1006,4 +1008,18 @@ public class ArmorStand extends LivingEntity { } } // Paper end diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index ecc4a0c05..3282b813c 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index a30732576b86bcf9c56e7d0ced8eb8490af13515..e76d1a202bea3dd94cbdbdfca9b052ca // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 36dd6555fb2245958ae5372b376d2329346060ea..e30dad61530fcc2c806465bbdaf4d2a7029e6153 100644 +index 7380008f1bd25eb459e5875f753015593135486f..79f6b204668a508d2afd305f520c413f9f5fa8f1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3148,12 +3148,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3164,12 +3164,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index c97ac36a7..57d318bda 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -110,7 +110,7 @@ index 3d61c2d5da103de68242c16d85c703813979d179..2343325fa9a771de7b9445cda24a2bcd public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527d589dfd3 100644 +index 3fd310fe80b0f725746e20e8be2b3b7710467c28..4c2cc5ba3c8f15c26f01361e786d25b399747974 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -74,6 +74,11 @@ public class Cow extends Animal { @@ -126,10 +126,10 @@ index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 cdbe66bc89a64f8d41ea496f2da85159f48bb8c5..a5759b711d1853ac41713dd9fe11f3da5af286ef 100644 +index 3e32787cc7e96e83dc408e556a92b25607d487a9..21e804d391478c613f4f89076fd268a9eb2e2ecf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -163,6 +163,11 @@ public class Dolphin extends WaterAnimal { +@@ -164,6 +164,11 @@ public class Dolphin extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.dolphinMaxHealth); } @@ -142,10 +142,10 @@ index cdbe66bc89a64f8d41ea496f2da85159f48bb8c5..a5759b711d1853ac41713dd9fe11f3da @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 292504cb09ac94f593fdde317030c7662f9e500c..9a34a59300c4ad5dfbd327aa4fd42992f73da89a 100644 +index 5ddc3e997fec6417c379561f60c438386030d49d..1e04205a1707e46a1f540f5c8f6ec1b81bf1b5d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -197,6 +197,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxBreedingTicks; } @@ -174,10 +174,10 @@ index 46e28d807a72b6d302d29d65c52ab0813cd82b1a..669132fb78d3fd72f73d4c20370f0213 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 56427c987439c2d6d5652dae0f2c0a72d4eba26e..f01d93c6f88f543b51420ceca7a4a95829368a20 100644 +index b699f88ce9480ef4da5bfb97004a9c5f62d58894..5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -90,6 +90,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 1bb5eb0f75dc4509377cf54054eba34e4ffd02a9..edc47e077fe44d1b817b791ddde86e052a5bf831 100644 +index 4df125607985b315b078253f7ea889626e743197..94b92c6e588f871d4b0d86bb8f860a99e473a4ea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -141,6 +141,11 @@ public class Zombie extends Monster { @@ -1165,10 +1165,10 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index b8675cb1a69f675585c040b2f47172dfe9235d08..cd59f262572df87b28b33f98a3dc667b4c5b3072 100644 +index 430e660f74ee523d0bb98e21784f32158495de7a..870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -191,6 +191,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1181,10 +1181,10 @@ index b8675cb1a69f675585c040b2f47172dfe9235d08..cd59f262572df87b28b33f98a3dc667b public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 8ab868c88e37fad978ffcf151ad527e57bdf4cb5..027e86e504d0e4291deae0641f0e5b40686e6ccb 100644 +index 6f30c22fe0058320b995570c9af7b15ae917dd76..381e86286eabdbc254cd8901c498dd781521ed4d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -97,6 +97,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -98,6 +98,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return level().purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); } @@ -1197,7 +1197,7 @@ index 8ab868c88e37fad978ffcf151ad527e57bdf4cb5..027e86e504d0e4291deae0641f0e5b40 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd4a14bd5d13b41d02ad68ddf31fd3648f933850..bab1a72f8a165ba9df57187296f242287d57f300 100644 +index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad3c83c563 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -568,11 +568,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0130-End-crystal-explosion-options.patch b/patches/server/0130-End-crystal-explosion-options.patch index a5d06766a..2a65dea77 100644 --- a/patches/server/0130-End-crystal-explosion-options.patch +++ b/patches/server/0130-End-crystal-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End crystal explosion options 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 aa75a9229210302dbccd6186439c3c35481ef46c..ea7075dd4a9bc466d850cabc69199d56e48c825a 100644 +index c0c8bdfbab17d8a10d616e2625ebfa7babf5fab3..24ad1bae912fa6ee82ea8b6bdbb0af664dc1006c 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 -@@ -48,6 +48,22 @@ public class EndCrystal extends Entity { +@@ -49,6 +49,22 @@ public class EndCrystal extends Entity { this.setPos(x, y, z); } @@ -32,8 +32,8 @@ index aa75a9229210302dbccd6186439c3c35481ef46c..ea7075dd4a9bc466d850cabc69199d56 protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; @@ -173,16 +189,18 @@ public class EndCrystal extends Entity { + } // CraftBukkit end - this.remove(Entity.RemovalReason.KILLED); if (!source.is(DamageTypeTags.IS_EXPLOSION)) { + if (shouldExplode()) {// Purpur DamageSource damagesource1 = source.getEntity() != null ? this.damageSources().explosion(this, source.getEntity()) : null; @@ -42,16 +42,16 @@ index aa75a9229210302dbccd6186439c3c35481ef46c..ea7075dd4a9bc466d850cabc69199d56 - ExplosionPrimeEvent event = CraftEventFactory.callExplosionPrimeEvent(this, 6.0F, false); + ExplosionPrimeEvent event = CraftEventFactory.callExplosionPrimeEvent(this, getExplosionPower(), hasExplosionFire()); // Purpur if (event.isCancelled()) { - this.unsetRemoved(); return false; } + + this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause - this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK); + this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur - // CraftBukkit end + } else this.unsetRemoved(); // Purpur + } else { + this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } - - this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index f1e99cc608fb9afab44c2c960c7b74468ec62c07..40ca971f169bd07da0a2f7ba37e3a4aa534d0c7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 4d3cb9f85..4f89445ba 100644 --- a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index df8baf2059cdfed3f0c43496fba843b8b6819281..aa10cd2e0ee7b0d421c223de390e671d401f87fc 100644 +index 0ce3acdc0bc72bba3b59d480e7e4135b3d794fca..ff4b188084d43af9e8ed60e6a77996018e589807 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -1189,6 +1189,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1190,6 +1190,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -17,10 +17,10 @@ index df8baf2059cdfed3f0c43496fba843b8b6819281..aa10cd2e0ee7b0d421c223de390e671d } 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 73930b4eea2bd632c390b79118ecafad84cfa44a..ac7e54e2bfc1ca41fd8082c453c1f99fa89e77c2 100644 +index db5a8b93b9cefca4566d3abc2b4c55d4b4cc1003..06f4bbbbdf3a3c49035df9edc258e6bda87b53fc 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 -@@ -739,6 +739,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -740,6 +740,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected boolean canRide(Entity entity) { @@ -29,7 +29,7 @@ index 73930b4eea2bd632c390b79118ecafad84cfa44a..ac7e54e2bfc1ca41fd8082c453c1f99f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d7d111a2cb6f02d3263174af9e70548be0fe971..ecfbfc843b534196ff19c2e45989f0271f9e8105 100644 +index 40ca971f169bd07da0a2f7ba37e3a4aa534d0c7e..6d017d5d3cfe8581936b8f1fb58656ff2b2fdf95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0133-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch index 16c985308..6f387ee32 100644 --- a/patches/server/0133-One-Punch-Man.patch +++ b/patches/server/0133-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2a5d3d5c0a337933c62e1168de1a595a92bc5444..9c240ce04337458395aea35aab7d97a9f592f008 100644 +index 0461debc992ad7812a28ea73f3e18d5c0c22f700..f1a8918afe7e13fa0ba61566d3ad1b364a6e71dc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2348,6 +2348,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2356,6 +2356,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 940274eb3..b8f3d57b6 100644 --- a/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -8,10 +8,10 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG - Endermite spawn chance diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 3be611e7ae35b696ba44cd361042f79b69391815..0de1cda80c57c3552d243780d5aa368675b915e8 100644 +index 28690877c443ceb2bdf20e6d251c9d32f667814c..b004f072d2a67ad9fb39dd6fbd3a30c94016202f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -70,7 +70,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -71,7 +71,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { Bukkit.getPluginManager().callEvent(teleEvent); if (!teleEvent.isCancelled() && entityplayer.connection.isAcceptingMessages()) { @@ -20,7 +20,7 @@ index 3be611e7ae35b696ba44cd361042f79b69391815..0de1cda80c57c3552d243780d5aa3686 Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level()); if (entityendermite != null) { -@@ -85,7 +85,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -86,7 +86,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { entityplayer.connection.teleport(teleEvent.getTo()); entity.resetFallDistance(); diff --git a/patches/server/0136-Add-back-player-spawned-endermite-API.patch b/patches/server/0136-Add-back-player-spawned-endermite-API.patch index 969f0fcf3..9f58851c8 100644 --- a/patches/server/0136-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0136-Add-back-player-spawned-endermite-API.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Add back player spawned endermite API diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 936add0eb7204af7dc507c786cb82e0d7a76d5dc..c0c3ab5dbf5987e543e6cdd1a814d2ec3ec17939 100644 +index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a354ac412d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -32,6 +32,7 @@ import org.joml.Vector3f; - public class Endermite extends Monster { +@@ -37,6 +37,7 @@ public class Endermite extends Monster { + private static final int MAX_LIFE = 2400; public int life; + private boolean isPlayerSpawned; // Purpur public Endermite(EntityType type, Level world) { super(type, world); -@@ -65,6 +66,14 @@ public class Endermite extends Monster { +@@ -70,6 +71,14 @@ public class Endermite extends Monster { return this.level().purpurConfig.endermiteTakeDamageFromWater; } @@ -31,7 +31,7 @@ index 936add0eb7204af7dc507c786cb82e0d7a76d5dc..c0c3ab5dbf5987e543e6cdd1a814d2ec @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -117,12 +126,14 @@ public class Endermite extends Monster { +@@ -122,12 +131,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.life = nbt.getInt("Lifetime"); @@ -47,10 +47,10 @@ index 936add0eb7204af7dc507c786cb82e0d7a76d5dc..c0c3ab5dbf5987e543e6cdd1a814d2ec @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index f9cd39a4f8ec5cdade311984d863b64f8f845fb7..59cc9e9a56898c7bdc5474842c31d2fbe6a81897 100644 +index b004f072d2a67ad9fb39dd6fbd3a30c94016202f..326d1db39e3d3cd46cb5a584e2a7b82dd46ff8fa 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -74,6 +74,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -75,6 +75,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level()); if (entityendermite != null) { diff --git a/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch index 25e8c394e..53bdeed38 100644 --- a/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470d167443b 100644 +index eb2c80a50bd29ad4ab9ece0ce5d71f3713700fba..743d888c07450ea9e2367d169e20a583b51f7be0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -63,6 +63,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -64,6 +64,7 @@ public class Creeper extends Monster implements PowerableMob { private int spacebarCharge = 0; private int prevSpacebarCharge = 0; private int powerToggleDelay = 0; @@ -17,7 +17,7 @@ index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470 // Purpur end public Creeper(EntityType type, Level world) { -@@ -268,6 +269,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -269,6 +270,14 @@ public class Creeper extends Monster implements PowerableMob { return this.level().purpurConfig.creeperTakeDamageFromWater; } @@ -32,7 +32,7 @@ index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470 @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; -@@ -359,6 +368,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -360,6 +369,7 @@ public class Creeper extends Monster implements PowerableMob { } public void explodeCreeper() { @@ -40,7 +40,7 @@ index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470 if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; -@@ -377,7 +387,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -378,7 +388,7 @@ public class Creeper extends Monster implements PowerableMob { } // CraftBukkit end } @@ -50,7 +50,7 @@ index 63d51f6f792f951a1db5f8f7c9b359898968cd85..f043b6da9649c8c9e6a9cf5172e95470 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f2357e851fcea101d1a6f262ff88561b774032b0..44b98e5030bef02ab05a9686fdfc711fa78ec072 100644 +index 238f8dd90bbf9897cb28c4783ad43382be0a836a..78d088e0ae3186f72dc8898a65ef2983e7d608ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -851,6 +851,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0145-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch index db92e587c..1b56264f9 100644 --- a/patches/server/0145-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading 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 9ed51efc1a42a792b652e7c958c06fa5b572e4bf..6857eeb9a93850594cbdb634dfbdf6cb6d82ced5 100644 +index 870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5..ee509b5eea71c17ff466fb93fe63168710065add 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -373,7 +373,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur @@ -18,10 +18,10 @@ index 9ed51efc1a42a792b652e7c958c06fa5b572e4bf..6857eeb9a93850594cbdb634dfbdf6cb } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 5a373ba4d9e404c064bc158718d02c0cd2aca548..d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5 100644 +index 381e86286eabdbc254cd8901c498dd781521ed4d..657fdbabf18da7ab321e8e95a31d53362c605380 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -153,7 +153,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -154,7 +154,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur @@ -31,7 +31,7 @@ index 5a373ba4d9e404c064bc158718d02c0cd2aca548..d672c1e381e5c4a4b79a1dfb96f1410e this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e51a38ca916e91255c46b864e45428a364e59539..9aa6a3f69afb0fd70ac60ca0d50d564dd7d3fe54 100644 +index adb72146f6d6fd1389d99f833115ff8bc68f925b..ab999a2a71d1a04bce176d81844cecbf5760157d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2123,6 +2123,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 3892a9b2c..a4212ccc5 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e30dad61530fcc2c806465bbdaf4d2a7029e6153..7579c2d4c716695ab1854a055bc595d7b55201e5 100644 +index 79f6b204668a508d2afd305f520c413f9f5fa8f1..b14b99b8f0ce427da999e486bfed84ad38a19d8c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3397,7 +3397,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3413,7 +3413,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index e30dad61530fcc2c806465bbdaf4d2a7029e6153..7579c2d4c716695ab1854a055bc595d7 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9c240ce04337458395aea35aab7d97a9f592f008..99673b3df82d40dfebc313935061e3fa79a3a59c 100644 +index f1a8918afe7e13fa0ba61566d3ad1b364a6e71dc..fa289f634d4a674d6cb5d9633ae6d1997a02fd59 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -438,7 +438,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 9c240ce04337458395aea35aab7d97a9f592f008..99673b3df82d40dfebc313935061e3fa this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -450,7 +450,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -451,7 +451,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch index c92cf9a43..b313afb1d 100644 --- a/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 5332e072e3c278a1d9769feb783b9419020a36d1..1ea348b6007d8aebf1e0f29018a03eb10c445369 100644 +index 40550897d5be12fcb8e1e751ee2e7a138512ce0b..fef18455da5ae020f9875663984b26e54a1c4bf7 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -114,6 +114,7 @@ public class ArmorStand extends LivingEntity { +@@ -115,6 +115,7 @@ public class ArmorStand extends LivingEntity { this.leftLegPose = ArmorStand.DEFAULT_LEFT_LEG_POSE; this.rightLegPose = ArmorStand.DEFAULT_RIGHT_LEG_POSE; this.setMaxUpStep(0.0F); @@ -17,7 +17,7 @@ index 5332e072e3c278a1d9769feb783b9419020a36d1..1ea348b6007d8aebf1e0f29018a03eb1 public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 40afefd48f10068c48f2db6524c1c24cb5348c28..f023b83b2e7084ee661673080c4573c4bce9f355 100644 +index b8d5b60abe228456e62b5bee33bb65d19c9f71d4..d4afdff36ef3fe477ca4b8dfe2cf44965d73dc50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Config-to-change-max-number-of-bees.patch b/patches/server/0157-Config-to-change-max-number-of-bees.patch index bb56df6c3..cd579d08f 100644 --- a/patches/server/0157-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0157-Config-to-change-max-number-of-bees.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index dfd364ac4b7551a13c4c6c100b5e62c0dfb10595..312ee43ad1a35918fc359f7ebb5742004212b931 100644 +index 55b0e2bf98a285cdcd30e40d94192b7a1802efd8..b37b7f58d59616cd409bbab701659c8e8879ccc7 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -47,7 +47,7 @@ public class BeehiveBlockEntity extends BlockEntity { private final List stored = Lists.newArrayList(); @Nullable public BlockPos savedFlowerPos; diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch index 485fd260c..afe90ba0c 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0158-Config-for-wither-explosion-radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for wither explosion radius 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 d57ef27df0a3597416564f8723b4b986413ad314..aa5ce9625bf23885a55521cbb4d994b684a5cf61 100644 +index 8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94..beaa7e817fb923b9cb1a9df63ddce3fe9e087061 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -98,7 +98,7 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -99,7 +99,7 @@ public class WitherSkull extends AbstractHurtingProjectile { if (!this.level().isClientSide) { // CraftBukkit start // this.level().explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB); @@ -18,7 +18,7 @@ index d57ef27df0a3597416564f8723b4b986413ad314..aa5ce9625bf23885a55521cbb4d994b6 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 960dfb5f343bc0c1dcd17271594e33471a191b83..cd1fd91c9b0c1e4627f918d97338c1e87bcc0601 100644 +index 50373f138db63443dee0ca28781ae0a0cc65fa24..8b7c68d7d7ae77ba216a004724d088956a1dfce4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2290,6 +2290,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0162-Configurable-mob-blindness.patch b/patches/server/0162-Configurable-mob-blindness.patch index 1f259baa1..bf91f0b75 100644 --- a/patches/server/0162-Configurable-mob-blindness.patch +++ b/patches/server/0162-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 99673b3df82d40dfebc313935061e3fa79a3a59c..e997844c0cead8eef82a8025283d43163b1a6848 100644 +index fa289f634d4a674d6cb5d9633ae6d1997a02fd59..926962fc5631faa4672c8dd2fdb72b9ef6947292 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1037,6 +1037,17 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1045,6 +1045,17 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } diff --git a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch index 43671818b..2b0913a9b 100644 --- a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index f043b6da9649c8c9e6a9cf5172e95470d167443b..1a33d4e855a85b0a0d51c29dbb4042d30918684c 100644 +index 743d888c07450ea9e2367d169e20a583b51f7be0..a3cc2e3ae32984e11f4e91421d663f0fe7c7b236 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -371,9 +371,10 @@ public class Creeper extends Monster implements PowerableMob { +@@ -372,9 +372,10 @@ public class Creeper extends Monster implements PowerableMob { this.exploding = true; // Purpur if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; @@ -21,7 +21,7 @@ index f043b6da9649c8c9e6a9cf5172e95470d167443b..1a33d4e855a85b0a0d51c29dbb4042d3 // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1af16bbaab355022d183e71828a866686347ec0f..59cb375fce3f2917d86617854a18dfa55766daf4 100644 +index 3d582716df3cbdec2f1c2dbaf567e829406c21a1..8694ba3aea41f83d16d0a761b922b6b248e5942f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -928,6 +928,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch index 601f357bc..d1a32db26 100644 --- a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index ad4046a24f04845e794d1e446e12eb6c5c581d14..2289e7bc32e0d2833e73f9d21c37487cd369b25f 100644 +index 73f8aeb1b5253cfd7d5502d506677a3ef906625e..28dca8464a75487566e5d2efac1ec3fe42e6c410 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1315,7 +1315,7 @@ public abstract class Player extends LivingEntity { +@@ -1316,7 +1316,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits flag2 = flag2 && !this.isSprinting(); if (flag2) { diff --git a/patches/server/0172-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0172-Bee-can-work-when-raining-or-at-night.patch index f3846f5b8..236ce0a97 100644 --- a/patches/server/0172-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0172-Bee-can-work-when-raining-or-at-night.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night 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 0db5e35b8e4a186c8ef150a1b0f072e10573136e..a4c6ea94be1c1a610c6141328192a29052b9f157 100644 +index 52a7a8b35cf0f7b52d5de253b21f7713ab261544..8d80055253008bb1b2ed77e91a1c51c995208dac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -406,7 +406,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -18,10 +18,10 @@ index 0db5e35b8e4a186c8ef150a1b0f072e10573136e..a4c6ea94be1c1a610c6141328192a290 return flag && !this.isHiveNearFire(); } else { diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 312ee43ad1a35918fc359f7ebb5742004212b931..8a163b5d3c7759abe4fe84bfec788a15fddc1e44 100644 +index b37b7f58d59616cd409bbab701659c8e8879ccc7..dc5bcf8f7662bd1feb4375605f27c320878bf7e0 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -203,7 +203,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -207,7 +207,7 @@ public class BeehiveBlockEntity extends BlockEntity { } private static boolean releaseBee(Level world, BlockPos blockposition, BlockState iblockdata, BeehiveBlockEntity.BeeData tileentitybeehive_hivebee, @Nullable List list, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, @Nullable BlockPos blockposition1, boolean force) { @@ -31,7 +31,7 @@ index 312ee43ad1a35918fc359f7ebb5742004212b931..8a163b5d3c7759abe4fe84bfec788a15 return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e50d8cb072acd403c285fee9a0df80e4d5946846..3973c8fb88ed33264e21d94b56425389c95b54a1 100644 +index 96d04052d419e4b74826c63fb4a687bf7490d4c1..7d89fc67d4f9b58697ff317a0c526be8e612e37a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -764,6 +764,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index d6f972e25..1f98cf2e9 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7579c2d4c716695ab1854a055bc595d7b55201e5..f8f311e0e4715a8d648d743c0b5a664b7f004efe 100644 +index b14b99b8f0ce427da999e486bfed84ad38a19d8c..d79cbbcf0e6e6e6096e138be2617b727ea991c18 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -561,6 +561,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return true; } @@ -32,10 +32,10 @@ index 7579c2d4c716695ab1854a055bc595d7b55201e5..f8f311e0e4715a8d648d743c0b5a664b return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e997844c0cead8eef82a8025283d43163b1a6848..1ebc5cfac7e7e47e1e9c10a90d707a4fa799ca43 100644 +index 926962fc5631faa4672c8dd2fdb72b9ef6947292..4af345c848040fabdde82b4f0493ba796a7fef1f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -262,6 +262,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API @@ -43,7 +43,7 @@ index e997844c0cead8eef82a8025283d43163b1a6848..1ebc5cfac7e7e47e1e9c10a90d707a4f @Override public float getBukkitYaw() { -@@ -803,6 +804,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -811,6 +812,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index e997844c0cead8eef82a8025283d43163b1a6848..1ebc5cfac7e7e47e1e9c10a90d707a4f } @Override -@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -897,6 +899,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index e997844c0cead8eef82a8025283d43163b1a6848..1ebc5cfac7e7e47e1e9c10a90d707a4f } // CraftBukkit start -@@ -3599,6 +3606,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3607,6 +3614,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -92,10 +92,10 @@ index e997844c0cead8eef82a8025283d43163b1a6848..1ebc5cfac7e7e47e1e9c10a90d707a4f public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index c5cf5e84893f137ee4bead287e80eb57ff1a7407..8588f230724e7fec2093b0b5c8c80b3d1944ce47 100644 +index 56ba7ac3d9d1f65de84f98eb724761d6bb374d47..380834677c93a23879a9e53173fa835ebd22f584 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1765,17 +1765,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1766,17 +1766,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { @@ -354,10 +354,10 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 // Paper end - Add more Zombie API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index a260e3768892dcf7ddd955cf8753d4d19cd2e8d3..9304a2d06400dfa244ddb4d9591de988b334c3cf 100644 +index 61348dfaab2fe3da35ae3195b7224e4b239dddd8..897f9f5d25c674f167530810c0b94bca83c3c3cc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -84,6 +84,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -370,7 +370,7 @@ index a260e3768892dcf7ddd955cf8753d4d19cd2e8d3..9304a2d06400dfa244ddb4d9591de988 Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 1bcd9d9729952e68c56ff6e169ace11611b44e97..332c553db22aaeb0cda5e628c5e464e130c7abb0 100644 +index 1d889c7476149431693f4c6125857f33c89b13a2..9730a5469f81687cfde0a19a58d1c2147588d1d2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1173,5 +1173,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0176-Add-toggle-for-sand-duping-fix.patch b/patches/server/0176-Add-toggle-for-sand-duping-fix.patch index 28ace66b0..62529b0eb 100644 --- a/patches/server/0176-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0176-Add-toggle-for-sand-duping-fix.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for sand duping fix diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 9daf8aa557d9f4fdbcc138a47892ea5a061dd877..3a25741693a8fd08ac4308da3f178155c28bf46b 100644 +index 0aef6a8d51cb1351daaea16022f5cbb27ceaff0d..65cb5994142351e2b19f6d4ff2963f9ae7752205 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -133,7 +133,7 @@ public class FallingBlockEntity extends Entity { +@@ -134,7 +134,7 @@ public class FallingBlockEntity extends Entity { @Override public void tick() { // Paper start - fix sand duping @@ -17,7 +17,7 @@ index 9daf8aa557d9f4fdbcc138a47892ea5a061dd877..3a25741693a8fd08ac4308da3f178155 return; } // Paper end - fix sand duping -@@ -149,7 +149,7 @@ public class FallingBlockEntity extends Entity { +@@ -150,7 +150,7 @@ public class FallingBlockEntity extends Entity { this.move(MoverType.SELF, this.getDeltaMovement()); // Paper start - fix sand duping @@ -27,7 +27,7 @@ index 9daf8aa557d9f4fdbcc138a47892ea5a061dd877..3a25741693a8fd08ac4308da3f178155 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 072387303cf013876e6d13ccd6646e7f197bf7ac..77fa5b91ac5a65d2dce6195214c39dbff4aa6c8b 100644 +index 991e8491c5bc254eb2ba0cbdcd06cb410d286fbb..6fb87c1ab0397d4c659dc69f33d0a4743c4d0dcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -683,6 +683,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch index a6e721182..f93f429e6 100644 --- a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f8f311e0e4715a8d648d743c0b5a664b7f004efe..079cf12c01df7ebb1c9c29a4efa1b94dea4d0d78 100644 +index d79cbbcf0e6e6e6096e138be2617b727ea991c18..c868a61d73b4563807c70c9539f63cb0645a9984 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3222,7 +3222,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3238,7 +3238,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); diff --git a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 94efa07bf..d238d9ca5 100644 --- a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 2289e7bc32e0d2833e73f9d21c37487cd369b25f..5259d5a17b162700737acc5583560784aea10d9f 100644 +index 28dca8464a75487566e5d2efac1ec3fe42e6c410..f8b444583cc48a18a68c860ba933c0c1834578be 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { +@@ -184,6 +184,7 @@ public abstract class Player extends LivingEntity { public boolean affectsSpawning = true; // Paper - Affects Spawning API public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public int sixRowEnderchestSlotCount = -1; // Purpur @@ -17,7 +17,7 @@ index 2289e7bc32e0d2833e73f9d21c37487cd369b25f..5259d5a17b162700737acc5583560784 // CraftBukkit start public boolean fauxSleeping; -@@ -258,6 +259,12 @@ public abstract class Player extends LivingEntity { +@@ -259,6 +260,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 2289e7bc32e0d2833e73f9d21c37487cd369b25f..5259d5a17b162700737acc5583560784 this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2314,7 +2321,7 @@ public abstract class Player extends LivingEntity { +@@ -2322,7 +2329,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); diff --git a/patches/server/0180-Allow-player-join-full-server-by-permission.patch b/patches/server/0180-Allow-player-join-full-server-by-permission.patch index 0faea0bc0..3b366ffbe 100644 --- a/patches/server/0180-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0180-Allow-player-join-full-server-by-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1f17abac0d9ae19b2d3a5c28a19a6e8a69b6e380..d1afad129159d5ce7cf9530a7dfb6ed5b4fa25f3 100644 +index 89ba5789c6d6e4fe8360a854f0a6123036a5a792..1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -754,7 +754,7 @@ public abstract class PlayerList { +@@ -755,7 +755,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; diff --git a/patches/server/0181-Add-portal-permission-bypass.patch b/patches/server/0181-Add-portal-permission-bypass.patch index 4558e651a..a5beb57f1 100644 --- a/patches/server/0181-Add-portal-permission-bypass.patch +++ b/patches/server/0181-Add-portal-permission-bypass.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add portal permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 5259d5a17b162700737acc5583560784aea10d9f..0fba4859f63c272a1256d3d6cde23609cd165708 100644 +index f8b444583cc48a18a68c860ba933c0c1834578be..992ac6cfba700839259b973fa1eabb5ce6c301af 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -184,6 +184,7 @@ public abstract class Player extends LivingEntity { +@@ -185,6 +185,7 @@ public abstract class Player extends LivingEntity { public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public int sixRowEnderchestSlotCount = -1; // Purpur public int burpDelay = 0; // Purpur @@ -16,7 +16,7 @@ index 5259d5a17b162700737acc5583560784aea10d9f..0fba4859f63c272a1256d3d6cde23609 // CraftBukkit start public boolean fauxSleeping; -@@ -475,7 +476,7 @@ public abstract class Player extends LivingEntity { +@@ -476,7 +477,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { diff --git a/patches/server/0190-Summoner-API.patch b/patches/server/0190-Summoner-API.patch index f8156e216..42edefcb0 100644 --- a/patches/server/0190-Summoner-API.patch +++ b/patches/server/0190-Summoner-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Summoner API diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 1ffb8e1c386fc85796432281ac407a935169b186..c2817324ff57860ea2628dc4ac8e78b76cf67a5a 100644 +index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb8766e33960f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -60,6 +60,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -49,7 +49,7 @@ index 1ffb8e1c386fc85796432281ac407a935169b186..c2817324ff57860ea2628dc4ac8e78b7 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index a1efde792eaa3f80cd0c7c48e38bbd07e1eb5c9d..20f2fd0edf290d448d06e4772b5947fc7865c20b 100644 +index d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9..81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -49,6 +49,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -93,10 +93,10 @@ index a1efde792eaa3f80cd0c7c48e38bbd07e1eb5c9d..20f2fd0edf290d448d06e4772b5947fc } 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 81084ec809a2c4602d92f3736fab4eeaf80e6fa4..2447d89f1219736bda0ee80bb5dcf11cc61f5863 100644 +index 06f4bbbbdf3a3c49035df9edc258e6bda87b53fc..b5ce9576ce7e91204f981c86fe70abb4cd0f267f 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 -@@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); @@ -104,7 +104,7 @@ index 81084ec809a2c4602d92f3736fab4eeaf80e6fa4..2447d89f1219736bda0ee80bb5dcf11c private int shootCooldown = 0; // Purpur // Paper start private boolean canPortal = false; -@@ -122,6 +123,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -123,6 +124,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return this.level().purpurConfig.witherTakeDamageFromWater; } @@ -120,7 +120,7 @@ index 81084ec809a2c4602d92f3736fab4eeaf80e6fa4..2447d89f1219736bda0ee80bb5dcf11c @Override protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); -@@ -256,6 +266,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -257,6 +267,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("Invul", this.getInvulnerableTicks()); @@ -128,7 +128,7 @@ index 81084ec809a2c4602d92f3736fab4eeaf80e6fa4..2447d89f1219736bda0ee80bb5dcf11c } @Override -@@ -265,6 +276,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -266,6 +277,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -137,7 +137,7 @@ index 81084ec809a2c4602d92f3736fab4eeaf80e6fa4..2447d89f1219736bda0ee80bb5dcf11c } diff --git a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index a63733fa01dc58b3c0abb28c1cd88c8b0a456083..75ef899fcd063dd7770aefaca69a6936cccfa620 100644 +index cdd7ab3fe589d089c0c03508721f46f6c136fc8a..6f148028c0fe503e9f6b327596d0954ce9e53269 100644 --- a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java @@ -71,7 +71,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { diff --git a/patches/server/0194-Player-ridable-in-water-option.patch b/patches/server/0194-Player-ridable-in-water-option.patch index f62998695..bfb3f2490 100644 --- a/patches/server/0194-Player-ridable-in-water-option.patch +++ b/patches/server/0194-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 0fba4859f63c272a1256d3d6cde23609cd165708..d0204938816f3e74b0845b9a62f4b6ad44d2dd02 100644 +index 992ac6cfba700839259b973fa1eabb5ce6c301af..e8000f236d3ec0476ec782f08e159eea6c99476a 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2042,6 +2042,11 @@ public abstract class Player extends LivingEntity { +@@ -2050,6 +2050,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } diff --git a/patches/server/0197-Toggle-for-kinetic-damage.patch b/patches/server/0197-Toggle-for-kinetic-damage.patch index 12c2ce5ab..0870cdd65 100644 --- a/patches/server/0197-Toggle-for-kinetic-damage.patch +++ b/patches/server/0197-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1ebc5cfac7e7e47e1e9c10a90d707a4fa799ca43..567fbb4cee7221b9b24b982c97546f353ce124cd 100644 +index 4af345c848040fabdde82b4f0493ba796a7fef1f..9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2946,6 +2946,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2954,6 +2954,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch index 3751ca82e..a320fbf38 100644 --- a/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound 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 b449a7f16bfe591d0659e991c2c1c9ed4ec64dc8..d50b8c407ed30c0bb46159994c1b0e310a15e33a 100644 +index b5ce9576ce7e91204f981c86fe70abb4cd0f267f..461247f3424b854032ccd45855c877aa85dd2e88 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 -@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -426,7 +426,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end @@ -18,7 +18,7 @@ index b449a7f16bfe591d0659e991c2c1c9ed4ec64dc8..d50b8c407ed30c0bb46159994c1b0e31 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 355e953d2050750aef6b243a5b287a4ab75818be..5d4aa302fca63909f6cee2fea4182da17b270201 100644 +index deba979e6987f60308c6b4a286943b18aa2974f4..8d726d509e4c0693ff06ee3c43b5af23ee7f9806 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2682,6 +2682,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch index 8da2f38ea..13d657fb6 100644 --- a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance 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 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d82929842f240ea 100644 +index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777fcf1b29f3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -82,6 +82,7 @@ public class Dolphin extends WaterAnimal { +@@ -83,6 +83,7 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -16,7 +16,7 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 private int spitCooldown; // Purpur public Dolphin(EntityType type, Level world) { -@@ -173,6 +174,7 @@ public class Dolphin extends WaterAnimal { +@@ -174,6 +175,7 @@ public class Dolphin extends WaterAnimal { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); @@ -24,7 +24,7 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } -@@ -237,6 +239,7 @@ public class Dolphin extends WaterAnimal { +@@ -238,6 +240,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -32,7 +32,7 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); -@@ -244,12 +247,13 @@ public class Dolphin extends WaterAnimal { +@@ -245,12 +248,13 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); @@ -48,7 +48,7 @@ index 75585a6b275fafbc5ef112d9de4926b77fcb3781..0453ba99a640855c6e13cb1e1d829298 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 857df6dd4d1d598857d977107dcabbb25307ceab..727a70ef18192e27736ecdd6775711a17f8ce79b 100644 +index 83da28a7edb4b101138034ed6ac71a0ae36a091b..a46cbcd6393cf27a919405db0bfb4903b2f6e6fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch index 0a1f3fd1d..d914b2c63 100644 --- a/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 6857eeb9a93850594cbdb634dfbdf6cb6d82ced5..20b3872b1f8464579ddd4324c9b09170f8ae4778 100644 +index ee509b5eea71c17ff466fb93fe63168710065add..d2b6d094c4b93055a4e6622372c6a0a83bd992a3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1110,6 +1110,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1111,6 +1111,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,7 +22,7 @@ index 6857eeb9a93850594cbdb634dfbdf6cb6d82ced5..20b3872b1f8464579ddd4324c9b09170 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e967ce42a54d97f28e50509167c7c7ac693a285b..83e4255059ca68f1fef3a8915662db28a98109b3 100644 +index 60643dc828b134d1a3956a280b1fc72348b0bd5c..8703e603f4c45fc79b0a44dd22e8497060421254 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -824,6 +824,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch index 36bd3a042..8129534f5 100644 --- a/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -5,11 +5,11 @@ Subject: [PATCH] options to extinguish fire blocks with snowballs diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index b90cedad282e95a067aca176fafa9f72a726f520..440d3d72d8b2dac14f83a83caa5ae9dbf3e979b6 100644 +index 8d1591c3b29e02794f6f66b742ec6a121920ad71..bb61e1132c28274175215a679befdcfa2496b099 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -@@ -57,6 +57,36 @@ public class Snowball extends ThrowableItemProjectile { - entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i); +@@ -63,6 +63,36 @@ public class Snowball extends ThrowableItemProjectile { + entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } + // Purpur start - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire @@ -46,7 +46,7 @@ index b90cedad282e95a067aca176fafa9f72a726f520..440d3d72d8b2dac14f83a83caa5ae9db protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7beb70988183ddcaf6bb2ef846eb9c640af46b0..aa8f7692a2638b176e9db935bf1331ee09fc9993 100644 +index 2b0093b9f30d5fe2c53b4a3fd02ad813d5aad555..2c3ea77d66f889fddde73bd49e6607aa2a0c3ad9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -231,6 +231,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0225-Mobs-always-drop-experience.patch b/patches/server/0225-Mobs-always-drop-experience.patch index ec435109c..4f88524a7 100644 --- a/patches/server/0225-Mobs-always-drop-experience.patch +++ b/patches/server/0225-Mobs-always-drop-experience.patch @@ -21,7 +21,7 @@ index d04e48d6a0a6dc7825a3e3d4cf854e294a75d19c..b18cbe85330e26de6f6cbfcc3d51a741 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 980f2426a5052117f03ebb1ed3f7882b236ad86e..bae3c516b0d13358603576d87a18602a0522a9ff 100644 +index 08190c45b0807079b77c41203502e355ecaf2e14..735445456bbfab8a64df488fed30f0be28d50159 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -285,6 +285,11 @@ public class Bat extends AmbientCreature { @@ -37,7 +37,7 @@ index 980f2426a5052117f03ebb1ed3f7882b236ad86e..bae3c516b0d13358603576d87a18602a public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 a4c6ea94be1c1a610c6141328192a29052b9f157..6d7b8c9f9bfe296263f1752f485dcf8f53af8142 100644 +index 8d80055253008bb1b2ed77e91a1c51c995208dac..9fa937d2d6c3b23e390447e4d4fa24543e2679e5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -493,6 +493,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -53,7 +53,7 @@ index a4c6ea94be1c1a610c6141328192a29052b9f157..6d7b8c9f9bfe296263f1752f485dcf8f 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 9a40cd8d7d4789a8b43f5194bdc67dc6753eed21..6e5b4a50b8d2dddbd7f099426b4866b35bcb798a 100644 +index d9b19f74b377721ed78cd0ea24d25e412cef1398..6af5e1dfcfd739e0bc857f648c189151d5a795c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -138,6 +138,11 @@ public class Cat extends TamableAnimal implements VariantHolder { @@ -101,7 +101,7 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a25fcf6e9d 100644 +index da3dfa10e08750e7ad84ff32a0c0136e055ee3a7..be4ccc42d6f598cbaaf39aafbd49b594ac7b06fe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -87,6 +87,11 @@ public class Cow extends Animal { @@ -117,10 +117,10 @@ index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 0453ba99a640855c6e13cb1e1d82929842f240ea..ed2769d8049bb304c1ee3b8e162046855951a624 100644 +index 9c35059d390c94f6d641c0fe8d37777fcf1b29f3..61bb29de8f1eaa833db95fcc38ab6e18c1a2243c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -169,6 +169,11 @@ public class Dolphin extends WaterAnimal { +@@ -170,6 +170,11 @@ public class Dolphin extends WaterAnimal { return this.level().purpurConfig.dolphinTakeDamageFromWater; } @@ -133,10 +133,10 @@ index 0453ba99a640855c6e13cb1e1d82929842f240ea..ed2769d8049bb304c1ee3b8e16204685 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index c8efa4029136d0cd54a5f73f003e022511cc7c8b..77d40aad6e336cac7ee4e4adef159571181ba44a 100644 +index 1e04205a1707e46a1f540f5c8f6ec1b81bf1b5d7..445c1993a18da93e89792b7953e5eb71777c7874 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -202,6 +202,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxTakeDamageFromWater; } @@ -149,7 +149,7 @@ index c8efa4029136d0cd54a5f73f003e022511cc7c8b..77d40aad6e336cac7ee4e4adef159571 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index c2817324ff57860ea2628dc4ac8e78b76cf67a5a..64aba511e615983988cdb6a0fd45b7d9d4f2f16d 100644 +index 02506902ca7e6f4e4c0fea47499cb8766e33960f..442eb602f5c82550a87e218e2013171b718abd62 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -103,6 +103,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -165,10 +165,10 @@ index c2817324ff57860ea2628dc4ac8e78b76cf67a5a..64aba511e615983988cdb6a0fd45b7d9 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 7bd539ed5fea0d4db8e97722bd9bd37e6563185d..5d75e715a2edac73350cd74e2a5184e7fccbad53 100644 +index 5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3..48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -95,6 +95,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 26062173d137e26abdc452f7b2e0be0ee6dddfa3..fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2 100644 +index 5b3126168e9406f6cbd0607b6b7cc2de4ab68b65..f7730ec3a6c8818baf2a7a738e5a49a56d17c0e8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -119,6 +119,11 @@ public class Goat extends Animal { @@ -469,7 +469,7 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1 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 8d57bf9bbd1f61e6f1509c8b5cf01756ef145571..b414572411e5b2b78fd66e860273656d53df9d9d 100644 +index 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 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 @@ -150,6 +150,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 728f4f2d7c37e253b0dab752f627a7b6c4e8339c..f6dd5fd56926215830ccebbd46098d4bc08e17e4 100644 +index 9e373fa5eba63ed061e666510e01a6d8cdd6997b..c531d830f4d6b2d2213e160d7e1a5b50b80dbea5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,11 @@ public class Zombie extends Monster { @@ -1045,7 +1045,7 @@ index 728f4f2d7c37e253b0dab752f627a7b6c4e8339c..f6dd5fd56926215830ccebbd46098d4b protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index faf03e2c69b6b4ee7d7425322b5b19974e37cb85..4d744e00bbaf25d1bad3782a6415e9bf5958e536 100644 +index f902814a23ef8a7d3893fc0349d1a0b3c203a123..712f77d4ddad04c7cd89d51c6d0c79c2f3ab9347 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1061,7 +1061,7 @@ index faf03e2c69b6b4ee7d7425322b5b19974e37cb85..4d744e00bbaf25d1bad3782a6415e9bf protected void defineSynchedData() { super.defineSynchedData(); 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 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dcbaef4fcf 100644 +index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a8046297f73 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -106,6 +106,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1077,7 +1077,7 @@ index 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dc public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9f3dd4d14 100644 +index 7a167887c40eccea4c216eb906a4a69006f72114..510ee1aee1dd106b5129c375ebb59c7950b8b989 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1093,7 +1093,7 @@ index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index e506dcf390ecb5cce8ae6993df7ec91b3ebc125e..9ca1618ab945ad834c5fc221ada49058f806e79c 100644 +index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72bc595d30b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1125,10 +1125,10 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 20b3872b1f8464579ddd4324c9b09170f8ae4778..9c86dc4b9cd558f0e8f97b63d6cab746bd30d10c 100644 +index d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa0783d03d5d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -196,6 +196,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } @@ -1141,10 +1141,10 @@ index 20b3872b1f8464579ddd4324c9b09170f8ae4778..9c86dc4b9cd558f0e8f97b63d6cab746 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f81768c80fd3d 100644 +index 657fdbabf18da7ab321e8e95a31d53362c605380..21a7cc86245d2440b8fc757d3664a29de293f7b0 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -102,6 +102,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -103,6 +103,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.level().purpurConfig.wanderingTraderTakeDamageFromWater; } @@ -1157,7 +1157,7 @@ index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f8176 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed4c29795aae72d16e26d126888944204cae0291..108554529587f6e7ba56d1eabff8f061a74cc1b0 100644 +index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387f52fff7f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1109,12 +1109,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0230-Mob-head-visibility-percent.patch b/patches/server/0230-Mob-head-visibility-percent.patch index ed990d8c9..20b3c6ed3 100644 --- a/patches/server/0230-Mob-head-visibility-percent.patch +++ b/patches/server/0230-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 567fbb4cee7221b9b24b982c97546f353ce124cd..39784ca82aa79097067df62d859eb13ca6fb27b1 100644 +index 9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45..99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1041,9 +1041,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1049,9 +1049,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); diff --git a/patches/server/0231-Configurable-valid-characters-for-usernames.patch b/patches/server/0231-Configurable-valid-characters-for-usernames.patch index f07392e33..7c293be87 100644 --- a/patches/server/0231-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0231-Configurable-valid-characters-for-usernames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index d0204938816f3e74b0845b9a62f4b6ad44d2dd02..93689cb54c6c948577caff6ec3bd7cbec8094bea 100644 +index e8000f236d3ec0476ec782f08e159eea6c99476a..4297622fecf2cde16cdcb206ecc3e912b06c0a66 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2421,6 +2421,7 @@ public abstract class Player extends LivingEntity { +@@ -2429,6 +2429,7 @@ public abstract class Player extends LivingEntity { } public static boolean isValidUsername(String name) { diff --git a/patches/server/0232-Shears-can-have-looting-enchantment.patch b/patches/server/0232-Shears-can-have-looting-enchantment.patch index e8f425504..7cce01f0a 100644 --- a/patches/server/0232-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0232-Shears-can-have-looting-enchantment.patch @@ -31,10 +31,10 @@ index 2ee48ac3b665db2b02bcb1a30ec972d43a3725b0..59e8f5431ce5026209e1428b5fa5b548 } // Paper end - custom shear drops diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 2df9cfc7f14da1073a34960830481f49696b2e85..3f00d40125b63a76ed549755d4c9d9a2ff2d4adf 100644 +index 48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee..21632120b52e4d594153ebe057a14afa74c3f4eb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -160,7 +160,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { return holder.is(PoiTypes.MEETING); }); @@ -17,7 +17,7 @@ index af3af49f2965dbc3da7749bd9c6ae5e2d6b94cbe..fed066980b17d7c7fa773a00b314535c public long nextGolemPanic = -1; // Pufferfish -@@ -200,6 +202,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -201,6 +203,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -66,7 +66,7 @@ index af3af49f2965dbc3da7749bd9c6ae5e2d6b94cbe..fed066980b17d7c7fa773a00b314535c @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -297,13 +341,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -298,13 +342,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -105,7 +105,7 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e320196cc5f7302377916d5402579632374de09c..26351f5ba9fd4f2e231481cfdd52341e0f4d96a4 100644 +index c312382eeb38b9d6b2420b482c1467d6f27beb81..6fa783b3f064b0e62c67f5a5709fbe9c0d3b51a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2795,6 +2795,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch index ba70ad4c6..ba43e361f 100644 --- a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 39784ca82aa79097067df62d859eb13ca6fb27b1..1b58cc6ee449cfb655b7179be9d3bf8d48a86c4e 100644 +index 99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8..e5691cf9ad9e795426b27391ebfb27dba97756fb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1547,13 +1547,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1555,13 +1555,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,7 +25,7 @@ index 39784ca82aa79097067df62d859eb13ca6fb27b1..1b58cc6ee449cfb655b7179be9d3bf8d if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 332c553db22aaeb0cda5e628c5e464e130c7abb0..519b875c4b0f05cab3b0f5c80f07734d8eb98abe 100644 +index 9730a5469f81687cfde0a19a58d1c2147588d1d2..e3f724a19ab2f9821d84f9b03acf7c925c88f455 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -490,7 +490,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch index 06a3eb3ea..242b2d1df 100644 --- a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 fed066980b17d7c7fa773a00b314535c92fc53fd..857d1d80afd35d30a2947b0a6f953e5af1516048 100644 +index a188a36d919037fa3177ad7f6930570f5e130fc9..ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1101,6 +1101,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1102,6 +1102,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,7 +18,7 @@ index fed066980b17d7c7fa773a00b314535c92fc53fd..857d1d80afd35d30a2947b0a6f953e5a AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1beb9285414e3c178c95ef9ea404fcf34f9cdcac..a0b5c0819541a2924bf29ded4d1842b0e19b4e7b 100644 +index 2c577f12f86ed843f823f5756fd7cddb8bb807a6..adf1064af51c737f97c071fb65019a874a881a18 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2809,6 +2809,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0251-Stonecutter-damage.patch b/patches/server/0251-Stonecutter-damage.patch index 18cbb8337..332ed4f56 100644 --- a/patches/server/0251-Stonecutter-damage.patch +++ b/patches/server/0251-Stonecutter-damage.patch @@ -124,10 +124,10 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 2d47fd8290c9712bbf720452f5ffe134b1941d8c..b30d0d4d453252d1f5774f5155fb1ab61294d6be 100644 +index ac836274a2d725e3fac55394154ae2148024853a..94be4f367f4c6cb2386d0e59d0417f29fca1cec7 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1133,7 +1133,7 @@ public class CraftEventFactory { +@@ -1134,7 +1134,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; @@ -137,7 +137,7 @@ index 2d47fd8290c9712bbf720452f5ffe134b1941d8c..b30d0d4d453252d1f5774f5155fb1ab6 } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644 +index a504f727f5aaa605809938b4e7e7bbe9b84c522a..9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { diff --git a/patches/server/0254-Skeletons-eat-wither-roses.patch b/patches/server/0254-Skeletons-eat-wither-roses.patch index 0734e9f0a..d02980605 100644 --- a/patches/server/0254-Skeletons-eat-wither-roses.patch +++ b/patches/server/0254-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1ef5121b57 100644 +index 2064d6177b3e43810d5962102fe914296e2627ff..30ff77f5f137614b5d0d2df6dc90f47c97e8ab13 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; @@ -79,7 +79,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + } + + this.level().addFreshEntity(skeleton); -+ this.remove(RemovalReason.DISCARDED); ++ this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } @@ -94,7 +94,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b301f0778a2dc0de4a899da06598aed314ef545c..ef6ed71bf4674b7f0275e3cc4487f9f311d4cf48 100644 +index 163b01e476dc3b53d0176b6606f65ce2cbc6bc21..b08fd09753dfab6c31cf59c189f9a55d9f77c5a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2492,6 +2492,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch index 405aa61e4..b2e82479b 100644 --- a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 31f692bbb67af911dd0563c171ed48ee510fe5bf..6a3fa8bec23e2405091eae560c1edef02023a8a9 100644 +index c868a61d73b4563807c70c9539f63cb0645a9984..c0942beb4b362cdba1c0b5fa4531f7d586eab0ac 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -596,7 +596,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -597,7 +597,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -33,7 +33,7 @@ index 2ec8a55650beff50676759617896da2db09dddc0..cba0823bfd10a3e7fd3a7548b9cc11a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6a19e70cbe90546d17c3e3f3371db40af6cf204..e4fd299c419dd5309b74eec5e00de6461613bf40 100644 +index bf2b431301780acff40546af6475b227c40bd8bf..4c157168cfea5ef58d0b070971dfb73223c26897 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Remove-Timings.patch b/patches/server/0264-Remove-Timings.patch index 0ca41254e..1e9aa97d7 100644 --- a/patches/server/0264-Remove-Timings.patch +++ b/patches/server/0264-Remove-Timings.patch @@ -236,7 +236,7 @@ index 38de0e9b83ecac489ca676725274d14fcb60dd5c..6a9bd431e9c2e1fc1e51d394eaccba86 @Override diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 28d05b46952397bb664a1c8dae71816cafee89ce..c6c4d6cf59742b555af5469eaf751ebef753e249 100644 +index 1081e9df44bb24b2c51ebd9364c21c7b2a3a205a..3fbc1e7e401331790d590dcd513a0a267b5ea181 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -540,15 +540,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -447,7 +447,7 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 009d077f979d5ae85b359f3829038015af347429..b4b256721b7a5d25deec717123501a163fcfd8fe 100644 +index cc4be3069e64bb424393d157dd1a5fef7dbcfca6..e48fac31d5c25da0bea3b5247eceda3a45decaaf 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -866,7 +866,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -630,7 +630,7 @@ index 009d077f979d5ae85b359f3829038015af347429..b4b256721b7a5d25deec717123501a16 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7dec861f49e7db0ac7cf4f4942881f237ebcd61f..19b4a69a3062870b831c37728cab8376d3340d54 100644 +index 9107cc4860f81460f3424aeac4ca026b891ab47f..c48e18e4aa72eae5d1a87a86b8a9c982838b5d47 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2456,7 +2456,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -661,10 +661,10 @@ index 7dec861f49e7db0ac7cf4f4942881f237ebcd61f..19b4a69a3062870b831c37728cab8376 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 8458adda210e10254d5564a6b84894805b7ddbfe..323391509c2efd49c54d7b36d7aa880c63ae5fd4 100644 +index 1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d..ac1e0c66f167218306504db6037cc1d6509072a0 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1273,7 +1273,7 @@ public abstract class PlayerList { +@@ -1274,7 +1274,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -673,7 +673,7 @@ index 8458adda210e10254d5564a6b84894805b7ddbfe..323391509c2efd49c54d7b36d7aa880c int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1284,7 +1284,7 @@ public abstract class PlayerList { +@@ -1285,7 +1285,7 @@ public abstract class PlayerList { } // Paper end - Incremental chunk and player saving } @@ -732,7 +732,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 85d0a644fa876978d1295d8a2d88ab2869b33904..4999f9f3a4296df3d7f933cc4011e85527da3a17 100644 +index d43d7873574699b3b19ae6c89f02b24f3c6f7dfc..0754ec885c68a6b3c6d91c8e00069c3fe41c0299 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1308,15 +1308,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0265-Remove-Mojang-Profiler.patch b/patches/server/0265-Remove-Mojang-Profiler.patch index 4b5cea4b2..2f7b1b2d0 100644 --- a/patches/server/0265-Remove-Mojang-Profiler.patch +++ b/patches/server/0265-Remove-Mojang-Profiler.patch @@ -448,7 +448,7 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1df } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index c6c4d6cf59742b555af5469eaf751ebef753e249..06554a000da1f6ba7360fa907deeead7341b09ea 100644 +index 3fbc1e7e401331790d590dcd513a0a267b5ea181..bb412ca874b85d777c0e3565fcefcee15b23182b 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -538,20 +538,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -614,7 +614,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..6167ffb1263a1a65b582b7d295d1d77e } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b4b256721b7a5d25deec717123501a163fcfd8fe..75b3de5c1e26815aa04dba3f09f2ef7807767154 100644 +index e48fac31d5c25da0bea3b5247eceda3a45decaaf..fb6b762bac4d36b2e307b5343988884fa339d001 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -824,16 +824,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1095,10 +1095,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde7376e99a822 100644 +index c0942beb4b362cdba1c0b5fa4531f7d586eab0ac..b78d7958b56a4f385efc4666bb35a89a3049d702 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -848,7 +848,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end public void baseTick() { @@ -1107,7 +1107,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -909,7 +909,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -922,7 +922,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.firstTick = false; @@ -1116,7 +1116,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1128,7 +1128,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1141,7 +1141,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -1125,7 +1125,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1137,7 +1137,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1150,7 +1150,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1134,7 +1134,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 return; } // Paper end -@@ -1158,8 +1158,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1171,8 +1171,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1145,7 +1145,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1178,7 +1178,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1191,7 +1191,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1154,7 +1154,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1316,7 +1316,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1329,7 +1329,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1163,7 +1163,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } } // Paper start - detailed watchdog information -@@ -3189,7 +3189,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3205,7 +3205,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1172,7 +1172,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 this.portalTime = i; // Paper start - Add EntityPortalReadyEvent io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3207,7 +3207,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3223,7 +3223,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper - Add EntityPortalReadyEvent // CraftBukkit end @@ -1181,7 +1181,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } this.isInsidePortal = false; -@@ -3681,14 +3681,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3697,14 +3697,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end - Fix item duplication and teleport issues if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1198,7 +1198,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3727,7 +3727,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3743,7 +3743,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1207,7 +1207,7 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 // Paper start - Fix item duplication and teleport issues if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3754,10 +3754,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3770,10 +3770,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); @@ -1221,10 +1221,10 @@ index 03f6b992aae18679845e04c6c0f70bacac11d996..2d997b91636aba8c71ae543253cde737 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808ef676cc2 100644 +index e5691cf9ad9e795426b27391ebfb27dba97756fb..cd5e884603285d4a2c73f3dc300a5afda42d98c8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -409,7 +409,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1233,7 +1233,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -512,7 +512,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1242,7 +1242,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 } public boolean canSpawnSoulSpeedParticle() { -@@ -3179,10 +3179,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3187,10 +3187,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1256,7 +1256,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3194,7 +3194,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3202,7 +3202,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1265,7 +1265,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3489,19 +3489,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3497,19 +3497,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1290,7 +1290,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3528,8 +3528,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3536,8 +3536,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1301,7 +1301,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3556,8 +3556,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3564,8 +3564,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1312,7 +1312,7 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3574,15 +3574,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3582,15 +3582,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1332,10 +1332,10 @@ index 2e935f373980f6c424fc23ddc80ef04186834532..3079daa307cf8d37a2b10213d377d808 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8588f230724e7fec2093b0b5c8c80b3d1944ce47..94c43de94a7ec7982046cf1e110b8a2230a72b19 100644 +index 380834677c93a23879a9e53173fa835ebd22f584..1d1688fafc438a5957096118790d44fbd55476bb 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -367,13 +367,13 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -368,13 +368,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void baseTick() { super.baseTick(); @@ -1351,7 +1351,7 @@ index 8588f230724e7fec2093b0b5c8c80b3d1944ce47..94c43de94a7ec7982046cf1e110b8a22 incrementTicksSinceLastInteraction(); // Purpur } -@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void aiStep() { super.aiStep(); @@ -1360,7 +1360,7 @@ index 8588f230724e7fec2093b0b5c8c80b3d1944ce47..94c43de94a7ec7982046cf1e110b8a22 if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -724,7 +724,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -725,7 +725,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } } @@ -1369,7 +1369,7 @@ index 8588f230724e7fec2093b0b5c8c80b3d1944ce47..94c43de94a7ec7982046cf1e110b8a22 } protected Vec3i getPickupReach() { -@@ -936,46 +936,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -937,46 +937,46 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end - Allow nerfed mobs to jump and float @@ -1612,10 +1612,10 @@ index 3be70e054c658d34c4aa598ff70c63fa2cff7982..d6340d0a1308bafd3ba176562bf08dca } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 3103df74b7ae5a5ed841bf97794284cd43ad59de..14135dac80dec4224715e21cef6556d22e569026 100644 +index c19513b3b35bbb05c3159606caacee0559366610..2a9c2a69a0589e4e7b7c79d3716376b360a2eba1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -117,12 +117,12 @@ public class Tadpole extends AbstractFish { +@@ -120,12 +120,12 @@ public class Tadpole extends AbstractFish { private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { @@ -1777,10 +1777,10 @@ index 384e7b29215cadfa40af07a183a9c9c6a5b4a80a..bf7ef72a7d92db8f11789a6958327064 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 857d1d80afd35d30a2947b0a6f953e5af1516048..18f92478f07de7c941ff8bbe0ec2ef2fe3617fd7 100644 +index ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c..50202286a0d83f7fe5331eb669d999718a9082cf 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -343,7 +343,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -344,7 +344,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end @@ -1789,7 +1789,7 @@ index 857d1d80afd35d30a2947b0a6f953e5af1516048..18f92478f07de7c941ff8bbe0ec2ef2f // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -355,7 +355,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -356,7 +356,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getBrain().tick((ServerLevel) this.level(), this); // Paper } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur end @@ -1821,7 +1821,7 @@ index b678da2cbb93cea7971bc3c4d324cfca18b0bc97..b0884758d00efb1e3b4b47a539de2a81 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 4999f9f3a4296df3d7f933cc4011e85527da3a17..bc797f1872f86b59a8aae3e70823249c9b8d8922 100644 +index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d0bfd5612 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1305,9 +1305,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 2fd337bec..249484962 100644 --- a/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) 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 2d1bff45830b489caba33552cafa2ae795d6def6..fd1d6c4c3f78b610282318e98ba3742f8bf6e20e 100644 +index 5d60f038220ef4e7b66834c172cc47c7abfe7da7..a9289c4179a78862361be87aaa83f49d6bf60714 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -74,6 +74,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -75,6 +75,7 @@ public abstract class AbstractArrow extends Projectile { @Nullable private List piercedAndKilledEntities; public ItemStack pickupItemStack; @@ -16,7 +16,7 @@ index 2d1bff45830b489caba33552cafa2ae795d6def6..fd1d6c4c3f78b610282318e98ba3742f // Spigot Start @Override -@@ -641,6 +642,12 @@ public abstract class AbstractArrow extends Projectile { +@@ -642,6 +643,12 @@ public abstract class AbstractArrow extends Projectile { this.knockback = punch; } diff --git a/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch index 68ee44ba7..f02c29b20 100644 --- a/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5c667328f76688d6b557452319117734aaa861a6..cc490788b18209d27b339a8557084049002cff09 100644 +index cd5e884603285d4a2c73f3dc300a5afda42d98c8..bfa69b2c37f07132f8b31c12d26f4ceb074901a5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1125,6 +1125,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1133,6 +1133,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -17,10 +17,10 @@ index 5c667328f76688d6b557452319117734aaa861a6..cc490788b18209d27b339a8557084049 if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index b950a0d5010fd7302995772d30e69016284f6cd6..3f78ab74cd7706ad16f6d5a989803691c9842f9f 100644 +index 21a7cc86245d2440b8fc757d3664a29de293f7b0..b133c186d2d1412aa623ba3db68091bc69c282a5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -114,7 +114,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -115,7 +115,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.canDrinkPotion && this.level().isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API })); this.goalSelector.addGoal(0, new UseItemGoal<>(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { diff --git a/patches/server/0284-Fire-Immunity-API.patch b/patches/server/0284-Fire-Immunity-API.patch index 188c10833..420d96164 100644 --- a/patches/server/0284-Fire-Immunity-API.patch +++ b/patches/server/0284-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2d997b91636aba8c71ae543253cde7376e99a822..b4a35b5a19167dee083e6b2421e815f893366fc9 100644 +index b78d7958b56a4f385efc4666bb35a89a3049d702..693a418c10583131135a1d9f8be9c54f23a16430 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -426,6 +426,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -427,6 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public boolean activatedPriorityReset = false; // Pufferfish - DAB public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // Pufferfish - DAB (golf score) public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // Pufferfish - reduce entity allocations @@ -16,7 +16,7 @@ index 2d997b91636aba8c71ae543253cde7376e99a822..b4a35b5a19167dee083e6b2421e815f8 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1814,7 +1815,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1827,7 +1828,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 2d997b91636aba8c71ae543253cde7376e99a822..b4a35b5a19167dee083e6b2421e815f8 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2508,6 +2509,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2524,6 +2525,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 2d997b91636aba8c71ae543253cde7376e99a822..b4a35b5a19167dee083e6b2421e815f8 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2655,6 +2661,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2671,6 +2677,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,10 +50,10 @@ index 2d997b91636aba8c71ae543253cde7376e99a822..b4a35b5a19167dee083e6b2421e815f8 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9304a2d06400dfa244ddb4d9591de988b334c3cf..aa6872290bcab8d7dc58f5714f5f5d4289759880 100644 +index 897f9f5d25c674f167530810c0b94bca83c3c3cc..50364ab478ae5ec016fc2318483920e2e849b8ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -83,6 +83,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -84,6 +84,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -71,7 +71,7 @@ index 9304a2d06400dfa244ddb4d9591de988b334c3cf..aa6872290bcab8d7dc58f5714f5f5d42 public boolean isInDaylight() { return getHandle().isSunBurnTick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index e99007570a89eebe3c85ad549cf24286514306f8..480adbfdd084a6291ee0108e5350ea418e08ff6f 100644 +index 01e4395f1669d21c30465aa1366bd2f1ae17678f..5c1cda88080850314dac196dbe71ff12e48a8aca 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -173,9 +173,14 @@ public class CraftItem extends CraftEntity implements Item { diff --git a/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 9cea3279a..63d80a982 100644 --- a/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bf33c028ced7c3a4e76e9ccc9d1c12877456219c..a83a6cd64345ff0d14e4dfad01566d8dc86c8416 100644 +index 693a418c10583131135a1d9f8be9c54f23a16430..2092ede561d14ace1c003ced051cd4967bb41beb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -923,6 +923,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -936,6 +936,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -17,7 +17,7 @@ index bf33c028ced7c3a4e76e9ccc9d1c12877456219c..a83a6cd64345ff0d14e4dfad01566d8d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17894a054e67173e138cff2190c77c0dad94ef32..c620601e8c6b9cc6a82011a61ce2fcedda94dac4 100644 +index 1a1628b6a2d4814f5cdef1dc3f27bd74b22265d7..61dfb8c7e8606136981ec61f2b7ef02711d3a395 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0288-End-Crystal-Cramming.patch b/patches/server/0288-End-Crystal-Cramming.patch index f805f9e4d..33c79427c 100644 --- a/patches/server/0288-End-Crystal-Cramming.patch +++ b/patches/server/0288-End-Crystal-Cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index ea7075dd4a9bc466d850cabc69199d56e48c825a..2b850c313c7bb2f83af62709583d0ec35400215a 100644 +index 24ad1bae912fa6ee82ea8b6bdbb0af664dc1006c..34f5006f72ec357c474a19f22ee339e3a1dc786f 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 -@@ -99,6 +99,7 @@ public class EndCrystal extends Entity { +@@ -100,6 +100,7 @@ public class EndCrystal extends Entity { } } // Paper end - Fix invulnerable end crystals diff --git a/patches/server/0295-Add-mending-multiplier.patch b/patches/server/0295-Add-mending-multiplier.patch index 0efcbf1f8..b24297039 100644 --- a/patches/server/0295-Add-mending-multiplier.patch +++ b/patches/server/0295-Add-mending-multiplier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mending multiplier diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 01f375047998cb68b3ec704aef9f050c9f0630dc..e594a6f318d34debdf884d4d98b11d53b4b8734a 100644 +index 373a932b80be18b8a47ef849ce837dbfbba6f9cb..9a3210e34decb4096533c58f36687e31330198c4 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -359,13 +359,15 @@ public class ExperienceOrb extends Entity { +@@ -360,13 +360,15 @@ public class ExperienceOrb extends Entity { } } @@ -27,7 +27,7 @@ index 01f375047998cb68b3ec704aef9f050c9f0630dc..e594a6f318d34debdf884d4d98b11d53 public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 856a7576ecfb8d2ca5bffa594ad9da6f605917ab..4fa20bdc2a9ca0906f4fd32d7b1d2590da6094a3 100644 +index b7faa233782b82cf1482c5306a49496ae4c46a2d..1045c32ad127815f1a0f6c4c12d37dd893e0883f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0297-Stored-Bee-API.patch b/patches/server/0297-Stored-Bee-API.patch index fa37357ce..8fd770b33 100644 --- a/patches/server/0297-Stored-Bee-API.patch +++ b/patches/server/0297-Stored-Bee-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stored Bee API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 1b47b0ff7b42373ca25d13fdfbaf2bfd92337632..f9b4ac5acaf809e1eb9d10d87dd0e17c63d1e3c5 100644 +index dc5bcf8f7662bd1feb4375605f27c320878bf7e0..7810d763841825f68c60b7471026d71d89726bf0 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -130,6 +130,22 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -134,6 +134,22 @@ public class BeehiveBlockEntity extends BlockEntity { return list; } @@ -31,7 +31,7 @@ index 1b47b0ff7b42373ca25d13fdfbaf2bfd92337632..f9b4ac5acaf809e1eb9d10d87dd0e17c public void addOccupant(Entity entity, boolean hasNectar) { this.addOccupantWithPresetTicks(entity, hasNectar, 0); } -@@ -139,6 +155,12 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -143,6 +159,12 @@ public class BeehiveBlockEntity extends BlockEntity { return this.stored.size(); } @@ -44,7 +44,7 @@ index 1b47b0ff7b42373ca25d13fdfbaf2bfd92337632..f9b4ac5acaf809e1eb9d10d87dd0e17c // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -425,9 +447,9 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -429,9 +451,9 @@ public class BeehiveBlockEntity extends BlockEntity { private BeeReleaseStatus() {} } diff --git a/patches/server/0298-Shears-can-defuse-TNT.patch b/patches/server/0298-Shears-can-defuse-TNT.patch index cc5c633ab..0832a2c9c 100644 --- a/patches/server/0298-Shears-can-defuse-TNT.patch +++ b/patches/server/0298-Shears-can-defuse-TNT.patch @@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index cd7b955754b809826048b80723e2e9055b373a4a..b929bef749397797203eb6fb7a7e817d90ec310c 100644 +index e712bd07ea2946167782473a536e0c72fab4bccd..6d934405cd18d63943171448743cafd5c52026e2 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -199,4 +199,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -200,4 +200,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water @@ -42,7 +42,7 @@ index cd7b955754b809826048b80723e2e9055b373a4a..b929bef749397797203eb6fb7a7e817d + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51540ca96e7ce0706afbb0644f5b8e699fb79cfc..d7b7e3adb55224adec5f11a98d77e93ebdbb5c2d 100644 +index 1045c32ad127815f1a0f6c4c12d37dd893e0883f..5021553d6518bb23bcb32a0c6980f0194c379467 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3286,4 +3286,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 6211f52a7..f1b51d6f8 100644 --- a/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddbb5fbbcc5 100644 +index 4f4f557b7f4232ec3b90dda43c6bed30521318ba..dd4313e0507d3adda0ec84c79f1af13ecc2d7ef3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -598,20 +598,33 @@ public class PiglinAi { +@@ -599,20 +599,33 @@ public class PiglinAi { Iterator iterator = iterable.iterator(); Item item; @@ -45,7 +45,7 @@ index 372d084609216d5437b92ee60810a9efbb0b6f31..a5a7ea0ddad31e3633647f823df86ddb piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f0e119e6e630eba8229011d42185de40860f202..c1354f18f7dd11d1f28f37d38ad4db4b671e3af1 100644 +index 10ab00dda8e7c180e629676e342297979f427cbe..98f15753ebe2de471fd6de7d8baf0fe04d6dc449 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { From d80fbedf5d8a8830aa895595114ec1979fc0a3f7 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 26 Feb 2024 13:48:52 -0800 Subject: [PATCH 072/148] port PaperMC/Paper#10285 --- ...heck-if-itemstack-is-stackable-first.patch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch diff --git a/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch b/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch new file mode 100644 index 000000000..619b2a242 --- /dev/null +++ b/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Sat, 24 Feb 2024 19:33:01 -0800 +Subject: [PATCH] PaperPR #10285 check if itemstack is stackable first + + +diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java +index deabb3400ee2406a8ec179a96d8cfd86f8edbbd6..c6a925cbd35eb33b27b90bfa8344ac7515d28b76 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Inventory.java ++++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java +@@ -114,7 +114,7 @@ public class Inventory implements Container, Nameable { + } + + private boolean hasRemainingSpaceForItem(ItemStack existingStack, ItemStack stack) { +- return !existingStack.isEmpty() && ItemStack.isSameItemSameTags(existingStack, stack) && existingStack.isStackable() && existingStack.getCount() < existingStack.getMaxStackSize() && existingStack.getCount() < this.getMaxStackSize(); ++ return !existingStack.isEmpty() && existingStack.isStackable() && existingStack.getCount() < existingStack.getMaxStackSize() && existingStack.getCount() < this.getMaxStackSize() && ItemStack.isSameItemSameTags(existingStack, stack); // Paper - check if itemstack is stackable first + } + + // CraftBukkit start - Watch method above! :D From 642956fe6151a87488d861ccb98e4d46d355d599 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 3 Mar 2024 23:38:36 -0800 Subject: [PATCH 073/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@850b736 Close PRs opened from orgs or bot accounts (#10281) PaperMC/Paper@54a2340 check if itemstack is stackable first (#10285) PaperMC/Paper@9c4bb0d add rich message component support to configuration (#10225) PaperMC/Paper@8870d22 Fire EntityDamageByEntityEvent for unowned wither skulls patch (#10244) PaperMC/Paper@bbc03d8 improve BanList types (#10239) PaperMC/Paper@ce5c8dd Configurable max block/fluid ticks (#10266) PaperMC/Paper@880fef7 Deprecate extra ban methods with raw BanEntry (#9580) PaperMC/Paper@60218cd Don't tick empty worlds (#9025) PaperMC/Paper@b21eb4d add overloads to use suspicious effect entry to mushroom cow and suspicious stew meta (#10245) PaperMC/Paper@89d51d5 Allow enabling sand duping (#10191) PaperMC/Paper@6ad63fb Per world ticks per spawn settings (#6891) --- gradle.properties | 2 +- patches/api/0003-Purpur-config-files.patch | 4 +- patches/api/0005-Purpur-client-support.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- patches/api/0011-Bring-back-server-name.patch | 8 +- patches/api/0014-Lagging-threshold.patch | 8 +- .../api/0032-Extended-OfflinePlayer-API.patch | 4 +- ...the-ability-to-add-combustible-items.patch | 8 +- patches/api/0041-Debug-Marker-API.patch | 12 +- patches/api/0042-Add-death-screen-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 20 +- .../server/0003-Fix-pufferfish-issues.patch | 8 +- patches/server/0004-Purpur-config-files.patch | 8 +- .../server/0013-Bring-back-server-name.patch | 4 +- patches/server/0016-Lagging-threshold.patch | 4 +- ...0059-Add-5-second-tps-average-in-tps.patch | 4 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 6 +- .../0176-Add-toggle-for-sand-duping-fix.patch | 44 --- ...ke-lightning-rod-range-configurable.patch} | 2 +- ...ggle-for-end-portal-safe-teleporting.patch | 62 ---- ...fter-eating-food-fills-hunger-bar-c.patch} | 2 +- ...ayer-join-full-server-by-permission.patch} | 0 ...> 0179-Add-portal-permission-bypass.patch} | 0 ...0-Shulker-spawn-from-bullet-options.patch} | 6 +- ...ating-glow-berries-adds-glow-effect.patch} | 2 +- ...-Option-to-make-drowned-break-doors.patch} | 8 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0184-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0185-Add-uptime-command.patch} | 2 +- ...tch => 0186-Tool-actionable-options.patch} | 2 +- ...7-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0188-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 4 +- ...-shulker-box-items-from-dropping-co.patch} | 4 +- ...tch => 0191-Big-dripleaf-tilt-delay.patch} | 4 +- ...0192-Player-ridable-in-water-option.patch} | 2 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0194-Add-compass-command.patch} | 6 +- ...h => 0195-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 8 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 4 +- ...199-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 4 +- ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0202-Conduit-behavior-configuration.patch} | 4 +- ...patch => 0203-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 4 +- ... 0205-Shulker-change-color-with-dye.patch} | 8 +- ... => 0206-Extended-OfflinePlayer-API.patch} | 2 +- ...he-ability-to-add-combustible-items.patch} | 4 +- ...in-and-thunder-should-stop-on-sleep.patch} | 4 +- ...-blocks-to-grow-into-trees-naturall.patch} | 2 +- ...-right-click-to-use-exp-for-mending.patch} | 4 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 8 +- ...r-beds-to-explode-on-villager-sleep.patch} | 2 +- ...Halloween-options-and-optimizations.patch} | 6 +- ...atch => 0215-Config-for-grindstones.patch} | 2 +- ....patch => 0216-UPnP-Port-Forwarding.patch} | 2 +- ...Campfire-option-for-lit-when-placed.patch} | 2 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 8 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 2 +- ...tch => 0221-Signs-allow-color-codes.patch} | 10 +- ...-and-twisting-vines-configurable-ma.patch} | 0 ...=> 0223-Mobs-always-drop-experience.patch} | 274 +++++++++--------- ....patch => 0224-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0225-Grindstone-API.patch} | 2 +- ...e-to-replant-crops-and-nether-warts.patch} | 4 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0228-Mob-head-visibility-percent.patch} | 18 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ...Stop-bees-from-dying-after-stinging.patch} | 8 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 0 ...onfigurable-farmland-trample-height.patch} | 4 +- ...onfigurable-player-pickup-exp-delay.patch} | 2 +- ...ng.patch => 0235-Allow-void-trading.patch} | 4 +- ...h => 0236-Configurable-phantom-size.patch} | 8 +- ...> 0237-Configurable-food-attributes.patch} | 0 ....patch => 0238-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0240-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 2 +- ...=> 0244-Anvil-repair-damage-options.patch} | 2 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0249-Stonecutter-damage.patch} | 4 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...251-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0252-Skeletons-eat-wither-roses.patch} | 6 +- ...53-Enchantment-Table-Persists-Lapis.patch} | 6 +- ...ofiler.patch => 0254-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 6 +- ...=> 0257-Config-to-not-let-coral-die.patch} | 2 +- ...ch => 0258-Add-local-difficulty-api.patch} | 0 ...259-Add-toggle-for-RNG-manipulation.patch} | 4 +- ... 0260-Send-client-custom-name-of-BE.patch} | 2 +- ...=> 0261-Allow-custom-ChatDecorators.patch} | 2 +- ...imings.patch => 0262-Remove-Timings.patch} | 10 +- ...atch => 0263-Remove-Mojang-Profiler.patch} | 22 +- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0265-Add-Bee-API.patch} | 2 +- ...-API.patch => 0266-Debug-Marker-API.patch} | 4 +- ...g-option-to-ignore-creative-players.patch} | 4 +- ...68-Add-skeleton-bow-accuracy-option.patch} | 8 +- ...atch => 0269-Allay-respect-item-NBT.patch} | 4 +- ....patch => 0270-Add-death-screen-API.patch} | 2 +- ...-Make-pufferfish-config-relocatable.patch} | 6 +- ...2-Implement-ram-and-rambar-commands.patch} | 6 +- ...273-Add-item-packet-serialize-event.patch} | 0 ...n-to-fix-MC-3304-projectile-looting.patch} | 0 ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0277-Language-API.patch} | 2 +- ... 0278-Milk-Keeps-Beneficial-Effects.patch} | 2 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0282-Fire-Immunity-API.patch} | 2 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0284-Added-got-ram-event.patch} | 2 +- ... 0285-Log-skipped-entity-s-position.patch} | 0 ....patch => 0286-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0291-Add-PreExplodeEvents.patch} | 2 +- ...2-Improve-output-of-plugins-command.patch} | 0 ...atch => 0293-Add-mending-multiplier.patch} | 2 +- ....patch => 0294-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0295-Stored-Bee-API.patch} | 0 ...patch => 0296-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0297-Explorer-Map-API.patch} | 4 +- ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0301-place-end-crystal-on-any-block.patch} | 4 +- ...I.patch => 0302-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 2 +- ...4-register-minecraft-debug-commands.patch} | 0 ...heck-if-itemstack-is-stackable-first.patch | 19 -- 150 files changed, 412 insertions(+), 537 deletions(-) delete mode 100644 patches/server/0176-Add-toggle-for-sand-duping-fix.patch rename patches/server/{0178-Make-lightning-rod-range-configurable.patch => 0176-Make-lightning-rod-range-configurable.patch} (96%) delete mode 100644 patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch rename patches/server/{0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (98%) rename patches/server/{0180-Allow-player-join-full-server-by-permission.patch => 0178-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0181-Add-portal-permission-bypass.patch => 0179-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0182-Shulker-spawn-from-bullet-options.patch => 0180-Shulker-spawn-from-bullet-options.patch} (96%) rename patches/server/{0183-Eating-glow-berries-adds-glow-effect.patch => 0181-Eating-glow-berries-adds-glow-effect.patch} (97%) rename patches/server/{0184-Option-to-make-drowned-break-doors.patch => 0182-Option-to-make-drowned-break-doors.patch} (91%) rename patches/server/{0185-Configurable-hunger-starvation-damage.patch => 0183-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0186-Enhance-SysoutCatcher.patch => 0184-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0187-Add-uptime-command.patch => 0185-Add-uptime-command.patch} (98%) rename patches/server/{0188-Tool-actionable-options.patch => 0186-Tool-actionable-options.patch} (99%) rename patches/server/{0189-Store-placer-on-Block-when-placed.patch => 0187-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0190-Summoner-API.patch => 0188-Summoner-API.patch} (100%) rename patches/server/{0191-Customizable-sleeping-actionbar-messages.patch => 0189-Customizable-sleeping-actionbar-messages.patch} (96%) rename patches/server/{0192-option-to-disable-shulker-box-items-from-dropping-co.patch => 0190-option-to-disable-shulker-box-items-from-dropping-co.patch} (92%) rename patches/server/{0193-Big-dripleaf-tilt-delay.patch => 0191-Big-dripleaf-tilt-delay.patch} (93%) rename patches/server/{0194-Player-ridable-in-water-option.patch => 0192-Player-ridable-in-water-option.patch} (96%) rename patches/server/{0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (92%) rename patches/server/{0196-Add-compass-command.patch => 0194-Add-compass-command.patch} (97%) rename patches/server/{0197-Toggle-for-kinetic-damage.patch => 0195-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0198-Add-Option-for-disable-observer-clocks.patch => 0196-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0199-Customizeable-Zombie-Villager-curing-times.patch => 0197-Customizeable-Zombie-Villager-curing-times.patch} (89%) rename patches/server/{0200-Option-for-sponges-to-work-on-lava-and-mud.patch => 0198-Option-for-sponges-to-work-on-lava-and-mud.patch} (94%) rename patches/server/{0201-Toggle-for-Wither-s-spawn-sound.patch => 0199-Toggle-for-Wither-s-spawn-sound.patch} (91%) rename patches/server/{0202-Cactus-breaks-from-solid-neighbors-config.patch => 0200-Cactus-breaks-from-solid-neighbors-config.patch} (90%) rename patches/server/{0203-Config-to-remove-curse-of-binding-with-weakness.patch => 0201-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0204-Conduit-behavior-configuration.patch => 0202-Conduit-behavior-configuration.patch} (97%) rename patches/server/{0205-Cauldron-fill-chances.patch => 0203-Cauldron-fill-chances.patch} (96%) rename patches/server/{0206-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0204-Config-to-allow-mobs-to-pathfind-over-rails.patch} (94%) rename patches/server/{0207-Shulker-change-color-with-dye.patch => 0205-Shulker-change-color-with-dye.patch} (92%) rename patches/server/{0208-Extended-OfflinePlayer-API.patch => 0206-Extended-OfflinePlayer-API.patch} (99%) rename patches/server/{0209-Added-the-ability-to-add-combustible-items.patch => 0207-Added-the-ability-to-add-combustible-items.patch} (95%) rename patches/server/{0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (94%) rename patches/server/{0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (98%) rename patches/server/{0212-Shift-right-click-to-use-exp-for-mending.patch => 0210-Shift-right-click-to-use-exp-for-mending.patch} (96%) rename patches/server/{0213-Dolphins-naturally-aggressive-to-players-chance.patch => 0211-Dolphins-naturally-aggressive-to-players-chance.patch} (95%) rename patches/server/{0214-Cows-naturally-aggressive-to-players-chance.patch => 0212-Cows-naturally-aggressive-to-players-chance.patch} (94%) rename patches/server/{0215-Option-for-beds-to-explode-on-villager-sleep.patch => 0213-Option-for-beds-to-explode-on-villager-sleep.patch} (96%) rename patches/server/{0216-Halloween-options-and-optimizations.patch => 0214-Halloween-options-and-optimizations.patch} (95%) rename patches/server/{0217-Config-for-grindstones.patch => 0215-Config-for-grindstones.patch} (98%) rename patches/server/{0218-UPnP-Port-Forwarding.patch => 0216-UPnP-Port-Forwarding.patch} (97%) rename patches/server/{0219-Campfire-option-for-lit-when-placed.patch => 0217-Campfire-option-for-lit-when-placed.patch} (96%) rename patches/server/{0220-options-to-extinguish-fire-blocks-with-snowballs.patch => 0218-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0221-Add-option-to-disable-zombie-villagers-cure.patch => 0219-Add-option-to-disable-zombie-villagers-cure.patch} (88%) rename patches/server/{0222-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0220-Persistent-BlockEntity-Lore-and-DisplayName.patch} (99%) rename patches/server/{0223-Signs-allow-color-codes.patch => 0221-Signs-allow-color-codes.patch} (93%) rename patches/server/{0224-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0225-Mobs-always-drop-experience.patch => 0223-Mobs-always-drop-experience.patch} (94%) rename patches/server/{0226-Potion-NamespacedKey.patch => 0224-Potion-NamespacedKey.patch} (100%) rename patches/server/{0227-Grindstone-API.patch => 0225-Grindstone-API.patch} (95%) rename patches/server/{0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0229-Turtle-eggs-random-tick-crack-chance.patch => 0227-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0230-Mob-head-visibility-percent.patch => 0228-Mob-head-visibility-percent.patch} (91%) rename patches/server/{0231-Configurable-valid-characters-for-usernames.patch => 0229-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0232-Shears-can-have-looting-enchantment.patch => 0230-Shears-can-have-looting-enchantment.patch} (100%) rename patches/server/{0233-Stop-bees-from-dying-after-stinging.patch => 0231-Stop-bees-from-dying-after-stinging.patch} (86%) rename patches/server/{0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0232-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (100%) rename patches/server/{0235-Configurable-farmland-trample-height.patch => 0233-Configurable-farmland-trample-height.patch} (94%) rename patches/server/{0236-Configurable-player-pickup-exp-delay.patch => 0234-Configurable-player-pickup-exp-delay.patch} (97%) rename patches/server/{0237-Allow-void-trading.patch => 0235-Allow-void-trading.patch} (93%) rename patches/server/{0238-Configurable-phantom-size.patch => 0236-Configurable-phantom-size.patch} (90%) rename patches/server/{0239-Configurable-food-attributes.patch => 0237-Configurable-food-attributes.patch} (100%) rename patches/server/{0240-Max-joins-per-second.patch => 0238-Max-joins-per-second.patch} (100%) rename patches/server/{0241-Configurable-minimum-demand-for-trades.patch => 0239-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0242-Lobotomize-stuck-villagers.patch => 0240-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0243-Option-for-villager-display-trade-item.patch => 0241-Option-for-villager-display-trade-item.patch} (91%) rename patches/server/{0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0245-Config-for-mob-last-hurt-by-player-time.patch => 0243-Config-for-mob-last-hurt-by-player-time.patch} (97%) rename patches/server/{0246-Anvil-repair-damage-options.patch => 0244-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0248-Add-toggle-for-enchant-level-clamping.patch => 0246-Add-toggle-for-enchant-level-clamping.patch} (97%) rename patches/server/{0249-Skip-junit-tests-for-purpur-commands.patch => 0247-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0250-Implement-configurable-search-radius-for-villagers-t.patch => 0248-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0251-Stonecutter-damage.patch => 0249-Stonecutter-damage.patch} (98%) rename patches/server/{0252-Configurable-damage-settings-for-magma-blocks.patch => 0250-Configurable-damage-settings-for-magma-blocks.patch} (93%) rename patches/server/{0253-Add-config-for-snow-on-blue-ice.patch => 0251-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0254-Skeletons-eat-wither-roses.patch => 0252-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0255-Enchantment-Table-Persists-Lapis.patch => 0253-Enchantment-Table-Persists-Lapis.patch} (96%) rename patches/server/{0256-Spark-Profiler.patch => 0254-Spark-Profiler.patch} (100%) rename patches/server/{0257-Option-to-disable-kick-for-out-of-order-chat.patch => 0255-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0258-Config-for-sculk-shrieker-can_summon-state.patch => 0256-Config-for-sculk-shrieker-can_summon-state.patch} (89%) rename patches/server/{0259-Config-to-not-let-coral-die.patch => 0257-Config-to-not-let-coral-die.patch} (96%) rename patches/server/{0260-Add-local-difficulty-api.patch => 0258-Add-local-difficulty-api.patch} (100%) rename patches/server/{0261-Add-toggle-for-RNG-manipulation.patch => 0259-Add-toggle-for-RNG-manipulation.patch} (94%) rename patches/server/{0262-Send-client-custom-name-of-BE.patch => 0260-Send-client-custom-name-of-BE.patch} (93%) rename patches/server/{0263-Allow-custom-ChatDecorators.patch => 0261-Allow-custom-ChatDecorators.patch} (94%) rename patches/server/{0264-Remove-Timings.patch => 0262-Remove-Timings.patch} (99%) rename patches/server/{0265-Remove-Mojang-Profiler.patch => 0263-Remove-Mojang-Profiler.patch} (98%) rename patches/server/{0266-Add-more-logger-output-for-invalid-movement-kicks.patch => 0264-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0267-Add-Bee-API.patch => 0265-Add-Bee-API.patch} (96%) rename patches/server/{0268-Debug-Marker-API.patch => 0266-Debug-Marker-API.patch} (97%) rename patches/server/{0269-mob-spawning-option-to-ignore-creative-players.patch => 0267-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0270-Add-skeleton-bow-accuracy-option.patch => 0268-Add-skeleton-bow-accuracy-option.patch} (91%) rename patches/server/{0271-Allay-respect-item-NBT.patch => 0269-Allay-respect-item-NBT.patch} (95%) rename patches/server/{0272-Add-death-screen-API.patch => 0270-Add-death-screen-API.patch} (92%) rename patches/server/{0273-Make-pufferfish-config-relocatable.patch => 0271-Make-pufferfish-config-relocatable.patch} (90%) rename patches/server/{0274-Implement-ram-and-rambar-commands.patch => 0272-Implement-ram-and-rambar-commands.patch} (98%) rename patches/server/{0275-Add-item-packet-serialize-event.patch => 0273-Add-item-packet-serialize-event.patch} (100%) rename patches/server/{0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (100%) rename patches/server/{0277-Configurable-block-blast-resistance.patch => 0275-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0278-Configurable-block-fall-damage-modifiers.patch => 0276-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0279-Language-API.patch => 0277-Language-API.patch} (93%) rename patches/server/{0280-Milk-Keeps-Beneficial-Effects.patch => 0278-Milk-Keeps-Beneficial-Effects.patch} (97%) rename patches/server/{0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0282-Add-log-suppression-for-LibraryLoader.patch => 0280-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0284-Fire-Immunity-API.patch => 0282-Fire-Immunity-API.patch} (97%) rename patches/server/{0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0286-Added-got-ram-event.patch => 0284-Added-got-ram-event.patch} (91%) rename patches/server/{0287-Log-skipped-entity-s-position.patch => 0285-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0288-End-Crystal-Cramming.patch => 0286-End-Crystal-Cramming.patch} (96%) rename patches/server/{0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (94%) rename patches/server/{0290-Add-attribute-clamping-and-armor-limit-config.patch => 0288-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0291-Config-to-remove-explosion-radius-clamp.patch => 0289-Config-to-remove-explosion-radius-clamp.patch} (91%) rename patches/server/{0292-bonemealable-sugarcane-cactus-and-netherwart.patch => 0290-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0293-Add-PreExplodeEvents.patch => 0291-Add-PreExplodeEvents.patch} (94%) rename patches/server/{0294-Improve-output-of-plugins-command.patch => 0292-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0295-Add-mending-multiplier.patch => 0293-Add-mending-multiplier.patch} (96%) rename patches/server/{0296-Make-GUI-Great-Again.patch => 0294-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0297-Stored-Bee-API.patch => 0295-Stored-Bee-API.patch} (100%) rename patches/server/{0298-Shears-can-defuse-TNT.patch => 0296-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0299-Explorer-Map-API.patch => 0297-Explorer-Map-API.patch} (91%) rename patches/server/{0300-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0298-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (94%) rename patches/server/{0302-Add-option-for-always-showing-item-in-player-death-m.patch => 0300-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0303-place-end-crystal-on-any-block.patch => 0301-place-end-crystal-on-any-block.patch} (92%) rename patches/server/{0304-Add-hover-lines-API.patch => 0302-Add-hover-lines-API.patch} (100%) rename patches/server/{0305-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0303-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) rename patches/server/{0306-register-minecraft-debug-commands.patch => 0304-register-minecraft-debug-commands.patch} (100%) delete mode 100644 patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch diff --git a/gradle.properties b/gradle.properties index 68e007376..77a8370c2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 681bbff110d9a56152ae898c4dfe1c0356b40e69 +paperCommit = 6ad63fba30e7ecd1b11bb8d77e8ed43f0a6e9ce9 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0003-Purpur-config-files.patch index bbdda0e5e..3693a5e77 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0003-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index b4f8281d3797ec825a7671f38077cd65d5a1d76e..86807781e9d80544d822c979493e16cdcedac962 100644 +index 0eb61b090d6f8fa6d99735ff3680dac774c52c1f..771f9f054268aa574b76c976b4734595b529aae9 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2214,6 +2214,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2229,6 +2229,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 9ee4edd05..7cda0661f 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 254a02ddb5dc867c9dd6c2086791f7ab94247fd3..37b1f55923d0a2aae79ebe4e5b06c7944ba5eeff 100644 +index c6cb4f17469a8f2e60dd3e28d41402851ce5fb21..6692bc3bedf0f78a3b8cd937e1943d1113e51584 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3687,4 +3687,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3711,4 +3711,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 595fd0870..769c440e0 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 37b1f55923d0a2aae79ebe4e5b06c7944ba5eeff..9386029164f5cd1e38f0e54a42e2c1c8a8f21cf6 100644 +index 6692bc3bedf0f78a3b8cd937e1943d1113e51584..654516bb7545d74a9e00efc154b5b75707038c96 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3695,5 +3695,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3719,5 +3719,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0011-Bring-back-server-name.patch index 1527df553..81d22a559 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index ca27559cf4aa1c2e44fdca2022e213b1b1c80f4e..07632f62a75c1e43be8386786d21f16f9cad895f 100644 +index db46e3233edf18bd91a6da8612ccc9f0080d5c17..13eeaf8a59c83ecfdbdb8cf62e78fd70b00d170b 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2862,4 +2862,15 @@ public final class Bukkit { +@@ -2878,4 +2878,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index ca27559cf4aa1c2e44fdca2022e213b1b1c80f4e..07632f62a75c1e43be8386786d21f16f + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 86807781e9d80544d822c979493e16cdcedac962..13de03608bf8ec8892754b48a1016bc0e76ea5f7 100644 +index 771f9f054268aa574b76c976b4734595b529aae9..5e44a3cb8b8865e760d2f600af1351259b2867fe 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2509,4 +2509,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2524,4 +2524,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch index 102cdcf39..09efe342c 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 07632f62a75c1e43be8386786d21f16f9cad895f..96f63969955af4baf93aff1bae9fcb8b73a4f62b 100644 +index 13eeaf8a59c83ecfdbdb8cf62e78fd70b00d170b..812d903e8883ab087ec7ae154d76dceb019bac17 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2872,5 +2872,14 @@ public final class Bukkit { +@@ -2888,5 +2888,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index 07632f62a75c1e43be8386786d21f16f9cad895f..96f63969955af4baf93aff1bae9fcb8b // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 13de03608bf8ec8892754b48a1016bc0e76ea5f7..d5e7619f222e69fe29f4ae7a3fd2df1ba6362b86 100644 +index 5e44a3cb8b8865e760d2f600af1351259b2867fe..45287918b72c3053f21b56cd33b6daf692c9888a 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2517,5 +2517,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2532,5 +2532,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0032-Extended-OfflinePlayer-API.patch b/patches/api/0032-Extended-OfflinePlayer-API.patch index 276a05b4d..af97d3dd0 100644 --- a/patches/api/0032-Extended-OfflinePlayer-API.patch +++ b/patches/api/0032-Extended-OfflinePlayer-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index abb5109ed08a3a651c2c27d4d17a3d49eb06da1e..98308b759907e03b168f7e06704a91925ffcd3fd 100644 +index 30298a629b39bd43ce14b414fc697b2dfcbea89c..ce00af9121de7a910aaea4e0685a06d4cf31b4e3 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -545,4 +545,106 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio +@@ -557,4 +557,106 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio */ @Nullable public Location getLocation(); diff --git a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch b/patches/api/0033-Added-the-ability-to-add-combustible-items.patch index 8ef82f390..de687d1fb 100644 --- a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0033-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 96f63969955af4baf93aff1bae9fcb8b73a4f62b..3f06db1c4a5f9418790fe4d3fe6f0f41d37c89ca 100644 +index 812d903e8883ab087ec7ae154d76dceb019bac17..17bb5de3f1216ddfcb66152a0791c63334460051 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2881,5 +2881,24 @@ public final class Bukkit { +@@ -2897,5 +2897,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index 96f63969955af4baf93aff1bae9fcb8b73a4f62b..3f06db1c4a5f9418790fe4d3fe6f0f41 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index d5e7619f222e69fe29f4ae7a3fd2df1ba6362b86..6f77c4a839d228ee2c84fa52961d19eea538d9cf 100644 +index 45287918b72c3053f21b56cd33b6daf692c9888a..109811ccc128006e29751e2242e171519c8557c7 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2524,5 +2524,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2539,5 +2539,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0041-Debug-Marker-API.patch b/patches/api/0041-Debug-Marker-API.patch index f206d8592..8f34da2a9 100644 --- a/patches/api/0041-Debug-Marker-API.patch +++ b/patches/api/0041-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 3f06db1c4a5f9418790fe4d3fe6f0f41d37c89ca..d218cd30fc0733a83e3e0ba3279eb21561b0b08e 100644 +index 17bb5de3f1216ddfcb66152a0791c63334460051..afe47ecf0e7ae673aaf62b226e9cb07d2ed393eb 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2900,5 +2900,89 @@ public final class Bukkit { +@@ -2916,5 +2916,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 3f06db1c4a5f9418790fe4d3fe6f0f41d37c89ca..d218cd30fc0733a83e3e0ba3279eb215 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 6f77c4a839d228ee2c84fa52961d19eea538d9cf..be0e4c789a02d67160287c39cf6bdf8ef2229afc 100644 +index 109811ccc128006e29751e2242e171519c8557c7..90f109af3c83a1bc12cb27497d107de5029d0ce6 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2539,5 +2539,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2554,5 +2554,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -260,10 +260,10 @@ index 9ac1ee847e64427cb9b1b396c23b6689f7c99f9c..565ce4b0c5eb300953aaefa786b9f893 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 9386029164f5cd1e38f0e54a42e2c1c8a8f21cf6..fed6d78e1d30a551db021dbe8c5e6d70eced681a 100644 +index 654516bb7545d74a9e00efc154b5b75707038c96..f2aa9de6b1b6475435f72e9b7939fa7af9583ed3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3715,5 +3715,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3739,5 +3739,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0042-Add-death-screen-API.patch b/patches/api/0042-Add-death-screen-API.patch index a04520854..cb8d877ed 100644 --- a/patches/api/0042-Add-death-screen-API.patch +++ b/patches/api/0042-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index fed6d78e1d30a551db021dbe8c5e6d70eced681a..6dc63bfe85d83a7cff369f06c57ebe0aa04c63a3 100644 +index f2aa9de6b1b6475435f72e9b7939fa7af9583ed3..5d22249f7bc98bc88ee798974f481c37807f7c5e 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3785,5 +3785,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3809,5 +3809,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 1b3c10ccc..975ca56d6 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1471,10 +1471,10 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 850f75172e9efa72cabb8e5bd124b96a0b1a945f..3db1de70c76e1427e257d988d1a7f26e986b5617 100644 +index e028353e0261310afc42ca0454b723d9f1ffc131..2222625a515d9ae6c3e9c92fc4d4a5bf974af5f8 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java -@@ -212,7 +212,7 @@ public final class MCUtil { +@@ -215,7 +215,7 @@ public final class MCUtil { } public static long getCoordinateKey(final Entity entity) { @@ -1738,7 +1738,7 @@ index 529ab44baaf573b97cf7e89560c548642733188f..db55ad9aaabfa1ea998754f3ac352d16 this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6907d1be36fbdf0856c0e11983218d2fd1f9cb46..531c9ef0d6504fc1632b83bd93b9cf76e91377e8 100644 +index bf5e47e8c3706590fdc0731bd9a5858b56d06136..62ad086b5b07303d920fdb3534a556673ef51f71 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -894,6 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1918,7 +1918,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 45439b0cc4ea69e409fd41d4684403c0e0feab12..098c410f0285948d7ac48835c352f9c97742c5c7 100644 +index 51097f1d04d981db2823e8647b546658b8fd27c1..d18296739a833dbe6c3bf45e00d5d5c2e80099ac 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -2517,7 +2517,7 @@ index 24044795d8e0f1fb15a4f2f5401f44897092f2a3..96ca567af2d8fb2ba39f995be80b9353 if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index 309acf7bd07e38043aa81e0e686edba1136bd04c..deabb3400ee2406a8ec179a96d8cfd86f8edbbd6 100644 +index 96c898086f35fd83f9b1ce7e3fe53d31b2fa4c31..c6a925cbd35eb33b27b90bfa8344ac7515d28b76 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java @@ -687,6 +687,8 @@ public class Inventory implements Container, Nameable { @@ -2697,10 +2697,10 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f476ba6c97944bdffae5aacae2e285d17541f46e..506100b02e7e9a3eabfde6b1f93858c4cc048524 100644 +index bc89f9e90af3d69872a58c47a4c2545ba91b6ba5..dbbb726f90077b4116b0c9424aa95c9db52ae100 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -207,6 +207,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -216,6 +216,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); @@ -2709,7 +2709,7 @@ index f476ba6c97944bdffae5aacae2e285d17541f46e..506100b02e7e9a3eabfde6b1f93858c4 protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor 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 -@@ -1308,14 +1310,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1317,14 +1319,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2727,7 +2727,7 @@ index f476ba6c97944bdffae5aacae2e285d17541f46e..506100b02e7e9a3eabfde6b1f93858c4 } } // Paper start - Option to prevent armor stands from doing entity lookups -@@ -1788,6 +1790,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1797,6 +1799,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -3271,7 +3271,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9f7ed337463cc9bb370a5541d9de5cd8f9c1a78a..9f5a6398a7dca841570a895054cee969dc96bca4 100644 +index c490a29bcf7410bc54959ee71375605964379ed5..18bfe2fb7efad66f5fae07a30593d640c597bf77 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -266,7 +266,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 1418270d7..ad314e5c7 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -40,7 +40,7 @@ index f6a3364175476c57a7763a087ff55e1689474800..5e01bfdad663656168604fc878a993dd "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 531c9ef0d6504fc1632b83bd93b9cf76e91377e8..09594f96cf79aa38142a859bef2e3b6b8d00f7db 100644 +index 62ad086b5b07303d920fdb3534a556673ef51f71..15aaa270e51b9194596e7ed5061c85c9fb54e177 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -924,7 +924,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -62,7 +62,7 @@ index 531c9ef0d6504fc1632b83bd93b9cf76e91377e8..09594f96cf79aa38142a859bef2e3b6b private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 098c410f0285948d7ac48835c352f9c97742c5c7..3773b05d0e2875db8817835e623272292855925f 100644 +index d18296739a833dbe6c3bf45e00d5d5c2e80099ac..d25dd9018eff5f3817c1b56f49632cc0a9388b8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -88,10 +88,10 @@ index 837f68825f601971f374be47952b23108bf66ba6..2a8a8030feefae84e394460612405887 return; } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 506100b02e7e9a3eabfde6b1f93858c4cc048524..27447e4acb7db91b7595a7c25b682a4a4ce8c151 100644 +index dbbb726f90077b4116b0c9424aa95c9db52ae100..9f5cde72a5305572202c316e750ad1b5e778fd87 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -207,7 +207,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -216,7 +216,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 230f14de9..efd080164 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -92,7 +92,7 @@ index 435b129c433704c24828d8fb57e14333c9423207..aa47b0af34cff5eaa638d6c24c718d02 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d6a08f06812bc15813559eb8ff66eddf7cf22888..bce8df10ac9dfb7a9bba76fc05357c8b6a0520e4 100644 +index 9f5cde72a5305572202c316e750ad1b5e778fd87..1513300064314a761adf4a08cc72782ec93947d1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -173,6 +173,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -103,7 +103,7 @@ index d6a08f06812bc15813559eb8ff66eddf7cf22888..bce8df10ac9dfb7a9bba76fc05357c8b public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -212,6 +213,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -221,6 +222,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor 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 @@ -112,7 +112,7 @@ index d6a08f06812bc15813559eb8ff66eddf7cf22888..bce8df10ac9dfb7a9bba76fc05357c8b this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 357d7b8ca85ec3ed1fc53b230ae574d9f7c8cddf..460e21d0bcead970eda3e49dadc9e77c0bdf98bf 100644 +index 86c234c123fac96b4f94873d1dcfab30e9835e43..f36a87ba93da564b3b2c8b9f9190f8853557bdcd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1054,6 +1054,7 @@ public final class CraftServer implements Server { @@ -139,7 +139,7 @@ index 357d7b8ca85ec3ed1fc53b230ae574d9f7c8cddf..460e21d0bcead970eda3e49dadc9e77c this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3018,6 +3021,18 @@ public final class CraftServer implements Server { +@@ -3033,6 +3036,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index 53cdae89c..575821089 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index bab2471616404821671264ccefd729cab8d0bf58..ae75edfaa9e4c72f11fbb7ffc66294be public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 460e21d0bcead970eda3e49dadc9e77c0bdf98bf..8a9af4a0d5c59361ffcf0ed572a1f1ee141d1780 100644 +index f36a87ba93da564b3b2c8b9f9190f8853557bdcd..a34f3eaa47c2b193a1b8dfbdf6f0c79bd3ace489 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3264,4 +3264,11 @@ public final class CraftServer implements Server { +@@ -3279,4 +3279,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 2c3b925d1..7a892933e 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -25,10 +25,10 @@ index c90a488e41ef65b57818cd91403e65e5f5e19cd9..feece6ec8fda944e2fcbf7c59327d0a1 } // Paper end - further improve server tick loop diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8a9af4a0d5c59361ffcf0ed572a1f1ee141d1780..152a10866560549d7d8deed328ee9ee2d9ed932c 100644 +index a34f3eaa47c2b193a1b8dfbdf6f0c79bd3ace489..8f21c4aee84070eab2798cfcd4200b6d2e8320a4 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3270,5 +3270,10 @@ public final class CraftServer implements Server { +@@ -3285,5 +3285,10 @@ public final class CraftServer implements Server { public String getServerName() { return this.getProperties().serverName; } diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index e739ba981..7a1d0752f 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -74,10 +74,10 @@ index 38fe7e5014332f45e41a3d5d91c28dd0acfdc3b0..479657ddef21f0279b361117b82549f7 this.values[this.vp++ & 255] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.repaint(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 152a10866560549d7d8deed328ee9ee2d9ed932c..4342ad11ed1ee8f00b56a5ce4710fbd3350b0fdc 100644 +index 8f21c4aee84070eab2798cfcd4200b6d2e8320a4..a6affd4d7ecbe57a79fa18f4473c60662053d663 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3062,6 +3062,7 @@ public final class CraftServer implements Server { +@@ -3077,6 +3077,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { diff --git a/patches/server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0070-Add-allow-water-in-end-world-option.patch index 3f65f2b65..11259bf74 100644 --- a/patches/server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0070-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 6371f326fc86cfc53e39bf8ed13b646f7705fbbc..3dec0c5fc8dece5341634eaf8e94fe19 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 bce8df10ac9dfb7a9bba76fc05357c8b6a0520e4..c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738 100644 +index 1513300064314a761adf4a08cc72782ec93947d1..1e55c024a8dd7f1a5f324937bbd3f13b3ac8f076 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1902,4 +1902,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1911,4 +1911,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end - optimize redstone (Alternate Current) diff --git a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch index 262949f52..fdaef37e8 100644 --- a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch @@ -42,7 +42,7 @@ index 081d1e38b7b1f286e138b0981aaa760e58761215..d94928a78d166dd3d836261b4f99fb4f 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 c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738..85d0a644fa876978d1295d8a2d88ab2869b33904 100644 +index 1e55c024a8dd7f1a5f324937bbd3f13b3ac8f076..d35e2338fb423f2f8306a1c33d808a0456c3af2a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -191,6 +191,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -95,7 +95,7 @@ index c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738..85d0a644fa876978d1295d8a2d88ab28 public CraftWorld getWorld() { return this.world; } -@@ -214,6 +257,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -223,6 +266,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,7 +104,7 @@ index c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738..85d0a644fa876978d1295d8a2d88ab28 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 6654234cae07b569ff97a51284a459335af300a4..52b9e364056b0b405779965daa634a8b0f1f82e0 100644 +index 364933d9f861adb2957b2f636f1608f3cee3ab66..c469fc30efcc71af34b446475af16870049487b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,6 +115,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Add-toggle-for-sand-duping-fix.patch b/patches/server/0176-Add-toggle-for-sand-duping-fix.patch deleted file mode 100644 index 62529b0eb..000000000 --- a/patches/server/0176-Add-toggle-for-sand-duping-fix.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Fri, 4 Jun 2021 09:13:54 -0500 -Subject: [PATCH] Add toggle for sand duping fix - - -diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 0aef6a8d51cb1351daaea16022f5cbb27ceaff0d..65cb5994142351e2b19f6d4ff2963f9ae7752205 100644 ---- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -134,7 +134,7 @@ public class FallingBlockEntity extends Entity { - @Override - public void tick() { - // Paper start - fix sand duping -- if (this.isRemoved()) { -+ if (this.level().purpurConfig.fixSandDuping && this.isRemoved()) { // Purpur - return; - } - // Paper end - fix sand duping -@@ -150,7 +150,7 @@ public class FallingBlockEntity extends Entity { - - this.move(MoverType.SELF, this.getDeltaMovement()); - // Paper start - fix sand duping -- if (this.isRemoved()) { -+ if (this.level().purpurConfig.fixSandDuping && this.isRemoved()) { // Purpur - return; - } - // Paper end - fix sand duping -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 991e8491c5bc254eb2ba0cbdcd06cb410d286fbb..6fb87c1ab0397d4c659dc69f33d0a4743c4d0dcd 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -683,6 +683,11 @@ public class PurpurWorldConfig { - } - } - -+ public boolean fixSandDuping = true; -+ private void sandSettings() { -+ fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); -+ } -+ - public boolean slabHalfBreak = false; - private void slabSettings() { - slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); diff --git a/patches/server/0178-Make-lightning-rod-range-configurable.patch b/patches/server/0176-Make-lightning-rod-range-configurable.patch similarity index 96% rename from patches/server/0178-Make-lightning-rod-range-configurable.patch rename to patches/server/0176-Make-lightning-rod-range-configurable.patch index e76bad449..5376e85ef 100644 --- a/patches/server/0178-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0176-Make-lightning-rod-range-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5af5a22e725bdae1cc15702b37982f585c46286f..8a695b29d9c641dbd35d6faa1c2f97c0c83c99bb 100644 +index b9ed172cee34ef2e140c362b9ac7030c8231b97a..aef2bd930125b3fbd9f564db86a575ddfbd7d894 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1192,7 +1192,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch deleted file mode 100644 index f93f429e6..000000000 --- a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 9 Jun 2021 11:03:40 -0500 -Subject: [PATCH] Add toggle for end portal safe teleporting - - -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d79cbbcf0e6e6e6096e138be2617b727ea991c18..c868a61d73b4563807c70c9539f63cb0645a9984 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3238,7 +3238,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S - } - - this.processPortalCooldown(); -- this.tickEndPortal(); // Paper - make end portalling safe -+ if (this.level().purpurConfig.endPortalSafeTeleporting) this.tickEndPortal(); // Paper - make end portalling safe // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index a5a8bd6813b68ab2e913fc3ae30c9950c242beb3..f277a4a21b15627c45061e51c8f6c0812a176a10 100644 ---- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -@@ -69,6 +69,22 @@ public class EndPortalBlock extends BaseEntityBlock { - // return; // CraftBukkit - always fire event in case plugins wish to change it - } - -+ // Purpur start -+ if (!world.purpurConfig.endPortalSafeTeleporting) { -+ // CraftBukkit start - Entity in portal -+ EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); -+ world.getCraftServer().getPluginManager().callEvent(event); -+ -+ if (entity instanceof ServerPlayer) { -+ ((ServerPlayer) entity).changeDimension(worldserver, PlayerTeleportEvent.TeleportCause.END_PORTAL); -+ return; -+ } -+ // CraftBukkit end -+ entity.changeDimension(worldserver); -+ return; -+ } -+ // Purpur end -+ - // Paper start - move all of this logic into portal tick - entity.portalWorld = ((ServerLevel)world); - entity.portalBlock = pos.immutable(); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6fb87c1ab0397d4c659dc69f33d0a4743c4d0dcd..722563c25d745f1991ce914f6e758633756e435e 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -631,6 +631,11 @@ public class PurpurWorldConfig { - furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); - } - -+ public boolean endPortalSafeTeleporting = true; -+ private void endPortalSettings() { -+ endPortalSafeTeleporting = getBoolean("blocks.end_portal.safe-teleporting", endPortalSafeTeleporting); -+ } -+ - public boolean mobsSpawnOnPackedIce = true; - public boolean mobsSpawnOnBlueIce = true; - private void iceSettings() { diff --git a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 98% rename from patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index d238d9ca5..07aaf4015 100644 --- a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -55,7 +55,7 @@ index c3448707fd8a632b457cc97b35d08a9c6933d5ee..2840c0b16d9b8147703f34bac5a8aa21 public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 722563c25d745f1991ce914f6e758633756e435e..2a1c8d85ef72a3ef3367ba8f7e830e95608b60f9 100644 +index 991e8491c5bc254eb2ba0cbdcd06cb410d286fbb..ee94f8f165428072ae2f27d2f70a15b6aa3b242a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -388,6 +388,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0180-Allow-player-join-full-server-by-permission.patch b/patches/server/0178-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0180-Allow-player-join-full-server-by-permission.patch rename to patches/server/0178-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0181-Add-portal-permission-bypass.patch b/patches/server/0179-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0181-Add-portal-permission-bypass.patch rename to patches/server/0179-Add-portal-permission-bypass.patch diff --git a/patches/server/0182-Shulker-spawn-from-bullet-options.patch b/patches/server/0180-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0182-Shulker-spawn-from-bullet-options.patch rename to patches/server/0180-Shulker-spawn-from-bullet-options.patch index a19c75bc6..0bb22c50a 100644 --- a/patches/server/0182-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0180-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 79a93bb2ce4a86586bfac8635706a4c2d1d1f407..1225ffe648086a279c084ce2f18e5f2126660b7c 100644 +index ee94f8f165428072ae2f27d2f70a15b6aa3b242a..cc612f8328abfa27d784181c5aebbcd9e0b10c05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1917,6 +1917,11 @@ public class PurpurWorldConfig { +@@ -1907,6 +1907,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 79a93bb2ce4a86586bfac8635706a4c2d1d1f407..1225ffe648086a279c084ce2f18e5f21 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1928,6 +1933,11 @@ public class PurpurWorldConfig { +@@ -1918,6 +1923,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0183-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch similarity index 97% rename from patches/server/0183-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0181-Eating-glow-berries-adds-glow-effect.patch index 732b5b88d..01b2cccb3 100644 --- a/patches/server/0183-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index 7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0..e83ea53da012f3dcaa1f53bf6082a17a public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cdd1f0fa067160f879fb617b81f42678270cde6..1275e2a3799d064244f22894a03cc2dd53477f04 100644 +index cc612f8328abfa27d784181c5aebbcd9e0b10c05..b21d288f62f473cd9d1057d3d2a452f16b0291d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -220,6 +220,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0184-Option-to-make-drowned-break-doors.patch b/patches/server/0182-Option-to-make-drowned-break-doors.patch similarity index 91% rename from patches/server/0184-Option-to-make-drowned-break-doors.patch rename to patches/server/0182-Option-to-make-drowned-break-doors.patch index 9a73ed99e..335400a6f 100644 --- a/patches/server/0184-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0182-Option-to-make-drowned-break-doors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index a315e2fc10b9d404a92971dea6a0a5fae16d8133..6e6d7f68cf1c1c224b67a9d674fdcaa67ea00359 100644 +index 8850d8fc54d7025d323bc273a87a609baacea174..13427d23f1e614c0d83e9ccd68944ea4e1993c73 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; @@ -34,10 +34,10 @@ index a315e2fc10b9d404a92971dea6a0a5fae16d8133..6e6d7f68cf1c1c224b67a9d674fdcaa6 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1275e2a3799d064244f22894a03cc2dd53477f04..d9409fa6d82b6f512e8b482f319b139489675828 100644 +index b21d288f62f473cd9d1057d3d2a452f16b0291d0..5a3dad2ba18f56724e22ec2dcb99cf22af61e2aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1063,6 +1063,7 @@ public class PurpurWorldConfig { +@@ -1053,6 +1053,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 1275e2a3799d064244f22894a03cc2dd53477f04..d9409fa6d82b6f512e8b482f319b1394 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1078,6 +1079,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1069,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0185-Configurable-hunger-starvation-damage.patch b/patches/server/0183-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0185-Configurable-hunger-starvation-damage.patch rename to patches/server/0183-Configurable-hunger-starvation-damage.patch index 46a7e9e03..3108d3c43 100644 --- a/patches/server/0185-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0183-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 2840c0b16d9b8147703f34bac5a8aa21f82e6e44..e8079d126e6c0cf0b15c01afb6498922 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cce6cbf83e1d57c609ea5575553e2cef5a526bf9..e308af8e5dbb066b1976b341cc8362aa7b546964 100644 +index 5a3dad2ba18f56724e22ec2dcb99cf22af61e2aa..c294a2a89e23cd5889472ebe586c2ab3de043733 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2576,4 +2576,9 @@ public class PurpurWorldConfig { +@@ -2566,4 +2566,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0186-Enhance-SysoutCatcher.patch b/patches/server/0184-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0186-Enhance-SysoutCatcher.patch rename to patches/server/0184-Enhance-SysoutCatcher.patch diff --git a/patches/server/0187-Add-uptime-command.patch b/patches/server/0185-Add-uptime-command.patch similarity index 98% rename from patches/server/0187-Add-uptime-command.patch rename to patches/server/0185-Add-uptime-command.patch index 5c40ea5dc..73f3d37d3 100644 --- a/patches/server/0187-Add-uptime-command.patch +++ b/patches/server/0185-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 9c335df92b0a6c7705c9def89ba5c320d2c8ed03..c2b8a653b01aa3e0856afa3e96555f5e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6887e871fe3773df55636749c8d3d65a7cacff83..1e3a1792927f42e7597e4cb2067844f45a3f0bfb 100644 +index 69af88f3ed690cbb751d367171c4cf6aa0ee2fca..1381e16fcac730eaecfc621a0c602bbf15d744f3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4342ad11ed1ee8f00b56a5ce4710fbd3350b0fdc..a4f812588b9cc1d6df556373ea0d7991058261ee 100644 +index a6affd4d7ecbe57a79fa18f4473c60662053d663..14e60675d23f9696fd8f64eb026fcd0b82b498f0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1589,6 +1589,19 @@ public final class CraftServer implements Server { diff --git a/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 94% rename from patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 9d30fb24b..e6fb6236b 100644 --- a/patches/server/0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6971ce789c329d733bbc373422000fa0efff7ef6..e675d7e82245e1b7ef94fc55f393002ab572e2ba 100644 +index 9394aa9e300721b335238f143500528e93ce8385..f141031f668898b8cc0ac1970b9026da6be4a466 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1401,6 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -25,7 +25,7 @@ index 6971ce789c329d733bbc373422000fa0efff7ef6..e675d7e82245e1b7ef94fc55f393002a // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15410deb58a80ff8050d8f1b94004eb64e86f262..8644472c44f32c10a46749aab58a3be5444dcc33 100644 +index ba161c85a17aed57bcb7b5f8ec347757f45ef003..6151c7d3bf9de065227c200b62dd03f7dba3f504 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 98% rename from patches/server/0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 04950a31a..acd8f5dcd 100644 --- a/patches/server/0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -45,7 +45,7 @@ index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f75b12f80e02c2b85c55c41096b4ee4759ce63b0..767659256e391854c0cd3035f138d86bbcaf6949 100644 +index 6151c7d3bf9de065227c200b62dd03f7dba3f504..951a4fcdc1f47189ea7f36fc232faaf06310db59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -805,6 +805,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch similarity index 96% rename from patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch index 9badb2061..c23df70a7 100644 --- a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cac4127571c514a6f7697f31eb7d1edeca47d99a..5e17a72dbe105a1a0221d857b6da39a855127aab 100644 +index affe433994ec5c5cd6cecd3989a5daa90db3b203..72ac438ec1a6628c861bdab9626c77666d4ba2b6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -48,7 +48,7 @@ index cac4127571c514a6f7697f31eb7d1edeca47d99a..5e17a72dbe105a1a0221d857b6da39a8 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da270cdc4afe91c65513469b04b4d247066a05ec..83da28a7edb4b101138034ed6ac71a0ae36a091b 100644 +index 951a4fcdc1f47189ea7f36fc232faaf06310db59..da79bad084e062cdbff25a47c3a324c8d072a471 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -411,6 +411,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch index 13d657fb6..869d163f6 100644 --- a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777f public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83da28a7edb4b101138034ed6ac71a0ae36a091b..a46cbcd6393cf27a919405db0bfb4903b2f6e6fd 100644 +index da79bad084e062cdbff25a47c3a324c8d072a471..1e3f63240e76102a46bfa13500629172360bc48d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1332,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 83da28a7edb4b101138034ed6ac71a0ae36a091b..a46cbcd6393cf27a919405db0bfb4903 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1356,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1347,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch similarity index 94% rename from patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch index 51385c2b5..e525cedf5 100644 --- a/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f7173955629c 100644 +index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e055ee3a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; @@ -57,10 +57,10 @@ index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f717 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 727a70ef18192e27736ecdd6775711a17f8ce79b..e967ce42a54d97f28e50509167c7c7ac693a285b 100644 +index 1e3f63240e76102a46bfa13500629172360bc48d..50429a76847b7c655cf88c49f6f3b0dbccda9d8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1291,7 +1291,14 @@ public class PurpurWorldConfig { +@@ -1281,7 +1281,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index 727a70ef18192e27736ecdd6775711a17f8ce79b..e967ce42a54d97f28e50509167c7c7ac cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1304,6 +1311,8 @@ public class PurpurWorldConfig { +@@ -1294,6 +1301,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 96% rename from patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch index d914b2c63..0b234718c 100644 --- a/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,7 +22,7 @@ index ee509b5eea71c17ff466fb93fe63168710065add..d2b6d094c4b93055a4e6622372c6a0a8 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60643dc828b134d1a3956a280b1fc72348b0bd5c..8703e603f4c45fc79b0a44dd22e8497060421254 100644 +index 50429a76847b7c655cf88c49f6f3b0dbccda9d8b..9b19961631c0bd2f922820ce0a33bace926afdf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -824,6 +824,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0216-Halloween-options-and-optimizations.patch b/patches/server/0214-Halloween-options-and-optimizations.patch similarity index 95% rename from patches/server/0216-Halloween-options-and-optimizations.patch rename to patches/server/0214-Halloween-options-and-optimizations.patch index 41072497e..facc345ba 100644 --- a/patches/server/0216-Halloween-options-and-optimizations.patch +++ b/patches/server/0214-Halloween-options-and-optimizations.patch @@ -43,7 +43,7 @@ index 3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f..cb378b343f721c16868a6673aba59856 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } 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 2dad874c0a425cf2d0a385b6061ab79d81b82c86..47b5a928574a57107dfaeaecf49459496a64a036 100644 +index e568d014f577ab705645152446156dc04895b3bf..9e373fa5eba63ed061e666510e01a6d8cdd6997b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -586,11 +586,7 @@ public class Zombie extends Monster { @@ -60,10 +60,10 @@ index 2dad874c0a425cf2d0a385b6061ab79d81b82c86..47b5a928574a57107dfaeaecf4945949 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82522611cbca7ce08b9a12e514fb8286a3280550..9e3181b5f2329d44025f7d811f1865d353cb6a96 100644 +index 9b19961631c0bd2f922820ce0a33bace926afdf7..e956e8d742a525a9485bdd691e81407ae06c08f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1684,6 +1684,13 @@ public class PurpurWorldConfig { +@@ -1674,6 +1674,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0217-Config-for-grindstones.patch b/patches/server/0215-Config-for-grindstones.patch similarity index 98% rename from patches/server/0217-Config-for-grindstones.patch rename to patches/server/0215-Config-for-grindstones.patch index 7c738dfc0..6cb91c2a5 100644 --- a/patches/server/0217-Config-for-grindstones.patch +++ b/patches/server/0215-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 076c2b2938c9b88b7e71dbc2aa9d8c7e90d4fe75..c79e87fde9de55dbfe8c3deaf725e2a73dc2af38 100644 +index 23462de504932bd351b8dfacde514fe361343912..2a2bcd0fc2b7653d9087b88e9a01034b51f017b9 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0218-UPnP-Port-Forwarding.patch b/patches/server/0216-UPnP-Port-Forwarding.patch similarity index 97% rename from patches/server/0218-UPnP-Port-Forwarding.patch rename to patches/server/0216-UPnP-Port-Forwarding.patch index bbb7313e5..3c7e89aad 100644 --- a/patches/server/0218-UPnP-Port-Forwarding.patch +++ b/patches/server/0216-UPnP-Port-Forwarding.patch @@ -32,7 +32,7 @@ index 1381e16fcac730eaecfc621a0c602bbf15d744f3..4a0e56f4fb6903ea5f4974052d9d5544 if (this.server != null) { this.server.disablePlugins(); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index f0745f41ba4c1931e4b61ac75edcff8f8cea5b34..20bf50f07f50409d0d1f394d7c3acde9a00ff98d 100644 +index d66fc3f1b8d960782a7a2e08dd72831025f9c8fd..0d70fe71651c8f9d75a604ed2d5c480b41df1dd6 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -279,6 +279,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0219-Campfire-option-for-lit-when-placed.patch b/patches/server/0217-Campfire-option-for-lit-when-placed.patch similarity index 96% rename from patches/server/0219-Campfire-option-for-lit-when-placed.patch rename to patches/server/0217-Campfire-option-for-lit-when-placed.patch index 75e5113b8..f6f00ae72 100644 --- a/patches/server/0219-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0217-Campfire-option-for-lit-when-placed.patch @@ -18,7 +18,7 @@ index 9c7ee02d3aa3c33b45db4dc5c079495a69d60b15..5eed401d3d722c6553240aba4a8e2337 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a50ceedce4a99e36374062dd894bf7a1f9eee17c..2b0093b9f30d5fe2c53b4a3fd02ad813d5aad555 100644 +index e956e8d742a525a9485bdd691e81407ae06c08f0..a9c1bf5b07daa33325316366338f5a57027f617d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -867,6 +867,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0218-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 98% rename from patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0218-options-to-extinguish-fire-blocks-with-snowballs.patch index 8129534f5..101923d27 100644 --- a/patches/server/0220-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0218-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,7 +46,7 @@ index 8d1591c3b29e02794f6f66b742ec6a121920ad71..bb61e1132c28274175215a679befdcfa protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b0093b9f30d5fe2c53b4a3fd02ad813d5aad555..2c3ea77d66f889fddde73bd49e6607aa2a0c3ad9 100644 +index a9c1bf5b07daa33325316366338f5a57027f617d..00593e16024af69699d1b5ad7c5acb84d756a25c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -231,6 +231,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch similarity index 88% rename from patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch index e5279b764..c8f40aedb 100644 --- a/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0219-Add-option-to-disable-zombie-villagers-cure.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie villagers cure 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 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b19974e37cb85 100644 +index 40465fbe6f78da6176d5fad8a3687cefd93dcf43..f902814a23ef8a7d3893fc0349d1a0b3c203a123 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -215,7 +215,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b1997 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac8dcd839c1f002c02d2cdb324ec2f44794e3001..bcfe67362f5bd58b071dd96c0fc6804a22184fcd 100644 +index 00593e16024af69699d1b5ad7c5acb84d756a25c..1c77929516d70407a281a0899c6722cc4210eb79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2903,6 +2903,7 @@ public class PurpurWorldConfig { +@@ -2893,6 +2893,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index ac8dcd839c1f002c02d2cdb324ec2f44794e3001..bcfe67362f5bd58b071dd96c0fc6804a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2920,6 +2921,7 @@ public class PurpurWorldConfig { +@@ -2910,6 +2911,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0220-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 99% rename from patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0220-Persistent-BlockEntity-Lore-and-DisplayName.patch index 7266c3d26..0587c618b 100644 --- a/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0220-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -195,7 +195,7 @@ index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a39 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bcfe67362f5bd58b071dd96c0fc6804a22184fcd..3ba96a753639a5094c8c820bf28a14c90accddff 100644 +index 1c77929516d70407a281a0899c6722cc4210eb79..b4d5ae4025d315cfe0e19fa1b077d1c5956523ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0223-Signs-allow-color-codes.patch b/patches/server/0221-Signs-allow-color-codes.patch similarity index 93% rename from patches/server/0223-Signs-allow-color-codes.patch rename to patches/server/0221-Signs-allow-color-codes.patch index 31dfa7987..a17cacf74 100644 --- a/patches/server/0223-Signs-allow-color-codes.patch +++ b/patches/server/0221-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index cd449e35bbc689ce6d2595693a4fbe1f226998c8..943e864d7e25f77023337d7c719fc3d9a4b3ac55 100644 +index 8601df7eefe25b2a6f5cc3a2dbda35695b1e0202..c0543808d13453f9d1f56ef83b9ab16db2edd5bf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1589,6 +1589,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index cd449e35bbc689ce6d2595693a4fbe1f226998c8..943e864d7e25f77023337d7c719fc3d9 this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index a3ec2f522be2d02b9e37810799cecc2ba14f58f3..b0f3095a8eacf1c903c6190db440b21ca0d9acb1 100644 +index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbcc4c2415e 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java @@ -200,16 +200,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -84,11 +84,11 @@ index a3ec2f522be2d02b9e37810799cecc2ba14f58f3..b0f3095a8eacf1c903c6190db440b21c public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72c6b244e358aceffd934e1224952b459940e608..d5ce0eda09bfa4b6e708b5468697102cc853cfc7 100644 +index b4d5ae4025d315cfe0e19fa1b077d1c5956523ba..d807da2719c5677c200e5f017e4cf5a1c7fa0ce9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1042,6 +1042,11 @@ public class PurpurWorldConfig { - fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); +@@ -1032,6 +1032,11 @@ public class PurpurWorldConfig { + } } + public boolean signAllowColors = false; diff --git a/patches/server/0224-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0224-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0225-Mobs-always-drop-experience.patch b/patches/server/0223-Mobs-always-drop-experience.patch similarity index 94% rename from patches/server/0225-Mobs-always-drop-experience.patch rename to patches/server/0223-Mobs-always-drop-experience.patch index 4f88524a7..8250934a6 100644 --- a/patches/server/0225-Mobs-always-drop-experience.patch +++ b/patches/server/0223-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 657fdbabf18da7ab321e8e95a31d53362c605380..21a7cc86245d2440b8fc757d3664a29d protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387f52fff7f 100644 +index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9d85dc8c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1109,12 +1109,14 @@ public class PurpurWorldConfig { +@@ -1099,12 +1099,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean batRidable = false; -@@ -1130,6 +1132,7 @@ public class PurpurWorldConfig { +@@ -1120,6 +1122,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1149,6 +1152,7 @@ public class PurpurWorldConfig { +@@ -1139,6 +1142,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean beeRidable = false; -@@ -1160,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1150,6 +1154,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1175,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1170,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean blazeRidable = false; -@@ -1183,6 +1189,7 @@ public class PurpurWorldConfig { +@@ -1173,6 +1179,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1195,6 +1202,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1192,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean camelRidableInWater = false; -@@ -1226,6 +1234,7 @@ public class PurpurWorldConfig { +@@ -1216,6 +1224,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1246,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1236,6 +1245,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean caveSpiderRidable = false; -@@ -1253,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1253,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1264,6 +1275,7 @@ public class PurpurWorldConfig { +@@ -1254,6 +1265,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean chickenRidable = false; -@@ -1273,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1263,6 +1275,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1286,12 +1299,14 @@ public class PurpurWorldConfig { +@@ -1276,12 +1289,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1302,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1307,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean cowRidable = false; -@@ -1313,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1319,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1333,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1323,6 +1340,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean creeperRidable = false; -@@ -1345,6 +1363,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1353,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1361,6 +1380,7 @@ public class PurpurWorldConfig { +@@ -1351,6 +1370,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean dolphinRidable = false; -@@ -1372,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1382,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1387,6 +1408,7 @@ public class PurpurWorldConfig { +@@ -1377,6 +1398,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean donkeyRidableInWater = false; -@@ -1398,6 +1420,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1410,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1415,6 +1438,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1428,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean drownedRidable = false; -@@ -1427,6 +1451,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1441,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1443,12 +1468,14 @@ public class PurpurWorldConfig { +@@ -1433,12 +1458,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1459,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1476,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean enderDragonRidable = false; -@@ -1504,6 +1532,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1522,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1527,6 +1556,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1546,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean endermiteRidable = false; -@@ -1534,6 +1564,7 @@ public class PurpurWorldConfig { +@@ -1524,6 +1554,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1545,6 +1576,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1566,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean evokerRidable = false; -@@ -1553,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1543,6 +1575,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1565,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1555,6 +1588,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean foxRidable = false; -@@ -1575,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1565,6 +1599,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1589,6 +1624,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1614,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean frogRidable = false; -@@ -1610,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1600,6 +1636,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1622,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1649,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean giantRidable = false; -@@ -1635,6 +1673,7 @@ public class PurpurWorldConfig { +@@ -1625,6 +1663,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1656,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1685,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean glowSquidRidable = false; -@@ -1663,12 +1703,14 @@ public class PurpurWorldConfig { +@@ -1653,12 +1693,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean goatRidable = false; -@@ -1677,6 +1719,7 @@ public class PurpurWorldConfig { +@@ -1667,6 +1709,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1684,12 +1727,14 @@ public class PurpurWorldConfig { +@@ -1674,12 +1717,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1700,6 +1745,7 @@ public class PurpurWorldConfig { +@@ -1690,6 +1735,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean forceHalloweenSeason = false; -@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { +@@ -1705,6 +1751,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1727,6 +1774,7 @@ public class PurpurWorldConfig { +@@ -1717,6 +1764,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean horseRidableInWater = false; -@@ -1738,6 +1786,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1776,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1755,6 +1804,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1794,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean huskRidable = false; -@@ -1766,6 +1816,7 @@ public class PurpurWorldConfig { +@@ -1756,6 +1806,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1781,6 +1832,7 @@ public class PurpurWorldConfig { +@@ -1771,6 +1822,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean illusionerRidable = false; -@@ -1790,6 +1842,7 @@ public class PurpurWorldConfig { +@@ -1780,6 +1832,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1807,6 +1860,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1850,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean ironGolemRidable = false; -@@ -1817,6 +1871,7 @@ public class PurpurWorldConfig { +@@ -1807,6 +1861,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1831,6 +1886,7 @@ public class PurpurWorldConfig { +@@ -1821,6 +1876,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean llamaRidable = false; -@@ -1845,6 +1901,7 @@ public class PurpurWorldConfig { +@@ -1835,6 +1891,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1865,6 +1922,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1912,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean magmaCubeRidable = false; -@@ -1875,6 +1933,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1923,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1889,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1879,6 +1938,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean mooshroomRidable = false; -@@ -1897,6 +1957,7 @@ public class PurpurWorldConfig { +@@ -1887,6 +1947,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1909,6 +1970,7 @@ public class PurpurWorldConfig { +@@ -1899,6 +1960,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean muleRidableInWater = false; -@@ -1920,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -1910,6 +1972,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1937,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1927,6 +1990,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean ocelotRidable = false; -@@ -1945,6 +2009,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +1999,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1957,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1947,6 +2012,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean pandaRidable = false; -@@ -1965,6 +2031,7 @@ public class PurpurWorldConfig { +@@ -1955,6 +2021,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1977,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +2034,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean parrotRidable = false; -@@ -1986,6 +2054,7 @@ public class PurpurWorldConfig { +@@ -1976,6 +2044,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1999,6 +2068,7 @@ public class PurpurWorldConfig { +@@ -1989,6 +2058,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean phantomRidable = false; -@@ -2026,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2086,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2061,6 +2132,7 @@ public class PurpurWorldConfig { +@@ -2051,6 +2122,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean pigRidable = false; -@@ -2070,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2060,6 +2132,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2083,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2073,6 +2146,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean piglinRidable = false; -@@ -2092,6 +2166,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2156,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2105,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2170,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean piglinBruteRidable = false; -@@ -2112,6 +2188,7 @@ public class PurpurWorldConfig { +@@ -2102,6 +2178,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2123,6 +2200,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2190,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean pillagerRidable = false; -@@ -2131,6 +2209,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2199,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2143,6 +2222,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2212,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean polarBearRidable = false; -@@ -2153,6 +2233,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2223,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2168,12 +2249,14 @@ public class PurpurWorldConfig { +@@ -2158,12 +2239,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2184,6 +2267,7 @@ public class PurpurWorldConfig { +@@ -2174,6 +2257,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean rabbitRidable = false; -@@ -2195,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2185,6 +2269,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2210,6 +2295,7 @@ public class PurpurWorldConfig { +@@ -2200,6 +2285,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean ravagerRidable = false; -@@ -2219,6 +2305,7 @@ public class PurpurWorldConfig { +@@ -2209,6 +2295,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2248,12 +2335,14 @@ public class PurpurWorldConfig { +@@ -2238,12 +2325,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2264,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2254,6 +2343,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean sheepRidable = false; -@@ -2273,6 +2363,7 @@ public class PurpurWorldConfig { +@@ -2263,6 +2353,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2286,6 +2377,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2367,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean shulkerRidable = false; -@@ -2299,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2289,6 +2381,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2316,6 +2409,7 @@ public class PurpurWorldConfig { +@@ -2306,6 +2399,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean silverfishRidable = false; -@@ -2324,6 +2418,7 @@ public class PurpurWorldConfig { +@@ -2314,6 +2408,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2336,6 +2431,7 @@ public class PurpurWorldConfig { +@@ -2326,6 +2421,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean skeletonRidable = false; -@@ -2343,6 +2439,7 @@ public class PurpurWorldConfig { +@@ -2333,6 +2429,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2354,6 +2451,7 @@ public class PurpurWorldConfig { +@@ -2344,6 +2441,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean skeletonHorseRidable = false; -@@ -2366,6 +2464,7 @@ public class PurpurWorldConfig { +@@ -2356,6 +2454,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2383,6 +2482,7 @@ public class PurpurWorldConfig { +@@ -2373,6 +2472,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean slimeRidable = false; -@@ -2393,6 +2493,7 @@ public class PurpurWorldConfig { +@@ -2383,6 +2483,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2407,6 +2508,7 @@ public class PurpurWorldConfig { +@@ -2397,6 +2498,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean snowGolemRidable = false; -@@ -2421,6 +2523,7 @@ public class PurpurWorldConfig { +@@ -2411,6 +2513,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2439,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2429,6 +2532,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean snifferRidable = false; -@@ -2461,6 +2565,7 @@ public class PurpurWorldConfig { +@@ -2451,6 +2555,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2474,6 +2579,7 @@ public class PurpurWorldConfig { +@@ -2464,6 +2569,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean spiderRidable = false; -@@ -2481,6 +2587,7 @@ public class PurpurWorldConfig { +@@ -2471,6 +2577,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2492,6 +2599,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2589,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean strayRidable = false; -@@ -2499,6 +2607,7 @@ public class PurpurWorldConfig { +@@ -2489,6 +2597,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2510,6 +2619,7 @@ public class PurpurWorldConfig { +@@ -2500,6 +2609,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean striderRidable = false; -@@ -2519,6 +2629,7 @@ public class PurpurWorldConfig { +@@ -2509,6 +2619,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2532,6 +2643,7 @@ public class PurpurWorldConfig { +@@ -2522,6 +2633,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean tadpoleRidable = false; -@@ -2554,6 +2666,7 @@ public class PurpurWorldConfig { +@@ -2544,6 +2656,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2573,12 +2686,14 @@ public class PurpurWorldConfig { +@@ -2563,12 +2676,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2589,6 +2704,7 @@ public class PurpurWorldConfig { +@@ -2579,6 +2694,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean turtleRidable = false; -@@ -2597,6 +2713,7 @@ public class PurpurWorldConfig { +@@ -2587,6 +2703,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2609,6 +2726,7 @@ public class PurpurWorldConfig { +@@ -2599,6 +2716,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean vexRidable = false; -@@ -2617,6 +2735,7 @@ public class PurpurWorldConfig { +@@ -2607,6 +2725,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2629,6 +2748,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2738,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean villagerRidable = false; -@@ -2644,6 +2764,7 @@ public class PurpurWorldConfig { +@@ -2634,6 +2754,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2663,6 +2784,7 @@ public class PurpurWorldConfig { +@@ -2653,6 +2774,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean vindicatorRidable = false; -@@ -2671,6 +2793,7 @@ public class PurpurWorldConfig { +@@ -2661,6 +2783,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2683,6 +2806,7 @@ public class PurpurWorldConfig { +@@ -2673,6 +2796,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean wanderingTraderRidable = false; -@@ -2693,6 +2817,7 @@ public class PurpurWorldConfig { +@@ -2683,6 +2807,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2707,6 +2832,7 @@ public class PurpurWorldConfig { +@@ -2697,6 +2822,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean wardenRidable = false; -@@ -2723,6 +2849,7 @@ public class PurpurWorldConfig { +@@ -2713,6 +2839,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2734,6 +2861,7 @@ public class PurpurWorldConfig { +@@ -2724,6 +2851,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean witherRidable = false; -@@ -2748,6 +2876,7 @@ public class PurpurWorldConfig { +@@ -2738,6 +2866,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2770,6 +2899,7 @@ public class PurpurWorldConfig { +@@ -2760,6 +2889,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean witherSkeletonRidable = false; -@@ -2777,6 +2907,7 @@ public class PurpurWorldConfig { +@@ -2767,6 +2897,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2788,6 +2919,7 @@ public class PurpurWorldConfig { +@@ -2778,6 +2909,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean wolfRidable = false; -@@ -2799,6 +2931,7 @@ public class PurpurWorldConfig { +@@ -2789,6 +2921,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2818,6 +2951,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2941,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean zoglinRidable = false; -@@ -2825,6 +2959,7 @@ public class PurpurWorldConfig { +@@ -2815,6 +2949,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2836,6 +2971,7 @@ public class PurpurWorldConfig { +@@ -2826,6 +2961,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean zombieRidable = false; -@@ -2849,6 +2985,7 @@ public class PurpurWorldConfig { +@@ -2839,6 +2975,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2866,6 +3003,7 @@ public class PurpurWorldConfig { +@@ -2856,6 +2993,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean zombieHorseRidable = false; -@@ -2879,6 +3017,7 @@ public class PurpurWorldConfig { +@@ -2869,6 +3007,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2897,6 +3036,7 @@ public class PurpurWorldConfig { +@@ -2887,6 +3026,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean zombieVillagerRidable = false; -@@ -2911,6 +3051,7 @@ public class PurpurWorldConfig { +@@ -2901,6 +3041,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2929,6 +3070,7 @@ public class PurpurWorldConfig { +@@ -2919,6 +3060,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 } public boolean zombifiedPiglinRidable = false; -@@ -2941,6 +3083,7 @@ public class PurpurWorldConfig { +@@ -2931,6 +3073,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 3683277077ed77fa804f5678127ba2b65bc070e7..6dc882c14f1dfd0dd7d37d595f86f387 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2957,6 +3100,7 @@ public class PurpurWorldConfig { +@@ -2947,6 +3090,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0226-Potion-NamespacedKey.patch b/patches/server/0224-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0226-Potion-NamespacedKey.patch rename to patches/server/0224-Potion-NamespacedKey.patch diff --git a/patches/server/0227-Grindstone-API.patch b/patches/server/0225-Grindstone-API.patch similarity index 95% rename from patches/server/0227-Grindstone-API.patch rename to patches/server/0225-Grindstone-API.patch index 3b9493d3c..54d59ad04 100644 --- a/patches/server/0227-Grindstone-API.patch +++ b/patches/server/0225-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index c79e87fde9de55dbfe8c3deaf725e2a73dc2af38..b1eacb9691b320a10de3420fae3632bb9d5b7ae3 100644 +index 2a2bcd0fc2b7653d9087b88e9a01034b51f017b9..af99ce32872e079beb6ac1caf3a8ac4c3cae4648 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 766fcd703..3d58f8c07 100644 --- a/patches/server/0228-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -34,7 +34,7 @@ index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff990 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 0e06958657201806f425990ac01a5f8acc540f3e..2dbfc522990964b2ae5a9e5f84426e0749f92563 100644 +index 55e28eef76d9d534037d888d85c0609052478118..2077cb5dcf2352c9d5b502744aeb9a66df256939 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -74,7 +74,7 @@ index 0fc333f240d6918e841a9221be42973839408802..464a9d2e4c694d5d4aae6c2d3e8a5fad + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ecf28b77b6d899827d6f35681bfdc1bb5b993dc1..476545737acdb0da8e5f5def12164c7f83cbaa80 100644 +index f66cb47080fb4e046ba9fd9aa589f2d9d85dc8c3..3a455bd12ee2a4497393cea44bd3507300c19d98 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -539,6 +539,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch index 375562a82..2f53c8423 100644 --- a/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 430ccf1b9f5c6306bbe610d1f9058c1a4bfa2986..b18545e1bd55fa468af6d6c03211036e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3b79975bc3d4e56246e7aec34750f50dd85c61a..0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223 100644 +index 3a455bd12ee2a4497393cea44bd3507300c19d98..c3c6d0a25a7f068f54ab0c5065f64599abd8e04f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1076,11 +1076,13 @@ public class PurpurWorldConfig { +@@ -1066,11 +1066,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0230-Mob-head-visibility-percent.patch b/patches/server/0228-Mob-head-visibility-percent.patch similarity index 91% rename from patches/server/0230-Mob-head-visibility-percent.patch rename to patches/server/0228-Mob-head-visibility-percent.patch index 20b3c6ed3..21b0e8bef 100644 --- a/patches/server/0230-Mob-head-visibility-percent.patch +++ b/patches/server/0228-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45..99c5cd7f20435be1f78cfed4f952e4c7 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb806d788485 100644 +index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82d9822ba7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1387,6 +1388,7 @@ public class PurpurWorldConfig { +@@ -1377,6 +1378,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 } public boolean dolphinRidable = false; -@@ -2173,6 +2175,7 @@ public class PurpurWorldConfig { +@@ -2163,6 +2165,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2187,6 +2190,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 } public boolean piglinBruteRidable = false; -@@ -2446,6 +2450,7 @@ public class PurpurWorldConfig { +@@ -2436,6 +2440,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2458,6 +2463,7 @@ public class PurpurWorldConfig { +@@ -2448,6 +2453,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 } public boolean skeletonHorseRidable = false; -@@ -2992,6 +2998,7 @@ public class PurpurWorldConfig { +@@ -2982,6 +2988,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 0ce9870c1da0cba4e3ee7ccb05ace4fc4e1b0223..7bd8d35e35a9893e25de6f671f95fb80 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3010,6 +3017,7 @@ public class PurpurWorldConfig { +@@ -3000,6 +3007,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0231-Configurable-valid-characters-for-usernames.patch b/patches/server/0229-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0231-Configurable-valid-characters-for-usernames.patch rename to patches/server/0229-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0232-Shears-can-have-looting-enchantment.patch b/patches/server/0230-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0232-Shears-can-have-looting-enchantment.patch rename to patches/server/0230-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0233-Stop-bees-from-dying-after-stinging.patch b/patches/server/0231-Stop-bees-from-dying-after-stinging.patch similarity index 86% rename from patches/server/0233-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0231-Stop-bees-from-dying-after-stinging.patch index ab2526aff..7a0dc55be 100644 --- a/patches/server/0233-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0231-Stop-bees-from-dying-after-stinging.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop bees from dying after stinging 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 6d7b8c9f9bfe296263f1752f485dcf8f53af8142..0a4ca865d1e41efca0eb8287c833e642e838b01a 100644 +index 9fa937d2d6c3b23e390447e4d4fa24543e2679e5..c2dae3636145105ecb3ae950e07095f278f72ac2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -446,6 +446,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -17,10 +17,10 @@ index 6d7b8c9f9bfe296263f1752f485dcf8f53af8142..0a4ca865d1e41efca0eb8287c833e642 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c793c0c91f7ef6d5e847fd10a908fee09208bc12..a3ec794d6690574bac653321301668aba420a967 100644 +index a3b5ab71509a61825b6344889d7f0b82d9822ba7..278cc18842f83b8a997dd3fa43449fb90660693c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1171,6 +1171,7 @@ public class PurpurWorldConfig { +@@ -1161,6 +1161,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index c793c0c91f7ef6d5e847fd10a908fee09208bc12..a3ec794d6690574bac653321301668ab private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1178,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0232-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0232-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0235-Configurable-farmland-trample-height.patch b/patches/server/0233-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0235-Configurable-farmland-trample-height.patch rename to patches/server/0233-Configurable-farmland-trample-height.patch index 78ca9e291..d56a03413 100644 --- a/patches/server/0235-Configurable-farmland-trample-height.patch +++ b/patches/server/0233-Configurable-farmland-trample-height.patch @@ -22,7 +22,7 @@ Value set -> Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d51d25cfb 100644 +index 00a6aa924e47e18ae80b57e9fe1d38e2de15dd72..0c39126ce51439cce05747161aba43bce33a12d8 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -110,7 +110,7 @@ public class FarmBlock extends Block { @@ -35,7 +35,7 @@ index 5c93cf7f97ecf4fba2c905b293ca7d21d1424f30..c4eca9db159d6a581d863558ebc3008d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3ec794d6690574bac653321301668aba420a967..63c29714c855f95f62ecdf19b1502881699206c9 100644 +index 278cc18842f83b8a997dd3fa43449fb90660693c..52b08015601eb266719c907f4dbed4a0ce8af072 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -959,6 +959,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0236-Configurable-player-pickup-exp-delay.patch b/patches/server/0234-Configurable-player-pickup-exp-delay.patch similarity index 97% rename from patches/server/0236-Configurable-player-pickup-exp-delay.patch rename to patches/server/0234-Configurable-player-pickup-exp-delay.patch index 0fde99183..86fac4794 100644 --- a/patches/server/0236-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0234-Configurable-player-pickup-exp-delay.patch @@ -35,7 +35,7 @@ index 4297622fecf2cde16cdcb206ecc3e912b06c0a66..43199815ffe3d666577390b96187aa89 } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7eb471bb2c91be2a6da2918e31f5b18be584646..631467b92404a37849d673f15ddfadfe544cff19 100644 +index 52b08015601eb266719c907f4dbed4a0ce8af072..1350e3de8ca03eb7c6653f1f5523c2a8455d9975 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -420,6 +420,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0237-Allow-void-trading.patch b/patches/server/0235-Allow-void-trading.patch similarity index 93% rename from patches/server/0237-Allow-void-trading.patch rename to patches/server/0235-Allow-void-trading.patch index 00743d89b..a5464f07a 100644 --- a/patches/server/0237-Allow-void-trading.patch +++ b/patches/server/0235-Allow-void-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e675d7e82245e1b7ef94fc55f393002ab572e2ba..e2c5a03bcf008db05e6170184c6167d2ca1555fb 100644 +index f141031f668898b8cc0ac1970b9026da6be4a466..6c165580b2c57a7fb95833208a72af33988427dc 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2909,7 +2909,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -18,7 +18,7 @@ index e675d7e82245e1b7ef94fc55f393002ab572e2ba..e2c5a03bcf008db05e6170184c6167d2 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a9dba090d637c5942d09ffc4698e3397a137a7ac..09cac0ae130610fd1ce50eb092fe758cfe71a4dd 100644 +index 1350e3de8ca03eb7c6653f1f5523c2a8455d9975..eaa7070d71d6c8ae3adcaaeb52eb3439cf87c034 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -421,6 +421,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0238-Configurable-phantom-size.patch b/patches/server/0236-Configurable-phantom-size.patch similarity index 90% rename from patches/server/0238-Configurable-phantom-size.patch rename to patches/server/0236-Configurable-phantom-size.patch index b3b5ca710..422923628 100644 --- a/patches/server/0238-Configurable-phantom-size.patch +++ b/patches/server/0236-Configurable-phantom-size.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable phantom size 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 ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f238c294d 100644 +index 8591fb95aa3079d7722f445ce1b1743c1f02b9bc..44a24707530ca46a6a42e8a4d9049e75f65aa66b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -22,10 +22,10 @@ index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09cac0ae130610fd1ce50eb092fe758cfe71a4dd..1620ed5e1fab8575af02fefc910865d1b8a50322 100644 +index eaa7070d71d6c8ae3adcaaeb52eb3439cf87c034..bc3b4d6efe2182b634c021ad5772a8a81d4cc2d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2113,6 +2113,8 @@ public class PurpurWorldConfig { +@@ -2103,6 +2103,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 09cac0ae130610fd1ce50eb092fe758cfe71a4dd..1620ed5e1fab8575af02fefc910865d1 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2149,6 +2151,13 @@ public class PurpurWorldConfig { +@@ -2139,6 +2141,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0239-Configurable-food-attributes.patch b/patches/server/0237-Configurable-food-attributes.patch similarity index 100% rename from patches/server/0239-Configurable-food-attributes.patch rename to patches/server/0237-Configurable-food-attributes.patch diff --git a/patches/server/0240-Max-joins-per-second.patch b/patches/server/0238-Max-joins-per-second.patch similarity index 100% rename from patches/server/0240-Max-joins-per-second.patch rename to patches/server/0238-Max-joins-per-second.patch diff --git a/patches/server/0241-Configurable-minimum-demand-for-trades.patch b/patches/server/0239-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0241-Configurable-minimum-demand-for-trades.patch rename to patches/server/0239-Configurable-minimum-demand-for-trades.patch index 761a3a0cc..d5d59822b 100644 --- a/patches/server/0241-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0239-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 02feea12c998f37098b72becf6bfaf6b27d155de..9c89a85d934955c9388cfe1361f13e70 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a953d543fb14bc36e775a976710f11633da7c86..c312382eeb38b9d6b2420b482c1467d6f27beb81 100644 +index bc3b4d6efe2182b634c021ad5772a8a81d4cc2d9..c5eaf27e8983949ede5555da7905fa7bc1bf5700 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2794,6 +2794,7 @@ public class PurpurWorldConfig { +@@ -2784,6 +2784,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 4a953d543fb14bc36e775a976710f11633da7c86..c312382eeb38b9d6b2420b482c1467d6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2814,6 +2815,7 @@ public class PurpurWorldConfig { +@@ -2804,6 +2805,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0242-Lobotomize-stuck-villagers.patch b/patches/server/0240-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0242-Lobotomize-stuck-villagers.patch rename to patches/server/0240-Lobotomize-stuck-villagers.patch index 5b9fe92c5..ee9f2fb36 100644 --- a/patches/server/0242-Lobotomize-stuck-villagers.patch +++ b/patches/server/0240-Lobotomize-stuck-villagers.patch @@ -105,10 +105,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c312382eeb38b9d6b2420b482c1467d6f27beb81..6fa783b3f064b0e62c67f5a5709fbe9c0d3b51a7 100644 +index c5eaf27e8983949ede5555da7905fa7bc1bf5700..0135c477ca5e8401177083bcd41573d7e24ec850 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2795,6 +2795,9 @@ public class PurpurWorldConfig { +@@ -2785,6 +2785,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -118,7 +118,7 @@ index c312382eeb38b9d6b2420b482c1467d6f27beb81..6fa783b3f064b0e62c67f5a5709fbe9c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2816,6 +2819,18 @@ public class PurpurWorldConfig { +@@ -2806,6 +2809,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0243-Option-for-villager-display-trade-item.patch b/patches/server/0241-Option-for-villager-display-trade-item.patch similarity index 91% rename from patches/server/0243-Option-for-villager-display-trade-item.patch rename to patches/server/0241-Option-for-villager-display-trade-item.patch index a6cebcdd1..69a2d99dd 100644 --- a/patches/server/0243-Option-for-villager-display-trade-item.patch +++ b/patches/server/0241-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26351f5ba9fd4f2e231481cfdd52341e0f4d96a4..38ebf581f6abc16b7556057c05cead5c2bfaa0f7 100644 +index 0135c477ca5e8401177083bcd41573d7e24ec850..a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2798,6 +2798,7 @@ public class PurpurWorldConfig { +@@ -2788,6 +2788,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 26351f5ba9fd4f2e231481cfdd52341e0f4d96a4..38ebf581f6abc16b7556057c05cead5c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2831,6 +2832,7 @@ public class PurpurWorldConfig { +@@ -2821,6 +2822,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index df171ee28..e2a05ba7e 100644 --- a/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 9b897cf53f4bb5d366e6ac88dbed93c59d8fe541..fc61f93e04e5bc893b89c746deb2b89c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f91d3d56f6c4077e773c82da0f96103c892b82b..440ba9fb9c30973ea3268298923812962034b2db 100644 +index a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c..a07d11bd3abdb77e16a7cb7db498690c4326613f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1063,8 +1063,10 @@ public class PurpurWorldConfig { +@@ -1053,8 +1053,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch similarity index 97% rename from patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch index ba43e361f..0b89099b6 100644 --- a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch @@ -38,7 +38,7 @@ index 9730a5469f81687cfde0a19a58d1c2147588d1d2..e3f724a19ab2f9821d84f9b03acf7c92 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d88a842902523d0a44996876ed5b789c9b83a837..9ffbf8e1957cff2c82a0d127dfa84f62766c20d3 100644 +index a07d11bd3abdb77e16a7cb7db498690c4326613f..2b5475c0032171fec4a5e8a7b435168c5b95b17b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0246-Anvil-repair-damage-options.patch b/patches/server/0244-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0246-Anvil-repair-damage-options.patch rename to patches/server/0244-Anvil-repair-damage-options.patch index 8c8e01010..3b98f2c86 100644 --- a/patches/server/0246-Anvil-repair-damage-options.patch +++ b/patches/server/0244-Anvil-repair-damage-options.patch @@ -64,7 +64,7 @@ index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76 return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d1a29d5b9695c4f2392a82f8c1b11db220ea727..92019e20b9a67eb3c8be875ed57943c1ee1538d6 100644 +index 2b5475c0032171fec4a5e8a7b435168c5b95b17b..d00d9068134957fb76740e94e7cce055d8ea9f43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -820,9 +820,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 24e399fa0..5b8fbc7b1 100644 --- a/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index b18545e1bd55fa468af6d6c03211036eb9fa146d..9a76665c6369b4106d152370dc3d2f56 return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b291d8943dc6fe38ccc2ca2a17b53d3cfb5eb894..2c577f12f86ed843f823f5756fd7cddb8bb807a6 100644 +index d00d9068134957fb76740e94e7cce055d8ea9f43..bafd2cd23363a2bc3c64f402842d0e39731eed1c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1091,12 +1091,14 @@ public class PurpurWorldConfig { +@@ -1081,12 +1081,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch similarity index 97% rename from patches/server/0248-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0246-Add-toggle-for-enchant-level-clamping.patch index 8b4629026..c2fcb9ec6 100644 --- a/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch @@ -31,7 +31,7 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f17b160b304b1adbde80690ae482986309f3befe..c6628a28387023b334dd99a4e469126a2108c38b 100644 +index a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d..a504f727f5aaa605809938b4e7e7bbe9b84c522a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -398,6 +398,7 @@ public class PurpurConfig { diff --git a/patches/server/0249-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0247-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0249-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0247-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch index 242b2d1df..314a30caf 100644 --- a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index a188a36d919037fa3177ad7f6930570f5e130fc9..ef7c67f591ca4a3c73b87a7c44b37ad0 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c577f12f86ed843f823f5756fd7cddb8bb807a6..adf1064af51c737f97c071fb65019a874a881a18 100644 +index bafd2cd23363a2bc3c64f402842d0e39731eed1c..d58497ff0cf698d8739e07083ef391f65aa39090 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2809,6 +2809,8 @@ public class PurpurWorldConfig { +@@ -2799,6 +2799,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 2c577f12f86ed843f823f5756fd7cddb8bb807a6..adf1064af51c737f97c071fb65019a87 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2843,6 +2845,8 @@ public class PurpurWorldConfig { +@@ -2833,6 +2835,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0251-Stonecutter-damage.patch b/patches/server/0249-Stonecutter-damage.patch similarity index 98% rename from patches/server/0251-Stonecutter-damage.patch rename to patches/server/0249-Stonecutter-damage.patch index 332ed4f56..852f0916b 100644 --- a/patches/server/0251-Stonecutter-damage.patch +++ b/patches/server/0249-Stonecutter-damage.patch @@ -152,10 +152,10 @@ index a504f727f5aaa605809938b4e7e7bbe9b84c522a..9bc5cc4944dcd3918b2a90bde9dd8fdd public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adf1064af51c737f97c071fb65019a874a881a18..f78b58599325a93658f6c6c2df9bde1ae4fb8784 100644 +index d58497ff0cf698d8739e07083ef391f65aa39090..b099b1abfe527b066c2bc9e89dc98c52db34c3eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1086,6 +1086,11 @@ public class PurpurWorldConfig { +@@ -1076,6 +1076,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch similarity index 93% rename from patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch index f6c15f317..7b733c49e 100644 --- a/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 746c211b575ca588deadbbcd5c55b614e8660ba8..2f38bac9efc224084505e80254662326 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f78b58599325a93658f6c6c2df9bde1ae4fb8784..f0dbcc6193f5fca36e9e54c792d55d135b03b4ca 100644 +index b099b1abfe527b066c2bc9e89dc98c52db34c3eb..6dfc93af8bab6462d4ab0940ea61652065b0b581 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1022,6 +1022,13 @@ public class PurpurWorldConfig { +@@ -1017,6 +1017,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0253-Add-config-for-snow-on-blue-ice.patch b/patches/server/0251-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0253-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0251-Add-config-for-snow-on-blue-ice.patch index 6eadd793b..7847c74cd 100644 --- a/patches/server/0253-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0251-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bbd1eefc53f91adce1102d865bd0c92c2cc090c2..b301f0778a2dc0de4a899da06598aed314ef545c 100644 +index 6dfc93af8bab6462d4ab0940ea61652065b0b581..ba8d194d1a6ecab995b31d04687f269389811754 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1003,9 +1003,11 @@ public class PurpurWorldConfig { +@@ -998,9 +998,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0254-Skeletons-eat-wither-roses.patch b/patches/server/0252-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0254-Skeletons-eat-wither-roses.patch rename to patches/server/0252-Skeletons-eat-wither-roses.patch index d02980605..06d088a7b 100644 --- a/patches/server/0254-Skeletons-eat-wither-roses.patch +++ b/patches/server/0252-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 2064d6177b3e43810d5962102fe914296e2627ff..30ff77f5f137614b5d0d2df6dc90f47c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 163b01e476dc3b53d0176b6606f65ce2cbc6bc21..b08fd09753dfab6c31cf59c189f9a55d9f77c5a5 100644 +index ba8d194d1a6ecab995b31d04687f269389811754..e77c777096229ff1ad14fe58c531e2bf1ed7bf3b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2492,6 +2492,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2482,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 163b01e476dc3b53d0176b6606f65ce2cbc6bc21..b08fd09753dfab6c31cf59c189f9a55d private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2505,6 +2506,7 @@ public class PurpurWorldConfig { +@@ -2495,6 +2496,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0255-Enchantment-Table-Persists-Lapis.patch b/patches/server/0253-Enchantment-Table-Persists-Lapis.patch similarity index 96% rename from patches/server/0255-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0253-Enchantment-Table-Persists-Lapis.patch index bf81e2087..e53ec1480 100644 --- a/patches/server/0255-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0253-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index c5c509fbb915c60dfa95aac8510684d0b9f8b0ff..d604b7ec46f08993647979ed220a84842e3fe325 100644 +index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990e4a720e4 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -40,6 +40,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -146,10 +146,10 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef6ed71bf4674b7f0275e3cc4487f9f311d4cf48..5af36ce329de61f867e702740edb8c1cebe2cc09 100644 +index e77c777096229ff1ad14fe58c531e2bf1ed7bf3b..7f159bc172cf9414cf34e8141d841764b80b204d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1529,6 +1529,11 @@ public class PurpurWorldConfig { +@@ -1519,6 +1519,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0256-Spark-Profiler.patch b/patches/server/0254-Spark-Profiler.patch similarity index 100% rename from patches/server/0256-Spark-Profiler.patch rename to patches/server/0254-Spark-Profiler.patch diff --git a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch index aee69dd0d..738ca141f 100644 --- a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5e17a72dbe105a1a0221d857b6da39a855127aab..7dec861f49e7db0ac7cf4f4942881f237ebcd61f 100644 +index 72ac438ec1a6628c861bdab9626c77666d4ba2b6..9107cc4860f81460f3424aeac4ca026b891ab47f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch similarity index 89% rename from patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch index 92986c2fc..6436c671a 100644 --- a/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,11 +18,11 @@ index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5af36ce329de61f867e702740edb8c1cebe2cc09..b2ece6e86bc7eca717ad1143c78a6657a7cbb01e 100644 +index 7f159bc172cf9414cf34e8141d841764b80b204d..4ba10f93d1e9eabb9c737efc0be93f2f555fb546 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1067,6 +1067,11 @@ public class PurpurWorldConfig { - fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); +@@ -1057,6 +1057,11 @@ public class PurpurWorldConfig { + } } + public boolean sculkShriekerCanSummonDefault = false; diff --git a/patches/server/0259-Config-to-not-let-coral-die.patch b/patches/server/0257-Config-to-not-let-coral-die.patch similarity index 96% rename from patches/server/0259-Config-to-not-let-coral-die.patch rename to patches/server/0257-Config-to-not-let-coral-die.patch index f06d87123..6e5d7b438 100644 --- a/patches/server/0259-Config-to-not-let-coral-die.patch +++ b/patches/server/0257-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2ece6e86bc7eca717ad1143c78a6657a7cbb01e..453d4b1c1d6b9a1521ce7a2e179dfcec0bf52a3c 100644 +index 4ba10f93d1e9eabb9c737efc0be93f2f555fb546..6e30be26888422187c145c5e7c81d24804119b90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -904,6 +904,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-Add-local-difficulty-api.patch b/patches/server/0258-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0260-Add-local-difficulty-api.patch rename to patches/server/0258-Add-local-difficulty-api.patch diff --git a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch b/patches/server/0259-Add-toggle-for-RNG-manipulation.patch similarity index 94% rename from patches/server/0261-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0259-Add-toggle-for-RNG-manipulation.patch index b2e82479b..516260ad9 100644 --- a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0259-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c868a61d73b4563807c70c9539f63cb0645a9984..c0942beb4b362cdba1c0b5fa4531f7d586eab0ac 100644 +index 7f69afbb8f6dd510f5715145b78d8ec97249783a..62fc774c91b12b100b982b1ff8fbb2495a5551ee 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -597,7 +597,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -33,7 +33,7 @@ index 2ec8a55650beff50676759617896da2db09dddc0..cba0823bfd10a3e7fd3a7548b9cc11a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf2b431301780acff40546af6475b227c40bd8bf..4c157168cfea5ef58d0b070971dfb73223c26897 100644 +index 6e30be26888422187c145c5e7c81d24804119b90..7d0d298bd68ecba2ba1e2f3336d9aad4567dfde2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0262-Send-client-custom-name-of-BE.patch b/patches/server/0260-Send-client-custom-name-of-BE.patch similarity index 93% rename from patches/server/0262-Send-client-custom-name-of-BE.patch rename to patches/server/0260-Send-client-custom-name-of-BE.patch index 792957da9..a54970c0e 100644 --- a/patches/server/0262-Send-client-custom-name-of-BE.patch +++ b/patches/server/0260-Send-client-custom-name-of-BE.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Send client custom name of BE diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 2f19f6ac5de454845f5d13a3ebb93af625b2afc8..3431f1a00ae2918b91a6b7a449e613e6e12ff6d4 100644 +index 8e1afae66742fc69d5aab1074ba94a3999cbf9b8..e9701ed4e5b35ace1accd2b46f082191d8ab6497 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java @@ -205,10 +205,24 @@ public abstract class BlockEntity { diff --git a/patches/server/0263-Allow-custom-ChatDecorators.patch b/patches/server/0261-Allow-custom-ChatDecorators.patch similarity index 94% rename from patches/server/0263-Allow-custom-ChatDecorators.patch rename to patches/server/0261-Allow-custom-ChatDecorators.patch index dae85cb29..37adb17f4 100644 --- a/patches/server/0263-Allow-custom-ChatDecorators.patch +++ b/patches/server/0261-Allow-custom-ChatDecorators.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 87a0bd56a75f10bdea9db29aaf0b6c0760fb195c..48f4122696dfb9ebc6c09b0036f5fa3591ce7c5e 100644 +index cd2394263cc14d99861f98c77f016e5461c88c09..0088180c3574ace7eb4170c385d2ca9fc098d6f3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2847,6 +2847,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1345,7 +1345,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1354,7 +1354,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 diff --git a/patches/server/0265-Remove-Mojang-Profiler.patch b/patches/server/0263-Remove-Mojang-Profiler.patch similarity index 98% rename from patches/server/0265-Remove-Mojang-Profiler.patch rename to patches/server/0263-Remove-Mojang-Profiler.patch index 2f7b1b2d0..ee9ab5c47 100644 --- a/patches/server/0265-Remove-Mojang-Profiler.patch +++ b/patches/server/0263-Remove-Mojang-Profiler.patch @@ -614,7 +614,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..6167ffb1263a1a65b582b7d295d1d77e } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e48fac31d5c25da0bea3b5247eceda3a45decaaf..fb6b762bac4d36b2e307b5343988884fa339d001 100644 +index e6e4df519fb2f9fb75f63da458d6b352c8b30554..921ff8253130fb40b8bbe10cd9dfe39565064ab1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -824,16 +824,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -648,10 +648,10 @@ index e48fac31d5c25da0bea3b5247eceda3a45decaaf..fb6b762bac4d36b2e307b5343988884f j = this.getGameTime(); - gameprofilerfiller.push("blockTicks"); + //gameprofilerfiller.push("blockTicks"); // Purpur - this.blockTicks.tick(j, 65536, this::tickBlock); + this.blockTicks.tick(j, paperConfig().environment.maxBlockTicks, this::tickBlock); // Paper - configurable max block ticks - gameprofilerfiller.popPush("fluidTicks"); + //gameprofilerfiller.popPush("fluidTicks"); // Purpur - this.fluidTicks.tick(j, 65536, this::tickFluid); + this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -681,7 +681,7 @@ index e48fac31d5c25da0bea3b5247eceda3a45decaaf..fb6b762bac4d36b2e307b5343988884f this.handlingTick = false; - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur - boolean flag1 = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players + boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this if (flag1) { @@ -904,12 +904,12 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1095,7 +1095,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c0942beb4b362cdba1c0b5fa4531f7d586eab0ac..b78d7958b56a4f385efc4666bb35a89a3049d702 100644 +index 62fc774c91b12b100b982b1ff8fbb2495a5551ee..0014046304fbb66925144ecccd0c0aa1c901c485 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1821,10 +1821,10 @@ index b678da2cbb93cea7971bc3c4d324cfca18b0bc97..b0884758d00efb1e3b4b47a539de2a81 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d0bfd5612 100644 +index a359d683bd6a8a916036b7b357ec0697399d2dd4..eebe6378de52e780aabfad3c414564349196ec6e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1305,9 +1305,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1314,9 +1314,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1836,7 +1836,7 @@ index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1357,7 +1357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1845,7 +1845,7 @@ index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1558,7 +1558,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1567,7 +1567,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1854,7 +1854,7 @@ index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1577,7 +1577,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1586,7 +1586,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1863,7 +1863,7 @@ index 0754ec885c68a6b3c6d91c8e00069c3fe41c0299..67a26f22d4eb7eaeee7900e6f4de421d // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1836,7 +1836,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1845,7 +1845,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch index 5ef8024ed..233fda9e8 100644 --- a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 19b4a69a3062870b831c37728cab8376d3340d54..4cb24be39cdb223cfeb34c102bdc707f3850033b 100644 +index c48e18e4aa72eae5d1a87a86b8a9c982838b5d47..921e04a0280dde21ee5af79188052294d30a0bbc 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0267-Add-Bee-API.patch b/patches/server/0265-Add-Bee-API.patch similarity index 96% rename from patches/server/0267-Add-Bee-API.patch rename to patches/server/0265-Add-Bee-API.patch index a3f2b0126..8180a08fe 100644 --- a/patches/server/0267-Add-Bee-API.patch +++ b/patches/server/0265-Add-Bee-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Bee API 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 0a4ca865d1e41efca0eb8287c833e642e838b01a..bdb78cc701543cfe91a6bafd1786fe2ea0bf1ddc 100644 +index c2dae3636145105ecb3ae950e07095f278f72ac2..997ab942be9f742804041b07d607e7dd6473ba96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -814,6 +814,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { diff --git a/patches/server/0268-Debug-Marker-API.patch b/patches/server/0266-Debug-Marker-API.patch similarity index 97% rename from patches/server/0268-Debug-Marker-API.patch rename to patches/server/0266-Debug-Marker-API.patch index 5a0f7846c..abb8a4181 100644 --- a/patches/server/0268-Debug-Marker-API.patch +++ b/patches/server/0266-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a4f812588b9cc1d6df556373ea0d7991058261ee..45ebcfb9f335dc0d13b3eceb5b8400041721b81d 100644 +index 14e60675d23f9696fd8f64eb026fcd0b82b498f0..659450d3538cc1499fd427868159e8c32b007dd2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1600,6 +1600,42 @@ public final class CraftServer implements Server { @@ -99,7 +99,7 @@ index 699432c497281f5501e48fb2a40a6f8bb65f7a6a..69f0c853ed7287c5a93b0a67e2662550 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ec95d213d05e539547c35e13c36458519a0bd4f0..9ec600dc473d30e4f47a81dc38a608862f17788f 100644 +index 219d6019eed162a2127f4d175aff817f52d93544..37d5ee3341af353efdaee609a57b262387e32a66 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3479,5 +3479,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch index 1ab7dd9f3..015722f81 100644 --- a/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122fd36f05e0 100644 +index d657de0bcc0684d1ba49ddad4db35e0e23fac108..a2026900948e9157cb35ba0183dc3af20c63214f 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -258,7 +258,7 @@ public final class NaturalSpawner { @@ -18,7 +18,7 @@ index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122f if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4174f1f3e6993a38cdb3cbd57553af9807a327b..1d9f4ae68eb58683aec4226aa62bf3731e14522b 100644 +index 7d0d298bd68ecba2ba1e2f3336d9aad4567dfde2..d790f742b47093f4e393cc7d60fc7c5c13c20fd1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -377,6 +377,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0270-Add-skeleton-bow-accuracy-option.patch b/patches/server/0268-Add-skeleton-bow-accuracy-option.patch similarity index 91% rename from patches/server/0270-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0268-Add-skeleton-bow-accuracy-option.patch index e88d4fe2d..8306cc224 100644 --- a/patches/server/0270-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0268-Add-skeleton-bow-accuracy-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c360a56dc 100644 +index cb378b343f721c16868a6673aba59856574c7133..a00646bc8a9caefe56e48b7682e8fb0c464b81fa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -182,7 +182,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -18,10 +18,10 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d9f4ae68eb58683aec4226aa62bf3731e14522b..1dfaad983ed6d6babf88fb5cd512378110d09143 100644 +index d790f742b47093f4e393cc7d60fc7c5c13c20fd1..5b12c08a1d8e6f62c5653c95071a1d36d735d039 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2512,6 +2512,8 @@ public class PurpurWorldConfig { +@@ -2502,6 +2502,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 1d9f4ae68eb58683aec4226aa62bf3731e14522b..1dfaad983ed6d6babf88fb5cd5123781 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2526,6 +2528,18 @@ public class PurpurWorldConfig { +@@ -2516,6 +2518,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0271-Allay-respect-item-NBT.patch b/patches/server/0269-Allay-respect-item-NBT.patch similarity index 95% rename from patches/server/0271-Allay-respect-item-NBT.patch rename to patches/server/0269-Allay-respect-item-NBT.patch index efc73659d..9faf279ca 100644 --- a/patches/server/0271-Allay-respect-item-NBT.patch +++ b/patches/server/0269-Allay-respect-item-NBT.patch @@ -44,10 +44,10 @@ index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f2 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1dfaad983ed6d6babf88fb5cd512378110d09143..0c928efa4e11a85901ece3dbc849c8c0c652cc71 100644 +index 5b12c08a1d8e6f62c5653c95071a1d36d735d039..94e29919ddc7f507d54e14c3360f7a3e8bb831a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1148,10 +1148,13 @@ public class PurpurWorldConfig { +@@ -1138,10 +1138,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0272-Add-death-screen-API.patch b/patches/server/0270-Add-death-screen-API.patch similarity index 92% rename from patches/server/0272-Add-death-screen-API.patch rename to patches/server/0270-Add-death-screen-API.patch index 369c0ff22..8ca6e53b7 100644 --- a/patches/server/0272-Add-death-screen-API.patch +++ b/patches/server/0270-Add-death-screen-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9ec600dc473d30e4f47a81dc38a608862f17788f..d6122c121d6e18d276fb78865c6a680e9afc3378 100644 +index 37d5ee3341af353efdaee609a57b262387e32a66..988cc1290200de629a4c24cc67a03e69c2fcc727 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3517,5 +3517,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0273-Make-pufferfish-config-relocatable.patch b/patches/server/0271-Make-pufferfish-config-relocatable.patch similarity index 90% rename from patches/server/0273-Make-pufferfish-config-relocatable.patch rename to patches/server/0271-Make-pufferfish-config-relocatable.patch index 4ba2c0394..5497a44be 100644 --- a/patches/server/0273-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0271-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 960c0555a001fe63de78d77d5ea47d08a520d029..b4e5fbace85c67e7bd347e6a90514bbc2c132d5e 100644 +index 5e01bfdad663656168604fc878a993dd910bf45b..3fea9b69f4cfc94e7f01d4e3ca4ce7506a8e5d5c 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -26,7 +26,7 @@ index 960c0555a001fe63de78d77d5ea47d08a520d029..b4e5fbace85c67e7bd347e6a90514bbc if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 5165d5bdc92e4bd47ba6107be7af780feb9eeb76..d5e6c7e351a896eca956e99909f223185b80e9a1 100644 +index 6a9bd431e9c2e1fc1e51d394eaccba864bbeac89..85b861e21d8798a883ecbd0a09cc25f87e801b7b 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -230,6 +230,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -38,7 +38,7 @@ index 5165d5bdc92e4bd47ba6107be7af780feb9eeb76..d5e6c7e351a896eca956e99909f22318 gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index d7e581b3f4d2f9ecb054d020ea4f94ed54fb197a..c7f8f85ad6cb76413275ebe64385a3ec7051257e 100644 +index 0c3be815e4f81b0d51273413e9d0fb1a7db3f03f..146f229b8e8888e2c0256c007c71c675c27e71a5 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -180,6 +180,12 @@ public class Main { diff --git a/patches/server/0274-Implement-ram-and-rambar-commands.patch b/patches/server/0272-Implement-ram-and-rambar-commands.patch similarity index 98% rename from patches/server/0274-Implement-ram-and-rambar-commands.patch rename to patches/server/0272-Implement-ram-and-rambar-commands.patch index 148255826..f18d87e83 100644 --- a/patches/server/0274-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0272-Implement-ram-and-rambar-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 2fd8940727e4f361c67114794233d4ddc6548dbb..f50258436fd80e0793d867c67ad5653cb13b6609 100644 +index 48a4f26eec06777b4ae165db6566c1f6198527fd..b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -256,6 +256,8 @@ public class Commands { @@ -18,7 +18,7 @@ index 2fd8940727e4f361c67114794233d4ddc6548dbb..f50258436fd80e0793d867c67ad5653c if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f152066b6b19b6c5d7f4f7c4eb66ed0b440342c5..37a3ce5da2cb89675e0180c4ed937e5851cd002b 100644 +index 46c9cfa78fff65c24137792826c7f68483a39876..36b7686fdfeaab13cb1be9610ddc76fc70f6f6e5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -284,6 +284,7 @@ public class ServerPlayer extends Player { @@ -60,7 +60,7 @@ index f152066b6b19b6c5d7f4f7c4eb66ed0b440342c5..37a3ce5da2cb89675e0180c4ed937e58 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 40922e69274de6bc3da6f74b0216a816a1fb7722..128eab7246bf263e302cbeb5e4c359a41dd2cd3f 100644 +index b55a4366f69a1f259d5d7aed01764aec14a1dbb2..5313ba91ffc625b27d5bb99395f0e719829f6bda 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0273-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/server/0275-Add-item-packet-serialize-event.patch rename to patches/server/0273-Add-item-packet-serialize-event.patch diff --git a/patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 100% rename from patches/server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/patches/server/0277-Configurable-block-blast-resistance.patch b/patches/server/0275-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0277-Configurable-block-blast-resistance.patch rename to patches/server/0275-Configurable-block-blast-resistance.patch diff --git a/patches/server/0278-Configurable-block-fall-damage-modifiers.patch b/patches/server/0276-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0278-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0276-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0279-Language-API.patch b/patches/server/0277-Language-API.patch similarity index 93% rename from patches/server/0279-Language-API.patch rename to patches/server/0277-Language-API.patch index d248a8cce..fa7b7a005 100644 --- a/patches/server/0279-Language-API.patch +++ b/patches/server/0277-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 45ebcfb9f335dc0d13b3eceb5b8400041721b81d..0a5867b01c1ebf21d9add1d4a2843d15b8e1acb7 100644 +index 659450d3538cc1499fd427868159e8c32b007dd2..dabaf0cff6dafe8ca411996e67ead9a2cf84dfb8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -400,6 +400,20 @@ public final class CraftServer implements Server { diff --git a/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch similarity index 97% rename from patches/server/0280-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0278-Milk-Keeps-Beneficial-Effects.patch index f02c29b20..c33bcac40 100644 --- a/patches/server/0280-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0278-Milk-Keeps-Beneficial-Effects.patch @@ -30,7 +30,7 @@ index 21a7cc86245d2440b8fc757d3664a29de293f7b0..b133c186d2d1412aa623ba3db68091bc this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c66d362dc5600d28165906dc9916af94c271664..0101b5c0ab87eaad0274993c2f099c04923b74b9 100644 +index 94e29919ddc7f507d54e14c3360f7a3e8bb831a7..f1ac2b90a465213c93ce940ca3f40497a9309e9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0282-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0280-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch index f819c8dab..ae5c8ae9e 100644 --- a/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1fc1c9d3f90fec901bddce5e55ab682bfa495b8f..92d16b3c5f2170c30019c093ca81aa85c92d0828 100644 +index f1ac2b90a465213c93ce940ca3f40497a9309e9b..eae5bebdb1bcc711b205078f96023ceb48fe5dd0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1422,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1412,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 1fc1c9d3f90fec901bddce5e55ab682bfa495b8f..92d16b3c5f2170c30019c093ca81aa85 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1440,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1431,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0284-Fire-Immunity-API.patch b/patches/server/0282-Fire-Immunity-API.patch similarity index 97% rename from patches/server/0284-Fire-Immunity-API.patch rename to patches/server/0282-Fire-Immunity-API.patch index 420d96164..6defcefbd 100644 --- a/patches/server/0284-Fire-Immunity-API.patch +++ b/patches/server/0282-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b78d7958b56a4f385efc4666bb35a89a3049d702..693a418c10583131135a1d9f8be9c54f23a16430 100644 +index 0014046304fbb66925144ecccd0c0aa1c901c485..0f87b47758a543a5a0afa872f90d3db4dc9da4e0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -427,6 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 63d80a982..cf8111369 100644 --- a/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 693a418c10583131135a1d9f8be9c54f23a16430..2092ede561d14ace1c003ced051cd4967bb41beb 100644 +index 0f87b47758a543a5a0afa872f90d3db4dc9da4e0..9131d7693551c0cdecdb63f67b510fd5c766503c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -936,6 +936,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -17,7 +17,7 @@ index 693a418c10583131135a1d9f8be9c54f23a16430..2092ede561d14ace1c003ced051cd496 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a1628b6a2d4814f5cdef1dc3f27bd74b22265d7..61dfb8c7e8606136981ec61f2b7ef02711d3a395 100644 +index eae5bebdb1bcc711b205078f96023ceb48fe5dd0..cb7cb5352a431cc336086c106be84e50424fd8ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0286-Added-got-ram-event.patch b/patches/server/0284-Added-got-ram-event.patch similarity index 91% rename from patches/server/0286-Added-got-ram-event.patch rename to patches/server/0284-Added-got-ram-event.patch index b9275a0e9..64bcba860 100644 --- a/patches/server/0286-Added-got-ram-event.patch +++ b/patches/server/0284-Added-got-ram-event.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 806b207e5246db7daa03bebabd7aa574d8b0dab7..5d7b20c30bc5e3be8511b300c318d12a1e4a49d0 100644 +index 566f117ba6742ba17ffb8a2673a8c320c39549f7..9d356b08279fd611fb9a7d25be6ede59998a9799 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -429,6 +429,7 @@ public class Goat extends Animal { diff --git a/patches/server/0287-Log-skipped-entity-s-position.patch b/patches/server/0285-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0287-Log-skipped-entity-s-position.patch rename to patches/server/0285-Log-skipped-entity-s-position.patch diff --git a/patches/server/0288-End-Crystal-Cramming.patch b/patches/server/0286-End-Crystal-Cramming.patch similarity index 96% rename from patches/server/0288-End-Crystal-Cramming.patch rename to patches/server/0286-End-Crystal-Cramming.patch index 33c79427c..e1fbb7d55 100644 --- a/patches/server/0288-End-Crystal-Cramming.patch +++ b/patches/server/0286-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index 24ad1bae912fa6ee82ea8b6bdbb0af664dc1006c..34f5006f72ec357c474a19f22ee339e3 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61dfb8c7e8606136981ec61f2b7ef02711d3a395..6ec6806033a1033d3740e450b84f242b8e3749a2 100644 +index cb7cb5352a431cc336086c106be84e50424fd8ea..892af70a29ab76575cc86c7d9f36e28f3aefabb9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 94% rename from patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index a255686cc..2a53548ca 100644 --- a/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 39b15512dbff3739f0339278cf350006429fdbbd..4f4568c4ed1c3d6551467a18200f8eafb0a54351 100644 +index 4a0bca08585fae3620da108f6a4cc07e500e5e03..428773361d12ecbcf3a6bf790aedfe12a384f511 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -174,6 +174,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -36,7 +36,7 @@ index 39b15512dbff3739f0339278cf350006429fdbbd..4f4568c4ed1c3d6551467a18200f8eaf BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd0ce2e5e80ab2519247d8e6cfa2084455101034..36aa99f6dd6fad2185890e5a3e126ae3a14aff06 100644 +index 892af70a29ab76575cc86c7d9f36e28f3aefabb9..70b3c2fc1bd9f31d79079828a5de22a40d9cceba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -846,11 +846,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch similarity index 91% rename from patches/server/0291-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0289-Config-to-remove-explosion-radius-clamp.patch index 7ac6a5f80..77d4cab9b 100644 --- a/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 17abd085b3faf88e10a44a6c98af996892cc4e58..0c08a07d3d1efa35646dbaa5cc887bf9d62cae42 100644 +index b0884758d00efb1e3b4b47a539de2a819aab978a..ad2eff33b2df9f004b2859d876e3e95962503bd6 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -97,7 +97,7 @@ public class Explosion { @@ -27,7 +27,7 @@ index 17abd085b3faf88e10a44a6c98af996892cc4e58..0c08a07d3d1efa35646dbaa5cc887bf9 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36aa99f6dd6fad2185890e5a3e126ae3a14aff06..d809d6062e3ecfd8c86c7dcc712363430ed88923 100644 +index 70b3c2fc1bd9f31d79079828a5de22a40d9cceba..9759c3aa4dab2a1ea3ab62ee026d6ad93a488ff7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch index 056ca9c75..448204a4d 100644 --- a/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index 04957d461d0e968d443737068aaeec1d0bce78b2..7a283fbe4663cb321739f8e42ade4039 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2441151d8a9f52088412c7f91faa9d57be1e48b5..b7faa233782b82cf1482c5306a49496ae4c46a2d 100644 +index 9759c3aa4dab2a1ea3ab62ee026d6ad93a488ff7..959be2c3248bc5db01d4c5a4b15326867074ecee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -900,8 +900,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0293-Add-PreExplodeEvents.patch b/patches/server/0291-Add-PreExplodeEvents.patch similarity index 94% rename from patches/server/0293-Add-PreExplodeEvents.patch rename to patches/server/0291-Add-PreExplodeEvents.patch index a696779b3..f0d94d365 100644 --- a/patches/server/0293-Add-PreExplodeEvents.patch +++ b/patches/server/0291-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 0c08a07d3d1efa35646dbaa5cc887bf9d62cae42..3e69f176eee01b7e093a90f5f3c19009c0a22fa7 100644 +index ad2eff33b2df9f004b2859d876e3e95962503bd6..059e545fd04b7919fb0cc86797b636e3cda61027 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -429,6 +429,23 @@ public class Explosion { diff --git a/patches/server/0294-Improve-output-of-plugins-command.patch b/patches/server/0292-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0294-Improve-output-of-plugins-command.patch rename to patches/server/0292-Improve-output-of-plugins-command.patch diff --git a/patches/server/0295-Add-mending-multiplier.patch b/patches/server/0293-Add-mending-multiplier.patch similarity index 96% rename from patches/server/0295-Add-mending-multiplier.patch rename to patches/server/0293-Add-mending-multiplier.patch index b24297039..af6e76b7b 100644 --- a/patches/server/0295-Add-mending-multiplier.patch +++ b/patches/server/0293-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index 373a932b80be18b8a47ef849ce837dbfbba6f9cb..9a3210e34decb4096533c58f36687e31 public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7faa233782b82cf1482c5306a49496ae4c46a2d..1045c32ad127815f1a0f6c4c12d37dd893e0883f 100644 +index 959be2c3248bc5db01d4c5a4b15326867074ecee..24e3ebf13e6af6d4bddb85976b30ef894278ce20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0296-Make-GUI-Great-Again.patch b/patches/server/0294-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0296-Make-GUI-Great-Again.patch rename to patches/server/0294-Make-GUI-Great-Again.patch index bf4761b74..b59297a89 100644 --- a/patches/server/0296-Make-GUI-Great-Again.patch +++ b/patches/server/0294-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 21e7099755b72dbc3489eb9fcb97910b0605e2a2..043a48d8c90e2e008b06fb5a643378a0fa948aaa 100644 +index 85b861e21d8798a883ecbd0a09cc25f87e801b7b..5ca6af93362d205438f8321ee2461ae7f8160df1 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0297-Stored-Bee-API.patch b/patches/server/0295-Stored-Bee-API.patch similarity index 100% rename from patches/server/0297-Stored-Bee-API.patch rename to patches/server/0295-Stored-Bee-API.patch diff --git a/patches/server/0298-Shears-can-defuse-TNT.patch b/patches/server/0296-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0298-Shears-can-defuse-TNT.patch rename to patches/server/0296-Shears-can-defuse-TNT.patch index 0832a2c9c..81402150c 100644 --- a/patches/server/0298-Shears-can-defuse-TNT.patch +++ b/patches/server/0296-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index e712bd07ea2946167782473a536e0c72fab4bccd..6d934405cd18d63943171448743cafd5 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1045c32ad127815f1a0f6c4c12d37dd893e0883f..5021553d6518bb23bcb32a0c6980f0194c379467 100644 +index 24e3ebf13e6af6d4bddb85976b30ef894278ce20..a35837a4d089658b4a19ebf63690e5371e1515cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3286,4 +3286,11 @@ public class PurpurWorldConfig { +@@ -3276,4 +3276,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0299-Explorer-Map-API.patch b/patches/server/0297-Explorer-Map-API.patch similarity index 91% rename from patches/server/0299-Explorer-Map-API.patch rename to patches/server/0297-Explorer-Map-API.patch index 0e5c4da40..a4ae1c0b2 100644 --- a/patches/server/0299-Explorer-Map-API.patch +++ b/patches/server/0297-Explorer-Map-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index 797415866a7f182d804f6b8e57ceb07a6ac2a20a..6cfd169c2c32b644d70907358c2d4a2087c00a68 100644 +index d8dd99ec8bf7444c5a3c426db3a9c13e334dc0ff..8d3c1897044f9a2bbe1911e1a72dc9a00fb246df 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java @@ -235,6 +235,7 @@ public class MapItem extends ComplexItem { @@ -17,7 +17,7 @@ index 797415866a7f182d804f6b8e57ceb07a6ac2a20a..6cfd169c2c32b644d70907358c2d4a20 int i = 1 << worldmap.scale; int j = worldmap.centerX; diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index e4c4948e076cd64686dfd16ae0568fafc1437140..804c342783baccdc12e8ca49a362770e31596f6a 100644 +index 45269115e63cfc3bd7dc740a5694e2cc7c35bcb1..e1498d496aa01c433b6fa198608e33916eadecf3 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java @@ -67,6 +67,7 @@ public class MapItemSavedData extends SavedData { diff --git a/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch index beb3ac572..82a355e1d 100644 --- a/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d6679eba841dc6d9b2d227d99ab5842adb1caeb..2f0e119e6e630eba8229011d42185de40860f202 100644 +index a35837a4d089658b4a19ebf63690e5371e1515cd..43c6f7bfac08c31e19df70fb92cd611fbbe03b30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2101,6 +2101,7 @@ public class PurpurWorldConfig { +@@ -2091,6 +2091,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 4d6679eba841dc6d9b2d227d99ab5842adb1caeb..2f0e119e6e630eba8229011d42185de4 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2114,6 +2115,7 @@ public class PurpurWorldConfig { +@@ -2104,6 +2105,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 94% rename from patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index f1b51d6f8..cca01ecf0 100644 --- a/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -45,10 +45,10 @@ index 4f4f557b7f4232ec3b90dda43c6bed30521318ba..dd4313e0507d3adda0ec84c79f1af13e piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10ab00dda8e7c180e629676e342297979f427cbe..98f15753ebe2de471fd6de7d8baf0fe04d6dc449 100644 +index 43c6f7bfac08c31e19df70fb92cd611fbbe03b30..2cefa0a09e86e8d344de8b6fff8541d43f662b65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2270,6 +2270,7 @@ public class PurpurWorldConfig { +@@ -2260,6 +2260,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +56,7 @@ index 10ab00dda8e7c180e629676e342297979f427cbe..98f15753ebe2de471fd6de7d8baf0fe0 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2285,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2275,6 +2276,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0303-place-end-crystal-on-any-block.patch b/patches/server/0301-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0303-place-end-crystal-on-any-block.patch rename to patches/server/0301-place-end-crystal-on-any-block.patch index bc7ea97f2..5003d9f9b 100644 --- a/patches/server/0303-place-end-crystal-on-any-block.patch +++ b/patches/server/0301-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644 +index faa3f62d22266a3c32d6c95c3ffebd4aa3880739..0cf62b1f64afa56c319392eafe0d444b7c5662c7 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { @@ -18,7 +18,7 @@ index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba6 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c1354f18f7dd11d1f28f37d38ad4db4b671e3af1..68b86e3f9914b05312b94cc9f16ad8c39de103c6 100644 +index 2cefa0a09e86e8d344de8b6fff8541d43f662b65..28ecc0e7d61a1c0a62bc0ec096cd601a45fa02db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -969,6 +969,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0304-Add-hover-lines-API.patch b/patches/server/0302-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0304-Add-hover-lines-API.patch rename to patches/server/0302-Add-hover-lines-API.patch diff --git a/patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 96% rename from patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch index 1d6285652..d9b93d98f 100644 --- a/patches/server/0305-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,7 +18,7 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68b86e3f9914b05312b94cc9f16ad8c39de103c6..dab252cbadffbcdf19bacc0b378d671b29393e9c 100644 +index 28ecc0e7d61a1c0a62bc0ec096cd601a45fa02db..002c9bba93dede25111c653ec1df38316f19421f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0306-register-minecraft-debug-commands.patch b/patches/server/0304-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0306-register-minecraft-debug-commands.patch rename to patches/server/0304-register-minecraft-debug-commands.patch diff --git a/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch b/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch deleted file mode 100644 index 619b2a242..000000000 --- a/patches/server/0307-PaperPR-10285-check-if-itemstack-is-stackable-first.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: granny -Date: Sat, 24 Feb 2024 19:33:01 -0800 -Subject: [PATCH] PaperPR #10285 check if itemstack is stackable first - - -diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index deabb3400ee2406a8ec179a96d8cfd86f8edbbd6..c6a925cbd35eb33b27b90bfa8344ac7515d28b76 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Inventory.java -+++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java -@@ -114,7 +114,7 @@ public class Inventory implements Container, Nameable { - } - - private boolean hasRemainingSpaceForItem(ItemStack existingStack, ItemStack stack) { -- return !existingStack.isEmpty() && ItemStack.isSameItemSameTags(existingStack, stack) && existingStack.isStackable() && existingStack.getCount() < existingStack.getMaxStackSize() && existingStack.getCount() < this.getMaxStackSize(); -+ return !existingStack.isEmpty() && existingStack.isStackable() && existingStack.getCount() < existingStack.getMaxStackSize() && existingStack.getCount() < this.getMaxStackSize() && ItemStack.isSameItemSameTags(existingStack, stack); // Paper - check if itemstack is stackable first - } - - // CraftBukkit start - Watch method above! :D From 7e34461d40916076cf9f4fda318b68b3b60f4c8a Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 9 Mar 2024 06:43:24 -0800 Subject: [PATCH 074/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0052e2d build: Update tiny-remapper to 0.10.1 & remove unused repo from dev bundle config (#10303) PaperMC/Paper@a0931f4 Updated Upstream (Bukkit/CraftBukkit) (#10301) --- gradle.properties | 2 +- patches/server/0008-Ridables.patch | 12 ++++++------ .../0009-Configurable-entity-base-attributes.patch | 6 +++--- ...102-Make-entity-breeding-times-configurable.patch | 4 ++-- patches/server/0263-Remove-Mojang-Profiler.patch | 9 +++++---- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/gradle.properties b/gradle.properties index 77a8370c2..219041b25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 6ad63fba30e7ecd1b11bb8d77e8ed43f0a6e9ce9 +paperCommit = a0931f48646aa60ccdbdd8827bf68dba88a6c238 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 1b2b2bf25..6a8d3ba12 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index a6d3f90f7867cfbda0ef406ff3ce1bd8b9f787b0..0831d305a3b9d8d27cef946f46c0b03f this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 09594f96cf79aa38142a859bef2e3b6b8d00f7db..8ef87310566772024193aeade42faf0bca1c0ecb 100644 +index 15aaa270e51b9194596e7ed5061c85c9fb54e177..1e9e75906838e358935dd920800eb5b6acfc8e11 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -79,7 +79,7 @@ index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b96535eb07da6535bbb287c9478b81e7022247b1..add00d6f63ed57d95abba3666095b64c3d47791a 100644 +index 653209b573cf5a78c661029a24727321d8115270..315254c0cb42a2610b24846cf76972d25d9ed843 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -2265,11 +2265,11 @@ index 33c160994f70f71446d665e7487913437c9f9db4..a1bc178165f3481c2b4e399f0284f448 } 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 1f09d47b0ffb07b49b4d8bd79a371dd61f1c2a92..fee24a7b0fa7797279ca68ff26fbe6bb183ca3a1 100644 +index 84ae19bf9bddd2b6ee4737577d8836d59be028c2..7183cd107218d36962803facb63cd6f384de8611 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 -@@ -86,6 +86,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl - groundPathNavigation.setCanWalkOverFences(true); +@@ -88,6 +88,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl + navigation.setCanWalkOverFences(true); } + // Purpur start @@ -5158,7 +5158,7 @@ index 8f5376543cca9cbfb2a014f67ec373d984b0df64..3673d1442778331ece25f8faca95b349 public void tick() { super.tick(); 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 35e76fc8667d9fde5a8fc426699a617fb0a08e4b..41261b72bfa5157139a5384b6a0b66b719ec02b9 100644 +index 5c7a6fe97b1f0b55b4a5dddbb684e4424688f866..030aff3d948105d650e2a0918b195554657478d9 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -111,6 +111,12 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index df9141018..86296e9bb 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index add00d6f63ed57d95abba3666095b64c3d47791a..aa1e2c05c65391b5fbfce203c5095afd50682874 100644 +index 315254c0cb42a2610b24846cf76972d25d9ed843..d011f1ecc9bb81231c68c5710bd65bc1c44ccaad 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; @@ -475,10 +475,10 @@ index a1bc178165f3481c2b4e399f0284f4482ba246c1..48b0df2acccd0d406ba05aaeb6dfbfde public Map 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 fee24a7b0fa7797279ca68ff26fbe6bb183ca3a1..2ffa81c374bd4dc618b8e284317d13f6a070dc52 100644 +index 7183cd107218d36962803facb63cd6f384de8611..74ca2442008b0dea9f9762bbec8d6de1390f2582 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 -@@ -320,6 +320,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -325,6 +325,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl return this.dashCooldown; } diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index a8ee7bf82..7a3f7aef3 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -316,10 +316,10 @@ index 48b0df2acccd0d406ba05aaeb6dfbfde57cc1366..8bad919c44f7c4c4c524ea9ad5c8e38a public Map 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 2ffa81c374bd4dc618b8e284317d13f6a070dc52..a654c26742d8aa5e4c58a6391ad2fc5fe917ed3a 100644 +index 74ca2442008b0dea9f9762bbec8d6de1390f2582..baca84088350c82569fb7969136c65bbc4c52f5b 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 -@@ -91,6 +91,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -93,6 +93,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater; } diff --git a/patches/server/0263-Remove-Mojang-Profiler.patch b/patches/server/0263-Remove-Mojang-Profiler.patch index ee9ab5c47..b5921a731 100644 --- a/patches/server/0263-Remove-Mojang-Profiler.patch +++ b/patches/server/0263-Remove-Mojang-Profiler.patch @@ -1568,17 +1568,18 @@ index e73d7b47327da59dbf49c2160acd0b3ebb2a4232..472b76d6ec721fa46857097589aa879f Optional optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index a654c26742d8aa5e4c58a6391ad2fc5fe917ed3a..41773acc8e8e27daa1fe43726939b2d95da92c30 100644 +index baca84088350c82569fb7969136c65bbc4c52f5b..8616a8c09a21f576a07daaa93ebf64e0f03d0c88 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 -@@ -158,13 +158,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -160,14 +160,14 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @Override protected void customServerAiStep() { - this.level().getProfiler().push("camelBrain"); + //this.level().getProfiler().push("camelBrain"); // Purpur - Brain brain = (Brain) this.getBrain(); // Paper - decompile fix - brain.tick((ServerLevel)this.level(), this); + Brain behaviorcontroller = (Brain) this.getBrain(); // CraftBukkit - decompile error + + behaviorcontroller.tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("camelActivityUpdate"); + //this.level().getProfiler().pop(); // Purpur From 987f46f65419028bfb0fae39beef2323945f5166 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 9 Mar 2024 20:41:37 -0800 Subject: [PATCH 075/148] Update remapper version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 1e9c3352d..5840d740e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -57,7 +57,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.10:fat") + remapper("net.fabricmc:tiny-remapper:0.10.1:fat") decompiler("net.minecraftforge:forgeflower:2.0.627.2") paperclip("io.papermc:paperclip:3.0.3") } From 65150b490103b3ba0b19d4fe1b7cb1f8c4a731ee Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 10 Mar 2024 01:46:07 -0800 Subject: [PATCH 076/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@80e1a45 Add param to overrides to the correct method is called (#10308) PaperMC/Paper@62b220a Allow passenger retaining teleport via end gateway (#10283) --- gradle.properties | 2 +- ...-End-gateway-should-check-if-entity-can-use-portal.patch | 4 ++-- patches/server/0124-Add-EntityTeleportHinderedEvent.patch | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 219041b25..e2c001fa7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = a0931f48646aa60ccdbdd8827bf68dba88a6c238 +paperCommit = 62b220a87f6991c33423346e5f50e64058e7bdd9 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch index aa7118e66..f6670747b 100644 --- a/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch +++ b/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End gateway should check if entity can use portal diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 54f7bdd0e003ed170d739593199a2bb8ff0bbd68..400b7bbf49b1aa42eebb5d8f349a19d4ff321a7c 100644 +index 098fde8200a11f91f934ddab6b1486dac4014dfe..8be3d696f6401189406032dd8d45dc747f546df5 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -178,6 +178,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -171,6 +171,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch index e3c302ec9..7b66353a3 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index a0c1db8cfebaa0344012cc0af18d6231cdcdcbb8..a5a8bd6813b68ab2e913fc3ae30c9950c242beb3 100644 +index 4ba24bced9a2de4616a0418857d3738e0e322ea0..6660bea735dda46ab9493601f1f53b8e0075ca83 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -54,6 +54,14 @@ public class EndPortalBlock extends BaseEntityBlock { @@ -55,10 +55,10 @@ index 1b5cc5d6aa0b4313da980ce175c54145852d0db0..613df7b174ba4cb87314a631ebc7dfed EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 400b7bbf49b1aa42eebb5d8f349a19d4ff321a7c..1b150b9fc444a248f6c01572447c7bb8eecfc76e 100644 +index 8be3d696f6401189406032dd8d45dc747f546df5..4997f120aa9877c199fbcaa0c2f65226e13b5a23 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -179,6 +179,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -172,6 +172,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { if (!entity.canChangeDimensions()) return; // Purpur From 69b25cc1cae20895ffa695a0817669c3efeac89e Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 15 Mar 2024 10:56:38 -0700 Subject: [PATCH 077/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ab1afb0 Fix missing profiler.pop() in PathFinder::findPath (#10320) --- gradle.properties | 2 +- .../server/0263-Remove-Mojang-Profiler.patch | 55 +++++++++++-------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/gradle.properties b/gradle.properties index e2c001fa7..3427a1a79 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 62b220a87f6991c33423346e5f50e64058e7bdd9 +paperCommit = ab1afb0ed8838117f00a70fcf507ffedfb00c414 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0263-Remove-Mojang-Profiler.patch b/patches/server/0263-Remove-Mojang-Profiler.patch index b5921a731..ef46ded58 100644 --- a/patches/server/0263-Remove-Mojang-Profiler.patch +++ b/patches/server/0263-Remove-Mojang-Profiler.patch @@ -39,7 +39,7 @@ index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6 } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 05e1c94268cf5c6897807cd7acced652856a09ea..d1c7effca3592a234925657136f750717d696873 100644 +index 05e1c94268cf5c6897807cd7acced652856a09ea..16ff9771fa57b17a50e0930b95a86da8e9d170c0 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java @@ -43,9 +43,9 @@ public class BuildContexts> { @@ -59,12 +59,12 @@ index 05e1c94268cf5c6897807cd7acced652856a09ea..d1c7effca3592a234925657136f75071 } } finally { - context.profiler().pop(); -+ // context.profiler().pop(); // Purpur ++ //context.profiler().pop(); // Purpur } } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -index 821dc4aeaf48460000682604fba51b340b9738e7..3aa2ce6a2a3d3cdfc372a60419a09f49002339da 100644 +index 821dc4aeaf48460000682604fba51b340b9738e7..9882e89abcce1bf0b484424dd0a25bd3bbb841b4 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java @@ -23,9 +23,9 @@ public class ExecuteCommand> implements Unbo @@ -84,7 +84,7 @@ index 821dc4aeaf48460000682604fba51b340b9738e7..3aa2ce6a2a3d3cdfc372a60419a09f49 executionCommandSource.handleError(var9, this.modifiers.isForked(), executionContext.tracer()); } finally { - executionContext.profiler().pop(); -+ // executionContext.profiler().pop(); // Purpur ++ //executionContext.profiler().pop(); // Purpur } } @@ -402,7 +402,7 @@ index b1d2464fc151d4c636c3c2dc4e7b9446ff5dc0a0..8384f72d408f6f31c4c8a1ba47b8caba } else { ProfileResults methodprofilerresults = this.debugCommandProfiler.stop(Util.getNanos(), this.tickCount); diff --git a/src/main/java/net/minecraft/server/ServerFunctionManager.java b/src/main/java/net/minecraft/server/ServerFunctionManager.java -index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1dffc3ca8cf 100644 +index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..92aa26881818fec92d0663e2ccf507165c34c733 100644 --- a/src/main/java/net/minecraft/server/ServerFunctionManager.java +++ b/src/main/java/net/minecraft/server/ServerFunctionManager.java @@ -53,10 +53,10 @@ public class ServerFunctionManager { @@ -428,7 +428,7 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1df public void execute(CommandFunction function, CommandSourceStack source) { - ProfilerFiller gameprofilerfiller = this.server.getProfiler(); -+ // ProfilerFiller gameprofilerfiller = this.server.getProfiler(); // Purpur ++ //ProfilerFiller gameprofilerfiller = this.server.getProfiler(); // Purpur - gameprofilerfiller.push(() -> { + /*gameprofilerfiller.push(() -> { // Purpur @@ -443,7 +443,7 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..5dd0dcb47211cec69189115bf4eab1df ServerFunctionManager.LOGGER.warn("Failed to execute function {}", function.id(), exception); } finally { - gameprofilerfiller.pop(); -+ // gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.pop(); // Purpur } } @@ -477,7 +477,7 @@ index 3fbc1e7e401331790d590dcd513a0a267b5ea181..bb412ca874b85d777c0e3565fcefcee1 public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..6167ffb1263a1a65b582b7d295d1d77ef38c3ee3 100644 +index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f36005536e 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -264,16 +264,16 @@ public class ServerChunkCache extends ChunkSource { @@ -562,7 +562,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..6167ffb1263a1a65b582b7d295d1d77e this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random if (this.level.getServer().tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); -+ // gameprofilerfiller.popPush("naturalSpawnCount"); // Purpur ++ //gameprofilerfiller.popPush("naturalSpawnCount"); // Purpur //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns @@ -614,7 +614,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..6167ffb1263a1a65b582b7d295d1d77e } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e6e4df519fb2f9fb75f63da458d6b352c8b30554..921ff8253130fb40b8bbe10cd9dfe39565064ab1 100644 +index e6e4df519fb2f9fb75f63da458d6b352c8b30554..99cb0d3a9a64f8be8322a24d9f4e833a5b7d3588 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -824,16 +824,16 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -630,10 +630,10 @@ index e6e4df519fb2f9fb75f63da458d6b352c8b30554..921ff8253130fb40b8bbe10cd9dfe395 if (flag) { - gameprofilerfiller.push("world border"); -+ // gameprofilerfiller.push("world border"); // Purpur ++ //gameprofilerfiller.push("world border"); // Purpur this.getWorldBorder().tick(); - gameprofilerfiller.popPush("weather"); -+ // gameprofilerfiller.popPush("weather"); // Purpur ++ //gameprofilerfiller.popPush("weather"); // Purpur this.advanceWeatherCycle(); } @@ -1095,7 +1095,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 62fc774c91b12b100b982b1ff8fbb2495a5551ee..0014046304fbb66925144ecccd0c0aa1c901c485 100644 +index 7f75528cd7d3d1e4df0af9ac6fc05a2bf3a1c7a9..35a73f5c73adcf596b2b1f43b55dff925f01d762 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1546,7 +1546,7 @@ index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aeb } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index e73d7b47327da59dbf49c2160acd0b3ebb2a4232..472b76d6ec721fa46857097589aa879f237e3e0d 100644 +index e73d7b47327da59dbf49c2160acd0b3ebb2a4232..e3f72230e94b15a401e45cf8c10a1890d3278431 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -315,13 +315,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); @@ -1817,7 +1817,7 @@ index b678da2cbb93cea7971bc3c4d324cfca18b0bc97..b0884758d00efb1e3b4b47a539de2a81 } - this.level.getProfiler().pop(); -+ // this.level.getProfiler().pop(); // Purpur ++ //this.level.getProfiler().pop(); // Purpur } if (this.fire) { @@ -1936,7 +1936,7 @@ index 8c0df10efd59594c63cca2a1c22386acf17e5299..1b49ecbf8fdbe8b734f8ca5191dc9ed7 if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index eb18494bd7257fa5eb00dea16cf4d5667b796f2b..f039d6109ee6f55542adc8f30476ba9a9e4974bf 100644 +index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5aa7065b93 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java @@ -53,8 +53,8 @@ public class PathFinder { @@ -1950,6 +1950,15 @@ index eb18494bd7257fa5eb00dea16cf4d5667b796f2b..f039d6109ee6f55542adc8f30476ba9a // Set set = positions.keySet(); startNode.g = 0.0F; startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection +@@ -123,7 +123,7 @@ public class PathFinder { + if (best == null || comparator.compare(path, best) < 0) + best = path; + } +- profiler.pop(); ++ //profiler.pop(); // Purpur + return best; + // Paper end - Perf: remove streams and optimize collection + } diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java index 1d7c663fa0e550bd0cfb9a4b83ccd7e2968666f0..0043c0087896a6df6910b0500da37d84b287c901 100644 --- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java From df23ed3f5550ed544714216f456da354ee6977ef Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 15 Mar 2024 21:23:49 -0700 Subject: [PATCH 078/148] fix black text in GUI on gnome desktops --- .../server/0294-Make-GUI-Great-Again.patch | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/patches/server/0294-Make-GUI-Great-Again.patch b/patches/server/0294-Make-GUI-Great-Again.patch index b59297a89..da75fa96a 100644 --- a/patches/server/0294-Make-GUI-Great-Again.patch +++ b/patches/server/0294-Make-GUI-Great-Again.patch @@ -246,10 +246,10 @@ index c42a9949c4d37d45883867a54222a7ab33944b39..7f07ffab0835d45d4d170fe171d7fa99 } diff --git a/src/main/java/org/purpurmc/purpur/gui/GUIColor.java b/src/main/java/org/purpurmc/purpur/gui/GUIColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567cd93c17e +index 0000000000000000000000000000000000000000..550222758bf0e7deff26a6e813a860b7be365e87 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/gui/GUIColor.java -@@ -0,0 +1,54 @@ +@@ -0,0 +1,58 @@ +package org.purpurmc.purpur.gui; + +import net.md_5.bungee.api.ChatColor; @@ -290,6 +290,10 @@ index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567 + return color; + } + ++ public ChatColor getChatColor() { ++ return chat; ++ } ++ + public String getCode() { + return chat.toString(); + } @@ -306,14 +310,14 @@ index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567 +} diff --git a/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java b/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java new file mode 100644 -index 0000000000000000000000000000000000000000..33e89b4c00fa8318506b36cbe49fe4e412e0a9a1 +index 0000000000000000000000000000000000000000..d75fb5e77eff27d86135ed7d605dbc250b660f7d --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java -@@ -0,0 +1,78 @@ +@@ -0,0 +1,83 @@ +package org.purpurmc.purpur.gui; + +import com.google.common.collect.Sets; -+import net.md_5.bungee.api.ChatColor; ++import javax.swing.UIManager; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; + @@ -327,11 +331,16 @@ index 0000000000000000000000000000000000000000..33e89b4c00fa8318506b36cbe49fe4e4 +import java.util.Set; + +public class JColorTextPane extends JTextPane { -+ private static final GUIColor DEFAULT_COLOR = GUIColor.BLACK; ++ private static final GUIColor DEFAULT_COLOR; ++ static { ++ DEFAULT_COLOR = UIManager.getSystemLookAndFeelClassName().equals("com.sun.java.swing.plaf.gtk.GTKLookAndFeel") ++ ? GUIColor.WHITE : GUIColor.BLACK; ++ } ++ + + public void append(String msg) { + // TODO: update to use adventure instead -+ BaseComponent[] components = TextComponent.fromLegacyText(DEFAULT_COLOR.getCode() + msg, ChatColor.BLACK); ++ BaseComponent[] components = TextComponent.fromLegacyText(DEFAULT_COLOR.getCode() + msg, DEFAULT_COLOR.getChatColor()); + for (BaseComponent component : components) { + String text = component.toPlainText(); + if (text == null || text.isEmpty()) { From 943f9af80bab1f353d27d2c7c419722da4b448e2 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 17 Mar 2024 11:58:03 -0700 Subject: [PATCH 079/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cd110a8 [ci skip] Update CONTRIBUTING.md (#10318) PaperMC/Paper@e603486 Add onboarding message for initial server start (#10312) PaperMC/Paper@d361a7f Fix DamageSource API (#10307) PaperMC/Paper@99a6416 Expand Hopper BlockState API (#10328) --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 14 +++--- patches/server/0002-Rebrand.patch | 6 +-- .../0007-Component-related-conveniences.patch | 6 +-- patches/server/0008-Ridables.patch | 14 +++--- .../0014-Configurable-server-mod-name.patch | 4 +- patches/server/0016-Lagging-threshold.patch | 4 +- .../0046-Configurable-TPS-Catchup.patch | 4 +- ...0059-Add-5-second-tps-average-in-tps.patch | 4 +- .../0096-Configurable-daylight-cycle.patch | 8 ++-- .../server/0132-Dont-run-with-scissors.patch | 18 ++++---- ...er-Pearl-cooldown-damage-and-Endermi.patch | 6 +-- patches/server/0249-Stonecutter-damage.patch | 16 +++---- .../0261-Allow-custom-ChatDecorators.patch | 4 +- patches/server/0262-Remove-Timings.patch | 22 +++++----- .../server/0263-Remove-Mojang-Profiler.patch | 44 +++++++++---------- ...0273-Add-item-packet-serialize-event.patch | 4 +- .../server/0294-Make-GUI-Great-Again.patch | 12 ++--- ...lways-showing-item-in-player-death-m.patch | 4 +- 19 files changed, 98 insertions(+), 98 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3427a1a79..a574b144c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = ab1afb0ed8838117f00a70fcf507ffedfb00c414 +paperCommit = 99a641690abd3d3669249ce10243e0739a13af33 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 975ca56d6..38232c41b 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1497,7 +1497,7 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d06185566b447c432d4dc2e3ba04d121bcdbc71b..d1c21d36de331905aedb08b0a8d4fbf97e100a13 100644 +index 93b661e9cb7743aeff7da3972942cb73049a5e4c..60dad77b824c9b6a45e3a3960eb9d995583f1d28 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1219,6 +1220,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop items; + private gg.airplane.structs.ItemListWithBitset optimizedItems; // Pufferfish + // Pufferfish end - private int cooldownTime; + public int cooldownTime; private long tickedGameTime; @@ -84,14 +87,37 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index 93bb2a1e0..9ee29f584 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -177,7 +177,7 @@ index 99c5038672b09d0874125e3df280174c1e8151e6..f91ea723a1c85f6cf8c4f6dd7f182b94 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d1c21d36de331905aedb08b0a8d4fbf97e100a13..a6d3f90f7867cfbda0ef406ff3ce1bd8b9f787b0 100644 +index 60dad77b824c9b6a45e3a3960eb9d995583f1d28..9ce656109ea20de5f443f9e680debe38e9dace24 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -953,7 +953,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -79,7 +79,7 @@ index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 653209b573cf5a78c661029a24727321d8115270..315254c0cb42a2610b24846cf76972d25d9ed843 100644 +index 1ffc486f941046056dab91c861f939ba0202fa69..c94573ec8a82733abae1a36f29277907b8567196 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -2010,7 +2010,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index dbdb6c432448b151fa4421f14235f8bad23dc720..4707f0d1c78d6080201c313717ef912d4805873d 100644 +index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff585842ed27 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,23 @@ public class Turtle extends Animal { @@ -5158,7 +5158,7 @@ index 8f5376543cca9cbfb2a014f67ec373d984b0df64..3673d1442778331ece25f8faca95b349 public void tick() { super.tick(); 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 5c7a6fe97b1f0b55b4a5dddbb684e4424688f866..030aff3d948105d650e2a0918b195554657478d9 100644 +index 6f49b9b8707d74330adb973e0db3cd5bccf138b6..f5e1aa316a90bf2cd9c997b76830096d4fbbee42 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -111,6 +111,12 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -5207,7 +5207,7 @@ index 0b5a31477e3b76833fb97a455842316193663c8e..74599d29538b7072464d3bb16b6356da + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 4c2e8129481384a143384d327e14320023735b1a..ac836274a2d725e3fac55394154ae2148024853a 100644 +index cb3e9672f375a1a660757a05362729ddb5ca7504..c12fb91e6fa286b99bd08ff39cda7d6e4ff73f19 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -592,6 +592,15 @@ public class CraftEventFactory { @@ -5226,7 +5226,7 @@ index 4c2e8129481384a143384d327e14320023735b1a..ac836274a2d725e3fac55394154ae214 return event; } -@@ -1183,6 +1192,7 @@ public class CraftEventFactory { +@@ -1181,6 +1190,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/patches/server/0014-Configurable-server-mod-name.patch b/patches/server/0014-Configurable-server-mod-name.patch index e5f37680e..4c1271b3d 100644 --- a/patches/server/0014-Configurable-server-mod-name.patch +++ b/patches/server/0014-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index bebb1f089783ee84faad3ed3b08c40b9fd2518c0..bc90dd132e56dbc445261c27f4cd96a54d1ab8f1 100644 +index 5a0ebacdda1cf62ce5c8d088c1266cfd47923ff5..66bacce6f3cfa94341fa663a55c5e99a51f0e437 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1863,7 +1863,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index 0088180c3574ace7eb4170c385d2ca9fc098d6f3..b1d2464fc151d4c636c3c2dc4e7b9446 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1684,21 +1684,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1572,7 +1572,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -244,7 +244,7 @@ index b1d2464fc151d4c636c3c2dc4e7b9446ff5dc0a0..8384f72d408f6f31c4c8a1ba47b8caba try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1759,17 +1759,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2726,40 +2726,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.print(textArea, scrollPane, message); -@@ -190,11 +228,14 @@ public class MinecraftServerGui extends JComponent { +@@ -224,11 +262,14 @@ public class MinecraftServerGui extends JComponent { flag = (double) jscrollbar.getValue() + jscrollbar.getSize().getHeight() + (double) (MinecraftServerGui.MONOSPACED.getSize() * 4) > (double) jscrollbar.getMaximum(); } @@ -227,7 +227,7 @@ index c42a9949c4d37d45883867a54222a7ab33944b39..7f07ffab0835d45d4d170fe171d7fa99 if (flag) { jscrollbar.setValue(Integer.MAX_VALUE); -@@ -202,4 +243,16 @@ public class MinecraftServerGui extends JComponent { +@@ -236,4 +277,16 @@ public class MinecraftServerGui extends JComponent { } } diff --git a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch index fa2d82985..212c5b505 100644 --- a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch @@ -18,10 +18,10 @@ index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 6736093629bf92a888b0c971f3cf0a4e725cddec..ba4466c49a7c1713007140efdc2eb805e2516b4c 100644 +index 41651c877246f38c73cc9c81b37a0b86e5054cb9..a1724d2d545aa808ea380f910c0190658fc7881b 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -190,7 +190,7 @@ public class DamageSource { +@@ -196,7 +196,7 @@ public class DamageSource { ItemStack itemstack1 = itemstack; From 5bf09622eede87f7654ea5ec34046832a4cd0afb Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 21 Mar 2024 20:12:38 -0700 Subject: [PATCH 080/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@09d6dfb [ci skip] Upstream dependencies in workflow scripts. (#10338) PaperMC/Paper@55ffcb1 Fix tripwire disarming not working as intended PaperMC/Paper@05fe15e Fire EntityChangeBlockEvent on beehive nectar deposit (#10306) PaperMC/Paper@de620b8 Clone mutable types in events when changes are discarded (#10333) PaperMC/Paper@41ffa0c Expose power on fireballs (#10302) PaperMC/Paper@88419b2 Do not copy profile data if profiles are the same (#10259) --- .github/workflows/build.yml | 7 ++++--- gradle.properties | 2 +- patches/server/0295-Stored-Bee-API.patch | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9399b666c..4312154a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,13 +11,14 @@ jobs: runs-on: ubuntu-latest if: "!contains(github.event.commits[0].message, '[ci-skip]')" steps: - - uses: actions/checkout@v3 - - uses: gradle/wrapper-validation-action@v1 - - uses: actions/setup-java@v3.6.0 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 cache: 'gradle' + - uses: gradle/wrapper-validation-action@v2 + - uses: gradle/actions/setup-gradle@v3 - name: Configure Git run: git config --global user.email "no-reply@github.com" && git config --global user.name "Github Actions" - name: Apply Patches diff --git a/gradle.properties b/gradle.properties index a574b144c..9bf0bf8aa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 99a641690abd3d3669249ce10243e0739a13af33 +paperCommit = 88419b207579533646ab011da886030ea9ea4862 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0295-Stored-Bee-API.patch b/patches/server/0295-Stored-Bee-API.patch index 8fd770b33..fcce78557 100644 --- a/patches/server/0295-Stored-Bee-API.patch +++ b/patches/server/0295-Stored-Bee-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stored Bee API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index dc5bcf8f7662bd1feb4375605f27c320878bf7e0..7810d763841825f68c60b7471026d71d89726bf0 100644 +index ba610e05806ad020d439d59d30b820bc9cd3fbff..6afaab31539667667481f7e9bfc0c6846abe661a 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -134,6 +134,22 @@ public class BeehiveBlockEntity extends BlockEntity { @@ -44,7 +44,7 @@ index dc5bcf8f7662bd1feb4375605f27c320878bf7e0..7810d763841825f68c60b7471026d71d // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -429,9 +451,9 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -435,9 +457,9 @@ public class BeehiveBlockEntity extends BlockEntity { private BeeReleaseStatus() {} } From b7e80840c6a96e1132bb0eb01ef34233334461d4 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 24 Mar 2024 13:47:00 -0700 Subject: [PATCH 081/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9ec7dfc Move invisible setting up to entities (#10346) PaperMC/Paper@b600140 Add methods to change entity physics (#10334) --- gradle.properties | 2 +- patches/api/0007-Ridables.patch | 4 ++-- patches/api/0013-LivingEntity-safeFallDistance.patch | 4 ++-- patches/api/0018-LivingEntity-broadcastItemBreak.patch | 4 ++-- patches/api/0027-API-for-any-mob-to-burn-daylight.patch | 8 ++++---- patches/api/0046-Fire-Immunity-API.patch | 4 ++-- patches/server/0008-Ridables.patch | 6 +++--- patches/server/0015-LivingEntity-safeFallDistance.patch | 4 ++-- patches/server/0087-LivingEntity-broadcastItemBreak.patch | 4 ++-- .../server/0173-API-for-any-mob-to-burn-daylight.patch | 8 ++++---- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9bf0bf8aa..42ab59df1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 88419b207579533646ab011da886030ea9ea4862 +paperCommit = b6001403e9703cadaa6e8c8558e732b91c3c6d6e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0007-Ridables.patch b/patches/api/0007-Ridables.patch index 67bcb9f69..cc3f8b7d6 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0007-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index d9929d9311e4b2b0ae13a8f6f13563257263f298..ee617a8681d2d887216d63211ed0595dc1fe7ddb 100644 +index 967125e99adc1b5446f42811d60ef44ba56ef5f5..02418d7d976147c70375002452cb39a4325de215 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1104,4 +1104,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1138,4 +1138,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index e793f0ec4..ed4e1eb01 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index e67455efc84f1e06d3396291d104ce65fee4591b..11194fc3c63ed301d281fc4b41c4d80bbf3d9e27 100644 +index 5cb82901a5d0c8ee673501fc53389d526d4a5b6f..4051906aa47dc2392f1f47aceaefa09aaf45c2ee 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1310,4 +1310,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1312,4 +1312,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0018-LivingEntity-broadcastItemBreak.patch b/patches/api/0018-LivingEntity-broadcastItemBreak.patch index 375c9b787..d84c3ca8a 100644 --- a/patches/api/0018-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0018-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 11194fc3c63ed301d281fc4b41c4d80bbf3d9e27..229edcfb9de39e2ef10597c1d65044f26eaeba48 100644 +index 4051906aa47dc2392f1f47aceaefa09aaf45c2ee..f16a6eb97dcea3009023bffada76393792462e53 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1325,5 +1325,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1327,5 +1327,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch index c0536abe1..eb5d17f10 100644 --- a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index ee617a8681d2d887216d63211ed0595dc1fe7ddb..9fee171108e335827c5c164144284eb5a598742c 100644 +index 02418d7d976147c70375002452cb39a4325de215..644f58eeef73bab67ab50b16b87e7c2e798ea2c0 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1134,5 +1134,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1168,5 +1168,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); @@ -23,10 +23,10 @@ index ee617a8681d2d887216d63211ed0595dc1fe7ddb..9fee171108e335827c5c164144284eb5 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 229edcfb9de39e2ef10597c1d65044f26eaeba48..744b869c028324d5de30d2d64ab080b050fa3c47 100644 +index f16a6eb97dcea3009023bffada76393792462e53..91ce069e4f23a115a01b329dcf053ed19dfb83bc 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1332,5 +1332,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1334,5 +1334,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0046-Fire-Immunity-API.patch b/patches/api/0046-Fire-Immunity-API.patch index 2213b4431..f3be9e4a7 100644 --- a/patches/api/0046-Fire-Immunity-API.patch +++ b/patches/api/0046-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 9fee171108e335827c5c164144284eb5a598742c..a36fc32dd83339b6939cb4046538ec6285042397 100644 +index 644f58eeef73bab67ab50b16b87e7c2e798ea2c0..c83293ced48a0f43cb9314d306321e26b469f51e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1141,5 +1141,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1175,5 +1175,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index ed7610066..42df2cdc8 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -79,7 +79,7 @@ index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1ffc486f941046056dab91c861f939ba0202fa69..c94573ec8a82733abae1a36f29277907b8567196 100644 +index 3d9e96a54a00a7b2a73d2d26752b581deba94854..2518a9ebb69de85b1e387d115213bf2b20a0e715 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -5175,10 +5175,10 @@ index 6f49b9b8707d74330adb973e0db3cd5bccf138b6..f5e1aa316a90bf2cd9c997b76830096d public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 0b5a31477e3b76833fb97a455842316193663c8e..74599d29538b7072464d3bb16b6356da09513d21 100644 +index 7cd7912cecbbbe2c32bfd9b85181115c6d316eb8..18d3b660bc5efaca76379f836fc7afb0158eda3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1228,4 +1228,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1252,4 +1252,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 189f3cda3..16ab70eb0 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -69,10 +69,10 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 98df582ca3425f621396ce93cf7a0617ce3fb11f..de7a555a646aa4eb1ed4b75e01e6ef373444ac65 100644 +index 5a506af2b01974af94bdc42b6a5eb866b516ac4e..33f34eabcdb53beaa39a58566646a370015980d4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1156,4 +1156,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1155,4 +1155,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0087-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch index aeaa4aafa..227917143 100644 --- a/patches/server/0087-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0087-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 152dff14fec82432aeddf82cda6236b7d6326dca..1bcd9d9729952e68c56ff6e169ace11611b44e97 100644 +index 33f34eabcdb53beaa39a58566646a370015980d4..f2e101fe1d6adbfb277088076c0bac51cb95a23e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1167,5 +1167,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1166,5 +1166,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index 1f98cf2e9..0542c8412 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b14b99b8f0ce427da999e486bfed84ad38a19d8c..d79cbbcf0e6e6e6096e138be2617b727ea991c18 100644 +index 43f2282a7a59852ddb86d417baef9bf0bbdc9ea4..afdb416fe714097696132afba348f42ba6fd5140 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -354,7 +354,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 // Paper end - Add more Zombie API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 61348dfaab2fe3da35ae3195b7224e4b239dddd8..897f9f5d25c674f167530810c0b94bca83c3c3cc 100644 +index 20597775406e0ec019ac21550d83e971455ed1a9..83686f2fff044fd6b692da5533a3c97b0cf473b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -370,10 +370,10 @@ index 61348dfaab2fe3da35ae3195b7224e4b239dddd8..897f9f5d25c674f167530810c0b94bca Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 1d889c7476149431693f4c6125857f33c89b13a2..9730a5469f81687cfde0a19a58d1c2147588d1d2 100644 +index f2e101fe1d6adbfb277088076c0bac51cb95a23e..3b4a6d0d3ec4f6454bb6e0dab35cc282bf3237aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1173,5 +1173,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1172,5 +1172,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } From 2ebde54897f55ff3c0011b770c873af52331085d Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 29 Mar 2024 08:03:13 +0000 Subject: [PATCH 082/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@00fd87a Return dummy string instead of empty optional PaperMC/Paper@710dced [ci skip] move custom brig exception to paper package --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 42ab59df1..83ce2cc83 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = b6001403e9703cadaa6e8c8558e732b91c3c6d6e +paperCommit = 710dced8b70c995656a24479f9453676cf6164fc org.gradle.caching = true org.gradle.parallel = true From 48939f2d6d02d4e55c35e38c005d329581bca80f Mon Sep 17 00:00:00 2001 From: rockfordroeNG <130606096+rockfordroeNG@users.noreply.github.com> Date: Sun, 31 Mar 2024 03:02:44 -0500 Subject: [PATCH 083/148] Add SIMD Support for Java 21 (#1499) --- patches/api/0001-Pufferfish-API-Changes.patch | 4 ++-- patches/api/0002-Fix-pufferfish-issues.patch | 13 +++++++++++ .../server/0003-Fix-pufferfish-issues.patch | 22 +++++++++++++++++-- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 39f27823d..3f52c985d 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index bf01892c248b988531d21d9fb0f74d0adf2205ac..80833c13a2d19e31d6f648e7ef5b3456025e767e 100644 +index 66bcd8f9a8fce8f920a0f1dd7ae0a2937da68e80..c43eb3099747b9f1155b918ca818487b63488538 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { @@ -480,7 +480,7 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bac if (cloader instanceof PluginClassLoader) { diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -index f9b57b872780aa6b9b959494874b57c7a8ff0c53..90953bfc81168068a281be4d2d3942d5e7dd69ff 100644 +index 7e4f7cb2afbc145e532285c793573ad107bc3033..12449e18180d604e9cbbc744da74a8b222a18e1f 100644 --- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java @@ -50,6 +50,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm diff --git a/patches/api/0002-Fix-pufferfish-issues.patch b/patches/api/0002-Fix-pufferfish-issues.patch index 00aeb7539..b6b893fd9 100644 --- a/patches/api/0002-Fix-pufferfish-issues.patch +++ b/patches/api/0002-Fix-pufferfish-issues.patch @@ -4,6 +4,19 @@ Date: Tue, 4 Jan 2022 23:05:41 -0600 Subject: [PATCH] Fix pufferfish issues +diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java +index ab5fea0b03224bf249352ce340e94704ff713345..3441cdad70da1bd523c5933b1a914688718c2657 100644 +--- a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java ++++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java +@@ -15,7 +15,7 @@ public class SIMDChecker { + @Deprecated + public static boolean canEnable(Logger logger) { + try { +- if (SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18 && SIMDDetection.getJavaVersion() != 19) { ++ if (SIMDDetection.getJavaVersion() < 17 || SIMDDetection.getJavaVersion() > 21) { + return false; + } else { + SIMDDetection.testRun = true; diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java index 88f1ca89fa640a686231b8eec87e70419b2d73ef..d6b91c49a267c89d7df2ddee7ccfe64675d117be 100644 --- a/src/test/java/org/bukkit/AnnotationTest.java diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index ad314e5c7..aad32a705 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -18,9 +18,27 @@ index 7e82d2c6a6085a5ea335ba9ef2a5ec3f5a37e787..32366253c04c493135f2b22d1940f836 + jvmArgs("-DPaper.isRunDev=true") } diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index f6a3364175476c57a7763a087ff55e1689474800..5e01bfdad663656168604fc878a993dd910bf45b 100644 +index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +@@ -86,7 +86,7 @@ public class PufferfishConfig { + // Attempt to detect vectorization + try { + SIMDDetection.isEnabled = SIMDDetection.canEnable(PufferfishLogger.LOGGER); +- SIMDDetection.versionLimited = SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18 && SIMDDetection.getJavaVersion() != 19; ++ SIMDDetection.versionLimited = SIMDDetection.getJavaVersion() < 17 || SIMDDetection.getJavaVersion() > 21; + } catch (NoClassDefFoundError | Exception ignored) { + ignored.printStackTrace(); + } +@@ -94,7 +94,7 @@ public class PufferfishConfig { + if (SIMDDetection.isEnabled) { + PufferfishLogger.LOGGER.info("SIMD operations detected as functional. Will replace some operations with faster versions."); + } else if (SIMDDetection.versionLimited) { +- PufferfishLogger.LOGGER.warning("Will not enable SIMD! These optimizations are only safely supported on Java 17, Java 18, and Java 19."); ++ PufferfishLogger.LOGGER.warning("Will not enable SIMD! These optimizations are only safely supported on Java 17 through Java 21."); + } else { + PufferfishLogger.LOGGER.warning("SIMD operations are available for your server, but are not configured!"); + PufferfishLogger.LOGGER.warning("To enable additional optimizations, add \"--add-modules=jdk.incubator.vector\" to your startup flags, BEFORE the \"-jar\"."); @@ -232,7 +232,7 @@ public class PufferfishConfig { public static int activationDistanceMod; @@ -62,7 +80,7 @@ index 62ad086b5b07303d920fdb3534a556673ef51f71..15aaa270e51b9194596e7ed5061c85c9 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d18296739a833dbe6c3bf45e00d5d5c2e80099ac..d25dd9018eff5f3817c1b56f49632cc0a9388b8e 100644 +index 5c5c8fbd562b46f8699be97353447eaab36c007a..385253bddf50c290317b6d0f283331edf515badd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S From a58742076d1668070a8e53028b064331da42950d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 31 Mar 2024 08:17:45 +0000 Subject: [PATCH 084/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@45d1486 build: Update paperweight to 1.5.12 and Gradle Wrapper to 8.7 (#10361) --- build.gradle.kts | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 63721 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 14 +++++++------- gradlew.bat | 20 ++++++++++---------- settings.gradle.kts | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5840d740e..9b490e30e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.11" + id("io.papermc.paperweight.patcher") version "1.5.12" } allprojects { diff --git a/gradle.properties b/gradle.properties index 83ce2cc83..4a3bbca5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 710dced8b70c995656a24479f9453676cf6164fc +paperCommit = 45d1486fecab6f50c193bea0fcf03727832f3091 org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f93135c49b765f8051ef9d0a6055ff8e46073d8..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch literal 43453 zcma&N1CXTcmMvW9vTb(Rwr$&4wr$(C?dmSu>@vG-+vuvg^_??!{yS%8zW-#zn-LkA z5&1^$^{lnmUON?}LBF8_K|(?T0Ra(xUH{($5eN!MR#ZihR#HxkUPe+_R8Cn`RRs(P z_^*#_XlXmGv7!4;*Y%p4nw?{bNp@UZHv1?Um8r6)Fei3p@ClJn0ECfg1hkeuUU@Or zDaPa;U3fE=3L}DooL;8f;P0ipPt0Z~9P0)lbStMS)ag54=uL9ia-Lm3nh|@(Y?B`; zx_#arJIpXH!U{fbCbI^17}6Ri*H<>OLR%c|^mh8+)*h~K8Z!9)DPf zR2h?lbDZQ`p9P;&DQ4F0sur@TMa!Y}S8irn(%d-gi0*WxxCSk*A?3lGh=gcYN?FGl z7D=Js!i~0=u3rox^eO3i@$0=n{K1lPNU zwmfjRVmLOCRfe=seV&P*1Iq=^i`502keY8Uy-WNPwVNNtJFx?IwAyRPZo2Wo1+S(xF37LJZ~%i)kpFQ3Fw=mXfd@>%+)RpYQLnr}B~~zoof(JVm^^&f zxKV^+3D3$A1G;qh4gPVjhrC8e(VYUHv#dy^)(RoUFM?o%W-EHxufuWf(l*@-l+7vt z=l`qmR56K~F|v<^Pd*p~1_y^P0P^aPC##d8+HqX4IR1gu+7w#~TBFphJxF)T$2WEa zxa?H&6=Qe7d(#tha?_1uQys2KtHQ{)Qco)qwGjrdNL7thd^G5i8Os)CHqc>iOidS} z%nFEDdm=GXBw=yXe1W-ShHHFb?Cc70+$W~z_+}nAoHFYI1MV1wZegw*0y^tC*s%3h zhD3tN8b=Gv&rj}!SUM6|ajSPp*58KR7MPpI{oAJCtY~JECm)*m_x>AZEu>DFgUcby z1Qaw8lU4jZpQ_$;*7RME+gq1KySGG#Wql>aL~k9tLrSO()LWn*q&YxHEuzmwd1?aAtI zBJ>P=&$=l1efe1CDU;`Fd+_;&wI07?V0aAIgc(!{a z0Jg6Y=inXc3^n!U0Atk`iCFIQooHqcWhO(qrieUOW8X(x?(RD}iYDLMjSwffH2~tB z)oDgNBLB^AJBM1M^c5HdRx6fBfka`(LD-qrlh5jqH~);#nw|iyp)()xVYak3;Ybik z0j`(+69aK*B>)e_p%=wu8XC&9e{AO4c~O1U`5X9}?0mrd*m$_EUek{R?DNSh(=br# z#Q61gBzEpmy`$pA*6!87 zSDD+=@fTY7<4A?GLqpA?Pb2z$pbCc4B4zL{BeZ?F-8`s$?>*lXXtn*NC61>|*w7J* z$?!iB{6R-0=KFmyp1nnEmLsA-H0a6l+1uaH^g%c(p{iT&YFrbQ$&PRb8Up#X3@Zsk zD^^&LK~111%cqlP%!_gFNa^dTYT?rhkGl}5=fL{a`UViaXWI$k-UcHJwmaH1s=S$4 z%4)PdWJX;hh5UoK?6aWoyLxX&NhNRqKam7tcOkLh{%j3K^4Mgx1@i|Pi&}<^5>hs5 zm8?uOS>%)NzT(%PjVPGa?X%`N2TQCKbeH2l;cTnHiHppPSJ<7y-yEIiC!P*ikl&!B z%+?>VttCOQM@ShFguHVjxX^?mHX^hSaO_;pnyh^v9EumqSZTi+#f&_Vaija0Q-e*| z7ulQj6Fs*bbmsWp{`auM04gGwsYYdNNZcg|ph0OgD>7O}Asn7^Z=eI>`$2*v78;sj-}oMoEj&@)9+ycEOo92xSyY344^ z11Hb8^kdOvbf^GNAK++bYioknrpdN>+u8R?JxG=!2Kd9r=YWCOJYXYuM0cOq^FhEd zBg2puKy__7VT3-r*dG4c62Wgxi52EMCQ`bKgf*#*ou(D4-ZN$+mg&7$u!! z-^+Z%;-3IDwqZ|K=ah85OLwkO zKxNBh+4QHh)u9D?MFtpbl)us}9+V!D%w9jfAMYEb>%$A;u)rrI zuBudh;5PN}_6J_}l55P3l_)&RMlH{m!)ai-i$g)&*M`eN$XQMw{v^r@-125^RRCF0 z^2>|DxhQw(mtNEI2Kj(;KblC7x=JlK$@78`O~>V!`|1Lm-^JR$-5pUANAnb(5}B}JGjBsliK4& zk6y(;$e&h)lh2)L=bvZKbvh@>vLlreBdH8No2>$#%_Wp1U0N7Ank!6$dFSi#xzh|( zRi{Uw%-4W!{IXZ)fWx@XX6;&(m_F%c6~X8hx=BN1&q}*( zoaNjWabE{oUPb!Bt$eyd#$5j9rItB-h*5JiNi(v^e|XKAj*8(k<5-2$&ZBR5fF|JA z9&m4fbzNQnAU}r8ab>fFV%J0z5awe#UZ|bz?Ur)U9bCIKWEzi2%A+5CLqh?}K4JHi z4vtM;+uPsVz{Lfr;78W78gC;z*yTch~4YkLr&m-7%-xc ztw6Mh2d>_iO*$Rd8(-Cr1_V8EO1f*^@wRoSozS) zy1UoC@pruAaC8Z_7~_w4Q6n*&B0AjOmMWa;sIav&gu z|J5&|{=a@vR!~k-OjKEgPFCzcJ>#A1uL&7xTDn;{XBdeM}V=l3B8fE1--DHjSaxoSjNKEM9|U9#m2<3>n{Iuo`r3UZp;>GkT2YBNAh|b z^jTq-hJp(ebZh#Lk8hVBP%qXwv-@vbvoREX$TqRGTgEi$%_F9tZES@z8Bx}$#5eeG zk^UsLBH{bc2VBW)*EdS({yw=?qmevwi?BL6*=12k9zM5gJv1>y#ML4!)iiPzVaH9% zgSImetD@dam~e>{LvVh!phhzpW+iFvWpGT#CVE5TQ40n%F|p(sP5mXxna+Ev7PDwA zamaV4m*^~*xV+&p;W749xhb_X=$|LD;FHuB&JL5?*Y2-oIT(wYY2;73<^#46S~Gx| z^cez%V7x$81}UWqS13Gz80379Rj;6~WdiXWOSsdmzY39L;Hg3MH43o*y8ibNBBH`(av4|u;YPq%{R;IuYow<+GEsf@R?=@tT@!}?#>zIIn0CoyV!hq3mw zHj>OOjfJM3F{RG#6ujzo?y32m^tgSXf@v=J$ELdJ+=5j|=F-~hP$G&}tDZsZE?5rX ztGj`!S>)CFmdkccxM9eGIcGnS2AfK#gXwj%esuIBNJQP1WV~b~+D7PJTmWGTSDrR` zEAu4B8l>NPuhsk5a`rReSya2nfV1EK01+G!x8aBdTs3Io$u5!6n6KX%uv@DxAp3F@{4UYg4SWJtQ-W~0MDb|j-$lwVn znAm*Pl!?Ps&3wO=R115RWKb*JKoexo*)uhhHBncEDMSVa_PyA>k{Zm2(wMQ(5NM3# z)jkza|GoWEQo4^s*wE(gHz?Xsg4`}HUAcs42cM1-qq_=+=!Gk^y710j=66(cSWqUe zklbm8+zB_syQv5A2rj!Vbw8;|$@C!vfNmNV!yJIWDQ>{+2x zKjuFX`~~HKG~^6h5FntRpnnHt=D&rq0>IJ9#F0eM)Y-)GpRjiN7gkA8wvnG#K=q{q z9dBn8_~wm4J<3J_vl|9H{7q6u2A!cW{bp#r*-f{gOV^e=8S{nc1DxMHFwuM$;aVI^ zz6A*}m8N-&x8;aunp1w7_vtB*pa+OYBw=TMc6QK=mbA-|Cf* zvyh8D4LRJImooUaSb7t*fVfih<97Gf@VE0|z>NcBwBQze);Rh!k3K_sfunToZY;f2 z^HmC4KjHRVg+eKYj;PRN^|E0>Gj_zagfRbrki68I^#~6-HaHg3BUW%+clM1xQEdPYt_g<2K+z!$>*$9nQ>; zf9Bei{?zY^-e{q_*|W#2rJG`2fy@{%6u0i_VEWTq$*(ZN37|8lFFFt)nCG({r!q#9 z5VK_kkSJ3?zOH)OezMT{!YkCuSSn!K#-Rhl$uUM(bq*jY? zi1xbMVthJ`E>d>(f3)~fozjg^@eheMF6<)I`oeJYx4*+M&%c9VArn(OM-wp%M<-`x z7sLP1&3^%Nld9Dhm@$3f2}87!quhI@nwd@3~fZl_3LYW-B?Ia>ui`ELg z&Qfe!7m6ze=mZ`Ia9$z|ARSw|IdMpooY4YiPN8K z4B(ts3p%2i(Td=tgEHX z0UQ_>URBtG+-?0E;E7Ld^dyZ;jjw0}XZ(}-QzC6+NN=40oDb2^v!L1g9xRvE#@IBR zO!b-2N7wVfLV;mhEaXQ9XAU+>=XVA6f&T4Z-@AX!leJ8obP^P^wP0aICND?~w&NykJ#54x3_@r7IDMdRNy4Hh;h*!u(Ol(#0bJdwEo$5437-UBjQ+j=Ic>Q2z` zJNDf0yO6@mr6y1#n3)s(W|$iE_i8r@Gd@!DWDqZ7J&~gAm1#~maIGJ1sls^gxL9LLG_NhU!pTGty!TbhzQnu)I*S^54U6Yu%ZeCg`R>Q zhBv$n5j0v%O_j{QYWG!R9W?5_b&67KB$t}&e2LdMvd(PxN6Ir!H4>PNlerpBL>Zvyy!yw z-SOo8caEpDt(}|gKPBd$qND5#a5nju^O>V&;f890?yEOfkSG^HQVmEbM3Ugzu+UtH zC(INPDdraBN?P%kE;*Ae%Wto&sgw(crfZ#Qy(<4nk;S|hD3j{IQRI6Yq|f^basLY; z-HB&Je%Gg}Jt@={_C{L$!RM;$$|iD6vu#3w?v?*;&()uB|I-XqEKqZPS!reW9JkLewLb!70T7n`i!gNtb1%vN- zySZj{8-1>6E%H&=V}LM#xmt`J3XQoaD|@XygXjdZ1+P77-=;=eYpoEQ01B@L*a(uW zrZeZz?HJsw_4g0vhUgkg@VF8<-X$B8pOqCuWAl28uB|@r`19DTUQQsb^pfqB6QtiT z*`_UZ`fT}vtUY#%sq2{rchyfu*pCg;uec2$-$N_xgjZcoumE5vSI{+s@iLWoz^Mf; zuI8kDP{!XY6OP~q5}%1&L}CtfH^N<3o4L@J@zg1-mt{9L`s^z$Vgb|mr{@WiwAqKg zp#t-lhrU>F8o0s1q_9y`gQNf~Vb!F%70f}$>i7o4ho$`uciNf=xgJ>&!gSt0g;M>*x4-`U)ysFW&Vs^Vk6m%?iuWU+o&m(2Jm26Y(3%TL; zA7T)BP{WS!&xmxNw%J=$MPfn(9*^*TV;$JwRy8Zl*yUZi8jWYF>==j~&S|Xinsb%c z2?B+kpet*muEW7@AzjBA^wAJBY8i|#C{WtO_or&Nj2{=6JTTX05}|H>N2B|Wf!*3_ z7hW*j6p3TvpghEc6-wufFiY!%-GvOx*bZrhZu+7?iSrZL5q9}igiF^*R3%DE4aCHZ zqu>xS8LkW+Auv%z-<1Xs92u23R$nk@Pk}MU5!gT|c7vGlEA%G^2th&Q*zfg%-D^=f z&J_}jskj|Q;73NP4<4k*Y%pXPU2Thoqr+5uH1yEYM|VtBPW6lXaetokD0u z9qVek6Q&wk)tFbQ8(^HGf3Wp16gKmr>G;#G(HRBx?F`9AIRboK+;OfHaLJ(P>IP0w zyTbTkx_THEOs%Q&aPrxbZrJlio+hCC_HK<4%f3ZoSAyG7Dn`=X=&h@m*|UYO-4Hq0 z-Bq&+Ie!S##4A6OGoC~>ZW`Y5J)*ouaFl_e9GA*VSL!O_@xGiBw!AF}1{tB)z(w%c zS1Hmrb9OC8>0a_$BzeiN?rkPLc9%&;1CZW*4}CDDNr2gcl_3z+WC15&H1Zc2{o~i) z)LLW=WQ{?ricmC`G1GfJ0Yp4Dy~Ba;j6ZV4r{8xRs`13{dD!xXmr^Aga|C=iSmor% z8hi|pTXH)5Yf&v~exp3o+sY4B^^b*eYkkCYl*T{*=-0HniSA_1F53eCb{x~1k3*`W zr~};p1A`k{1DV9=UPnLDgz{aJH=-LQo<5%+Em!DNN252xwIf*wF_zS^!(XSm(9eoj z=*dXG&n0>)_)N5oc6v!>-bd(2ragD8O=M|wGW z!xJQS<)u70m&6OmrF0WSsr@I%T*c#Qo#Ha4d3COcX+9}hM5!7JIGF>7<~C(Ear^Sn zm^ZFkV6~Ula6+8S?oOROOA6$C&q&dp`>oR-2Ym3(HT@O7Sd5c~+kjrmM)YmgPH*tL zX+znN>`tv;5eOfX?h{AuX^LK~V#gPCu=)Tigtq9&?7Xh$qN|%A$?V*v=&-2F$zTUv z`C#WyIrChS5|Kgm_GeudCFf;)!WH7FI60j^0o#65o6`w*S7R@)88n$1nrgU(oU0M9 zx+EuMkC>(4j1;m6NoGqEkpJYJ?vc|B zOlwT3t&UgL!pX_P*6g36`ZXQ; z9~Cv}ANFnJGp(;ZhS(@FT;3e)0)Kp;h^x;$*xZn*k0U6-&FwI=uOGaODdrsp-!K$Ac32^c{+FhI-HkYd5v=`PGsg%6I`4d9Jy)uW0y%) zm&j^9WBAp*P8#kGJUhB!L?a%h$hJgQrx!6KCB_TRo%9{t0J7KW8!o1B!NC)VGLM5! zpZy5Jc{`r{1e(jd%jsG7k%I+m#CGS*BPA65ZVW~fLYw0dA-H_}O zrkGFL&P1PG9p2(%QiEWm6x;U-U&I#;Em$nx-_I^wtgw3xUPVVu zqSuKnx&dIT-XT+T10p;yjo1Y)z(x1fb8Dzfn8e yu?e%!_ptzGB|8GrCfu%p?(_ zQccdaaVK$5bz;*rnyK{_SQYM>;aES6Qs^lj9lEs6_J+%nIiuQC*fN;z8md>r_~Mfl zU%p5Dt_YT>gQqfr@`cR!$NWr~+`CZb%dn;WtzrAOI>P_JtsB76PYe*<%H(y>qx-`Kq!X_; z<{RpAqYhE=L1r*M)gNF3B8r(<%8mo*SR2hu zccLRZwGARt)Hlo1euqTyM>^!HK*!Q2P;4UYrysje@;(<|$&%vQekbn|0Ruu_Io(w4#%p6ld2Yp7tlA`Y$cciThP zKzNGIMPXX%&Ud0uQh!uQZz|FB`4KGD?3!ND?wQt6!n*f4EmCoJUh&b?;B{|lxs#F- z31~HQ`SF4x$&v00@(P+j1pAaj5!s`)b2RDBp*PB=2IB>oBF!*6vwr7Dp%zpAx*dPr zb@Zjq^XjN?O4QcZ*O+8>)|HlrR>oD*?WQl5ri3R#2?*W6iJ>>kH%KnnME&TT@ZzrHS$Q%LC?n|e>V+D+8D zYc4)QddFz7I8#}y#Wj6>4P%34dZH~OUDb?uP%-E zwjXM(?Sg~1!|wI(RVuxbu)-rH+O=igSho_pDCw(c6b=P zKk4ATlB?bj9+HHlh<_!&z0rx13K3ZrAR8W)!@Y}o`?a*JJsD+twZIv`W)@Y?Amu_u zz``@-e2X}27$i(2=9rvIu5uTUOVhzwu%mNazS|lZb&PT;XE2|B&W1>=B58#*!~D&) zfVmJGg8UdP*fx(>Cj^?yS^zH#o-$Q-*$SnK(ZVFkw+er=>N^7!)FtP3y~Xxnu^nzY zikgB>Nj0%;WOltWIob|}%lo?_C7<``a5hEkx&1ku$|)i>Rh6@3h*`slY=9U}(Ql_< zaNG*J8vb&@zpdhAvv`?{=zDedJ23TD&Zg__snRAH4eh~^oawdYi6A3w8<Ozh@Kw)#bdktM^GVb zrG08?0bG?|NG+w^&JvD*7LAbjED{_Zkc`3H!My>0u5Q}m!+6VokMLXxl`Mkd=g&Xx z-a>m*#G3SLlhbKB!)tnzfWOBV;u;ftU}S!NdD5+YtOjLg?X}dl>7m^gOpihrf1;PY zvll&>dIuUGs{Qnd- zwIR3oIrct8Va^Tm0t#(bJD7c$Z7DO9*7NnRZorrSm`b`cxz>OIC;jSE3DO8`hX955ui`s%||YQtt2 z5DNA&pG-V+4oI2s*x^>-$6J?p=I>C|9wZF8z;VjR??Icg?1w2v5Me+FgAeGGa8(3S z4vg*$>zC-WIVZtJ7}o9{D-7d>zCe|z#<9>CFve-OPAYsneTb^JH!Enaza#j}^mXy1 z+ULn^10+rWLF6j2>Ya@@Kq?26>AqK{A_| zQKb*~F1>sE*=d?A?W7N2j?L09_7n+HGi{VY;MoTGr_)G9)ot$p!-UY5zZ2Xtbm=t z@dpPSGwgH=QtIcEulQNI>S-#ifbnO5EWkI;$A|pxJd885oM+ zGZ0_0gDvG8q2xebj+fbCHYfAXuZStH2j~|d^sBAzo46(K8n59+T6rzBwK)^rfPT+B zyIFw)9YC-V^rhtK`!3jrhmW-sTmM+tPH+;nwjL#-SjQPUZ53L@A>y*rt(#M(qsiB2 zx6B)dI}6Wlsw%bJ8h|(lhkJVogQZA&n{?Vgs6gNSXzuZpEyu*xySy8ro07QZ7Vk1!3tJphN_5V7qOiyK8p z#@jcDD8nmtYi1^l8ml;AF<#IPK?!pqf9D4moYk>d99Im}Jtwj6c#+A;f)CQ*f-hZ< z=p_T86jog%!p)D&5g9taSwYi&eP z#JuEK%+NULWus;0w32-SYFku#i}d~+{Pkho&^{;RxzP&0!RCm3-9K6`>KZpnzS6?L z^H^V*s!8<>x8bomvD%rh>Zp3>Db%kyin;qtl+jAv8Oo~1g~mqGAC&Qi_wy|xEt2iz zWAJEfTV%cl2Cs<1L&DLRVVH05EDq`pH7Oh7sR`NNkL%wi}8n>IXcO40hp+J+sC!W?!krJf!GJNE8uj zg-y~Ns-<~D?yqbzVRB}G>0A^f0!^N7l=$m0OdZuqAOQqLc zX?AEGr1Ht+inZ-Qiwnl@Z0qukd__a!C*CKuGdy5#nD7VUBM^6OCpxCa2A(X;e0&V4 zM&WR8+wErQ7UIc6LY~Q9x%Sn*Tn>>P`^t&idaOEnOd(Ufw#>NoR^1QdhJ8s`h^|R_ zXX`c5*O~Xdvh%q;7L!_!ohf$NfEBmCde|#uVZvEo>OfEq%+Ns7&_f$OR9xsihRpBb z+cjk8LyDm@U{YN>+r46?nn{7Gh(;WhFw6GAxtcKD+YWV?uge>;+q#Xx4!GpRkVZYu zzsF}1)7$?%s9g9CH=Zs+B%M_)+~*j3L0&Q9u7!|+T`^O{xE6qvAP?XWv9_MrZKdo& z%IyU)$Q95AB4!#hT!_dA>4e@zjOBD*Y=XjtMm)V|+IXzjuM;(l+8aA5#Kaz_$rR6! zj>#&^DidYD$nUY(D$mH`9eb|dtV0b{S>H6FBfq>t5`;OxA4Nn{J(+XihF(stSche7$es&~N$epi&PDM_N`As;*9D^L==2Q7Z2zD+CiU(|+-kL*VG+&9!Yb3LgPy?A zm7Z&^qRG_JIxK7-FBzZI3Q<;{`DIxtc48k> zc|0dmX;Z=W$+)qE)~`yn6MdoJ4co;%!`ddy+FV538Y)j(vg}5*k(WK)KWZ3WaOG!8 z!syGn=s{H$odtpqFrT#JGM*utN7B((abXnpDM6w56nhw}OY}0TiTG1#f*VFZr+^-g zbP10`$LPq_;PvrA1XXlyx2uM^mrjTzX}w{yuLo-cOClE8MMk47T25G8M!9Z5ypOSV zAJUBGEg5L2fY)ZGJb^E34R2zJ?}Vf>{~gB!8=5Z) z9y$>5c)=;o0HeHHSuE4U)#vG&KF|I%-cF6f$~pdYJWk_dD}iOA>iA$O$+4%@>JU08 zS`ep)$XLPJ+n0_i@PkF#ri6T8?ZeAot$6JIYHm&P6EB=BiaNY|aA$W0I+nz*zkz_z zkEru!tj!QUffq%)8y0y`T&`fuus-1p>=^hnBiBqD^hXrPs`PY9tU3m0np~rISY09> z`P3s=-kt_cYcxWd{de@}TwSqg*xVhp;E9zCsnXo6z z?f&Sv^U7n4`xr=mXle94HzOdN!2kB~4=%)u&N!+2;z6UYKUDqi-s6AZ!haB;@&B`? z_TRX0%@suz^TRdCb?!vNJYPY8L_}&07uySH9%W^Tc&1pia6y1q#?*Drf}GjGbPjBS zbOPcUY#*$3sL2x4v_i*Y=N7E$mR}J%|GUI(>WEr+28+V z%v5{#e!UF*6~G&%;l*q*$V?&r$Pp^sE^i-0$+RH3ERUUdQ0>rAq2(2QAbG}$y{de( z>{qD~GGuOk559Y@%$?N^1ApVL_a704>8OD%8Y%8B;FCt%AoPu8*D1 zLB5X>b}Syz81pn;xnB}%0FnwazlWfUV)Z-~rZg6~b z6!9J$EcE&sEbzcy?CI~=boWA&eeIa%z(7SE^qgVLz??1Vbc1*aRvc%Mri)AJaAG!p z$X!_9Ds;Zz)f+;%s&dRcJt2==P{^j3bf0M=nJd&xwUGlUFn?H=2W(*2I2Gdu zv!gYCwM10aeus)`RIZSrCK=&oKaO_Ry~D1B5!y0R=%!i2*KfXGYX&gNv_u+n9wiR5 z*e$Zjju&ODRW3phN925%S(jL+bCHv6rZtc?!*`1TyYXT6%Ju=|X;6D@lq$8T zW{Y|e39ioPez(pBH%k)HzFITXHvnD6hw^lIoUMA;qAJ^CU?top1fo@s7xT13Fvn1H z6JWa-6+FJF#x>~+A;D~;VDs26>^oH0EI`IYT2iagy23?nyJ==i{g4%HrAf1-*v zK1)~@&(KkwR7TL}L(A@C_S0G;-GMDy=MJn2$FP5s<%wC)4jC5PXoxrQBFZ_k0P{{s@sz+gX`-!=T8rcB(=7vW}^K6oLWMmp(rwDh}b zwaGGd>yEy6fHv%jM$yJXo5oMAQ>c9j`**}F?MCry;T@47@r?&sKHgVe$MCqk#Z_3S z1GZI~nOEN*P~+UaFGnj{{Jo@16`(qVNtbU>O0Hf57-P>x8Jikp=`s8xWs^dAJ9lCQ z)GFm+=OV%AMVqVATtN@|vp61VVAHRn87}%PC^RAzJ%JngmZTasWBAWsoAqBU+8L8u z4A&Pe?fmTm0?mK-BL9t+{y7o(7jm+RpOhL9KnY#E&qu^}B6=K_dB}*VlSEiC9fn)+V=J;OnN)Ta5v66ic1rG+dGAJ1 z1%Zb_+!$=tQ~lxQrzv3x#CPb?CekEkA}0MYSgx$Jdd}q8+R=ma$|&1a#)TQ=l$1tQ z=tL9&_^vJ)Pk}EDO-va`UCT1m#Uty1{v^A3P~83_#v^ozH}6*9mIjIr;t3Uv%@VeW zGL6(CwCUp)Jq%G0bIG%?{_*Y#5IHf*5M@wPo6A{$Um++Co$wLC=J1aoG93&T7Ho}P z=mGEPP7GbvoG!uD$k(H3A$Z))+i{Hy?QHdk>3xSBXR0j!11O^mEe9RHmw!pvzv?Ua~2_l2Yh~_!s1qS`|0~0)YsbHSz8!mG)WiJE| z2f($6TQtt6L_f~ApQYQKSb=`053LgrQq7G@98#igV>y#i==-nEjQ!XNu9 z~;mE+gtj4IDDNQJ~JVk5Ux6&LCSFL!y=>79kE9=V}J7tD==Ga+IW zX)r7>VZ9dY=V&}DR))xUoV!u(Z|%3ciQi_2jl}3=$Agc(`RPb z8kEBpvY>1FGQ9W$n>Cq=DIpski};nE)`p3IUw1Oz0|wxll^)4dq3;CCY@RyJgFgc# zKouFh!`?Xuo{IMz^xi-h=StCis_M7yq$u) z?XHvw*HP0VgR+KR6wI)jEMX|ssqYvSf*_3W8zVTQzD?3>H!#>InzpSO)@SC8q*ii- z%%h}_#0{4JG;Jm`4zg};BPTGkYamx$Xo#O~lBirRY)q=5M45n{GCfV7h9qwyu1NxOMoP4)jjZMxmT|IQQh0U7C$EbnMN<3)Kk?fFHYq$d|ICu>KbY_hO zTZM+uKHe(cIZfEqyzyYSUBZa8;Fcut-GN!HSA9ius`ltNebF46ZX_BbZNU}}ZOm{M2&nANL9@0qvih15(|`S~z}m&h!u4x~(%MAO$jHRWNfuxWF#B)E&g3ghSQ9|> z(MFaLQj)NE0lowyjvg8z0#m6FIuKE9lDO~Glg}nSb7`~^&#(Lw{}GVOS>U)m8bF}x zVjbXljBm34Cs-yM6TVusr+3kYFjr28STT3g056y3cH5Tmge~ASxBj z%|yb>$eF;WgrcOZf569sDZOVwoo%8>XO>XQOX1OyN9I-SQgrm;U;+#3OI(zrWyow3 zk==|{lt2xrQ%FIXOTejR>;wv(Pb8u8}BUpx?yd(Abh6? zsoO3VYWkeLnF43&@*#MQ9-i-d0t*xN-UEyNKeyNMHw|A(k(_6QKO=nKMCxD(W(Yop zsRQ)QeL4X3Lxp^L%wzi2-WVSsf61dqliPUM7srDB?Wm6Lzn0&{*}|IsKQW;02(Y&| zaTKv|`U(pSzuvR6Rduu$wzK_W-Y-7>7s?G$)U}&uK;<>vU}^^ns@Z!p+9?St1s)dG zK%y6xkPyyS1$~&6v{kl?Md6gwM|>mt6Upm>oa8RLD^8T{0?HC!Z>;(Bob7el(DV6x zi`I)$&E&ngwFS@bi4^xFLAn`=fzTC;aimE^!cMI2n@Vo%Ae-ne`RF((&5y6xsjjAZ zVguVoQ?Z9uk$2ON;ersE%PU*xGO@T*;j1BO5#TuZKEf(mB7|g7pcEA=nYJ{s3vlbg zd4-DUlD{*6o%Gc^N!Nptgay>j6E5;3psI+C3Q!1ZIbeCubW%w4pq9)MSDyB{HLm|k zxv-{$$A*pS@csolri$Ge<4VZ}e~78JOL-EVyrbxKra^d{?|NnPp86!q>t<&IP07?Z z^>~IK^k#OEKgRH+LjllZXk7iA>2cfH6+(e&9ku5poo~6y{GC5>(bRK7hwjiurqAiZ zg*DmtgY}v83IjE&AbiWgMyFbaRUPZ{lYiz$U^&Zt2YjG<%m((&_JUbZcfJ22(>bi5 z!J?<7AySj0JZ&<-qXX;mcV!f~>G=sB0KnjWca4}vrtunD^1TrpfeS^4dvFr!65knK zZh`d;*VOkPs4*-9kL>$GP0`(M!j~B;#x?Ba~&s6CopvO86oM?-? zOw#dIRc;6A6T?B`Qp%^<U5 z19x(ywSH$_N+Io!6;e?`tWaM$`=Db!gzx|lQ${DG!zb1Zl&|{kX0y6xvO1o z220r<-oaS^^R2pEyY;=Qllqpmue|5yI~D|iI!IGt@iod{Opz@*ml^w2bNs)p`M(Io z|E;;m*Xpjd9l)4G#KaWfV(t8YUn@A;nK^#xgv=LtnArX|vWQVuw3}B${h+frU2>9^ z!l6)!Uo4`5k`<<;E(ido7M6lKTgWezNLq>U*=uz&s=cc$1%>VrAeOoUtA|T6gO4>UNqsdK=NF*8|~*sl&wI=x9-EGiq*aqV!(VVXA57 zw9*o6Ir8Lj1npUXvlevtn(_+^X5rzdR>#(}4YcB9O50q97%rW2me5_L=%ffYPUSRc z!vv?Kv>dH994Qi>U(a<0KF6NH5b16enCp+mw^Hb3Xs1^tThFpz!3QuN#}KBbww`(h z7GO)1olDqy6?T$()R7y%NYx*B0k_2IBiZ14&8|JPFxeMF{vSTxF-Vi3+ZOI=Thq2} zyQgjYY1_7^ZQHh{?P))4+qUiQJLi1&{yE>h?~jU%tjdV0h|FENbM3X(KnJdPKc?~k zh=^Ixv*+smUll!DTWH!jrV*wSh*(mx0o6}1@JExzF(#9FXgmTXVoU+>kDe68N)dkQ zH#_98Zv$}lQwjKL@yBd;U(UD0UCl322=pav<=6g>03{O_3oKTq;9bLFX1ia*lw;#K zOiYDcBJf)82->83N_Y(J7Kr_3lE)hAu;)Q(nUVydv+l+nQ$?|%MWTy`t>{havFSQloHwiIkGK9YZ79^9?AZo0ZyQlVR#}lF%dn5n%xYksXf8gnBm=wO7g_^! zauQ-bH1Dc@3ItZ-9D_*pH}p!IG7j8A_o94#~>$LR|TFq zZ-b00*nuw|-5C2lJDCw&8p5N~Z1J&TrcyErds&!l3$eSz%`(*izc;-?HAFD9AHb-| z>)id`QCrzRws^9(#&=pIx9OEf2rmlob8sK&xPCWS+nD~qzU|qG6KwA{zbikcfQrdH z+ zQg>O<`K4L8rN7`GJB0*3<3`z({lWe#K!4AZLsI{%z#ja^OpfjU{!{)x0ZH~RB0W5X zTwN^w=|nA!4PEU2=LR05x~}|B&ZP?#pNgDMwD*ajI6oJqv!L81gu=KpqH22avXf0w zX3HjbCI!n9>l046)5rr5&v5ja!xkKK42zmqHzPx$9Nn_MZk`gLeSLgC=LFf;H1O#B zn=8|^1iRrujHfbgA+8i<9jaXc;CQBAmQvMGQPhFec2H1knCK2x!T`e6soyrqCamX% zTQ4dX_E*8so)E*TB$*io{$c6X)~{aWfaqdTh=xEeGvOAN9H&-t5tEE-qso<+C!2>+ zskX51H-H}#X{A75wqFe-J{?o8Bx|>fTBtl&tcbdR|132Ztqu5X0i-pisB-z8n71%q%>EF}yy5?z=Ve`}hVh{Drv1YWL zW=%ug_&chF11gDv3D6B)Tz5g54H0mDHNjuKZ+)CKFk4Z|$RD zfRuKLW`1B>B?*RUfVd0+u8h3r-{@fZ{k)c!93t1b0+Q9vOaRnEn1*IL>5Z4E4dZ!7 ztp4GP-^1d>8~LMeb}bW!(aAnB1tM_*la=Xx)q(I0Y@__Zd$!KYb8T2VBRw%e$iSdZ zkwdMwd}eV9q*;YvrBFTv1>1+}{H!JK2M*C|TNe$ZSA>UHKk);wz$(F$rXVc|sI^lD zV^?_J!3cLM;GJuBMbftbaRUs$;F}HDEDtIeHQ)^EJJ1F9FKJTGH<(Jj`phE6OuvE) zqK^K`;3S{Y#1M@8yRQwH`?kHMq4tHX#rJ>5lY3DM#o@or4&^_xtBC(|JpGTfrbGkA z2Tu+AyT^pHannww!4^!$5?@5v`LYy~T`qs7SYt$JgrY(w%C+IWA;ZkwEF)u5sDvOK zGk;G>Mh&elvXDcV69J_h02l&O;!{$({fng9Rlc3ID#tmB^FIG^w{HLUpF+iB`|

NnX)EH+Nua)3Y(c z&{(nX_ht=QbJ%DzAya}!&uNu!4V0xI)QE$SY__m)SAKcN0P(&JcoK*Lxr@P zY&P=}&B3*UWNlc|&$Oh{BEqwK2+N2U$4WB7Fd|aIal`FGANUa9E-O)!gV`((ZGCc$ zBJA|FFrlg~9OBp#f7aHodCe{6= zay$6vN~zj1ddMZ9gQ4p32(7wD?(dE>KA2;SOzXRmPBiBc6g`eOsy+pVcHu=;Yd8@{ zSGgXf@%sKKQz~;!J;|2fC@emm#^_rnO0esEn^QxXgJYd`#FPWOUU5b;9eMAF zZhfiZb|gk8aJIw*YLp4!*(=3l8Cp{(%p?ho22*vN9+5NLV0TTazNY$B5L6UKUrd$n zjbX%#m7&F#U?QNOBXkiiWB*_tk+H?N3`vg;1F-I+83{M2!8<^nydGr5XX}tC!10&e z7D36bLaB56WrjL&HiiMVtpff|K%|*{t*ltt^5ood{FOG0<>k&1h95qPio)2`eL${YAGIx(b4VN*~nKn6E~SIQUuRH zQ+5zP6jfnP$S0iJ@~t!Ai3o`X7biohli;E zT#yXyl{bojG@-TGZzpdVDXhbmF%F9+-^YSIv|MT1l3j zrxOFq>gd2%U}?6}8mIj?M zc077Zc9fq(-)4+gXv?Az26IO6eV`RAJz8e3)SC7~>%rlzDwySVx*q$ygTR5kW2ds- z!HBgcq0KON9*8Ff$X0wOq$`T7ml(@TF)VeoF}x1OttjuVHn3~sHrMB++}f7f9H%@f z=|kP_?#+fve@{0MlbkC9tyvQ_R?lRdRJ@$qcB(8*jyMyeME5ns6ypVI1Xm*Zr{DuS zZ!1)rQfa89c~;l~VkCiHI|PCBd`S*2RLNQM8!g9L6?n`^evQNEwfO@&JJRme+uopQX0%Jo zgd5G&#&{nX{o?TQwQvF1<^Cg3?2co;_06=~Hcb6~4XWpNFL!WU{+CK;>gH%|BLOh7@!hsa(>pNDAmpcuVO-?;Bic17R}^|6@8DahH)G z!EmhsfunLL|3b=M0MeK2vqZ|OqUqS8npxwge$w-4pFVXFq$_EKrZY?BuP@Az@(k`L z`ViQBSk`y+YwRT;&W| z2e3UfkCo^uTA4}Qmmtqs+nk#gNr2W4 zTH%hhErhB)pkXR{B!q5P3-OM+M;qu~f>}IjtF%>w{~K-0*jPVLl?Chz&zIdxp}bjx zStp&Iufr58FTQ36AHU)0+CmvaOpKF;W@sMTFpJ`j;3d)J_$tNQI^c<^1o<49Z(~K> z;EZTBaVT%14(bFw2ob@?JLQ2@(1pCdg3S%E4*dJ}dA*v}_a4_P(a`cHnBFJxNobAv zf&Zl-Yt*lhn-wjZsq<9v-IsXxAxMZ58C@e0!rzhJ+D@9^3~?~yllY^s$?&oNwyH!#~6x4gUrfxplCvK#!f z$viuszW>MFEcFL?>ux*((!L$;R?xc*myjRIjgnQX79@UPD$6Dz0jutM@7h_pq z0Zr)#O<^y_K6jfY^X%A-ip>P%3saX{!v;fxT-*0C_j4=UMH+Xth(XVkVGiiKE#f)q z%Jp=JT)uy{&}Iq2E*xr4YsJ5>w^=#-mRZ4vPXpI6q~1aFwi+lQcimO45V-JXP;>(Q zo={U`{=_JF`EQj87Wf}{Qy35s8r1*9Mxg({CvOt}?Vh9d&(}iI-quvs-rm~P;eRA@ zG5?1HO}puruc@S{YNAF3vmUc2B4!k*yi))<5BQmvd3tr}cIs#9)*AX>t`=~{f#Uz0 z0&Nk!7sSZwJe}=)-R^$0{yeS!V`Dh7w{w5rZ9ir!Z7Cd7dwZcK;BT#V0bzTt>;@Cl z#|#A!-IL6CZ@eHH!CG>OO8!%G8&8t4)Ro@}USB*k>oEUo0LsljsJ-%5Mo^MJF2I8- z#v7a5VdJ-Cd%(a+y6QwTmi+?f8Nxtm{g-+WGL>t;s#epv7ug>inqimZCVm!uT5Pf6 ziEgQt7^%xJf#!aPWbuC_3Nxfb&CFbQy!(8ANpkWLI4oSnH?Q3f?0k1t$3d+lkQs{~(>06l&v|MpcFsyAv zin6N!-;pggosR*vV=DO(#+}4ps|5$`udE%Kdmp?G7B#y%H`R|i8skKOd9Xzx8xgR$>Zo2R2Ytktq^w#ul4uicxW#{ zFjG_RNlBroV_n;a7U(KIpcp*{M~e~@>Q#Av90Jc5v%0c>egEdY4v3%|K1XvB{O_8G zkTWLC>OZKf;XguMH2-Pw{BKbFzaY;4v2seZV0>^7Q~d4O=AwaPhP3h|!hw5aqOtT@ z!SNz}$of**Bl3TK209@F=Tn1+mgZa8yh(Png%Zd6Mt}^NSjy)etQrF zme*llAW=N_8R*O~d2!apJnF%(JcN??=`$qs3Y+~xs>L9x`0^NIn!8mMRFA_tg`etw z3k{9JAjnl@ygIiJcNHTy02GMAvBVqEss&t2<2mnw!; zU`J)0>lWiqVqo|ex7!+@0i>B~BSU1A_0w#Ee+2pJx0BFiZ7RDHEvE*ptc9md(B{&+ zKE>TM)+Pd>HEmdJao7U@S>nL(qq*A)#eLOuIfAS@j`_sK0UEY6OAJJ-kOrHG zjHx`g!9j*_jRcJ%>CE9K2MVf?BUZKFHY?EpV6ai7sET-tqk=nDFh-(65rhjtlKEY% z@G&cQ<5BKatfdA1FKuB=i>CCC5(|9TMW%K~GbA4}80I5%B}(gck#Wlq@$nO3%@QP_ z8nvPkJFa|znk>V92cA!K1rKtr)skHEJD;k8P|R8RkCq1Rh^&}Evwa4BUJz2f!2=MH zo4j8Y$YL2313}H~F7@J7mh>u%556Hw0VUOz-Un@ZASCL)y8}4XXS`t1AC*^>PLwIc zUQok5PFS=*#)Z!3JZN&eZ6ZDP^-c@StY*t20JhCnbMxXf=LK#;`4KHEqMZ-Ly9KsS zI2VUJGY&PmdbM+iT)zek)#Qc#_i4uH43 z@T5SZBrhNCiK~~esjsO9!qBpaWK<`>!-`b71Y5ReXQ4AJU~T2Njri1CEp5oKw;Lnm)-Y@Z3sEY}XIgSy%xo=uek(kAAH5MsV$V3uTUsoTzxp_rF=tx zV07vlJNKtJhCu`b}*#m&5LV4TAE&%KtHViDAdv#c^x`J7bg z&N;#I2GkF@SIGht6p-V}`!F_~lCXjl1BdTLIjD2hH$J^YFN`7f{Q?OHPFEM$65^!u zNwkelo*5+$ZT|oQ%o%;rBX$+?xhvjb)SHgNHE_yP%wYkkvXHS{Bf$OiKJ5d1gI0j< zF6N}Aq=(WDo(J{e-uOecxPD>XZ@|u-tgTR<972`q8;&ZD!cep^@B5CaqFz|oU!iFj zU0;6fQX&~15E53EW&w1s9gQQ~Zk16X%6 zjG`j0yq}4deX2?Tr(03kg>C(!7a|b9qFI?jcE^Y>-VhudI@&LI6Qa}WQ>4H_!UVyF z((cm&!3gmq@;BD#5P~0;_2qgZhtJS|>WdtjY=q zLnHH~Fm!cxw|Z?Vw8*~?I$g#9j&uvgm7vPr#&iZgPP~v~BI4jOv;*OQ?jYJtzO<^y z7-#C={r7CO810!^s(MT!@@Vz_SVU)7VBi(e1%1rvS!?PTa}Uv`J!EP3s6Y!xUgM^8 z4f!fq<3Wer_#;u!5ECZ|^c1{|q_lh3m^9|nsMR1#Qm|?4Yp5~|er2?W^7~cl;_r4WSme_o68J9p03~Hc%X#VcX!xAu%1`R!dfGJCp zV*&m47>s^%Ib0~-2f$6oSgn3jg8m%UA;ArcdcRyM5;}|r;)?a^D*lel5C`V5G=c~k zy*w_&BfySOxE!(~PI$*dwG><+-%KT5p?whOUMA*k<9*gi#T{h3DAxzAPxN&Xws8o9Cp*`PA5>d9*Z-ynV# z9yY*1WR^D8|C%I@vo+d8r^pjJ$>eo|j>XiLWvTWLl(^;JHCsoPgem6PvegHb-OTf| zvTgsHSa;BkbG=(NgPO|CZu9gUCGr$8*EoH2_Z#^BnxF0yM~t`|9ws_xZ8X8iZYqh! zAh;HXJ)3P&)Q0(&F>!LN0g#bdbis-cQxyGn9Qgh`q+~49Fqd2epikEUw9caM%V6WgP)532RMRW}8gNS%V%Hx7apSz}tn@bQy!<=lbhmAH=FsMD?leawbnP5BWM0 z5{)@EEIYMu5;u)!+HQWhQ;D3_Cm_NADNeb-f56}<{41aYq8p4=93d=-=q0Yx#knGYfXVt z+kMxlus}t2T5FEyCN~!}90O_X@@PQpuy;kuGz@bWft%diBTx?d)_xWd_-(!LmVrh**oKg!1CNF&LX4{*j|) zIvjCR0I2UUuuEXh<9}oT_zT#jOrJAHNLFT~Ilh9hGJPI1<5`C-WA{tUYlyMeoy!+U zhA#=p!u1R7DNg9u4|QfED-2TuKI}>p#2P9--z;Bbf4Op*;Q9LCbO&aL2i<0O$ByoI z!9;Ght733FC>Pz>$_mw(F`zU?`m@>gE`9_p*=7o=7av`-&ifU(^)UU`Kg3Kw`h9-1 z6`e6+im=|m2v`pN(2dE%%n8YyQz;#3Q-|x`91z?gj68cMrHl}C25|6(_dIGk*8cA3 zRHB|Nwv{@sP4W+YZM)VKI>RlB`n=Oj~Rzx~M+Khz$N$45rLn6k1nvvD^&HtsMA4`s=MmuOJID@$s8Ph4E zAmSV^+s-z8cfv~Yd(40Sh4JG#F~aB>WFoX7ykaOr3JaJ&Lb49=B8Vk-SQT9%7TYhv z?-Pprt{|=Y5ZQ1?od|A<_IJU93|l4oAfBm?3-wk{O<8ea+`}u%(kub(LFo2zFtd?4 zwpN|2mBNywv+d^y_8#<$r>*5+$wRTCygFLcrwT(qc^n&@9r+}Kd_u@Ithz(6Qb4}A zWo_HdBj#V$VE#l6pD0a=NfB0l^6W^g`vm^sta>Tly?$E&{F?TTX~DsKF~poFfmN%2 z4x`Dc{u{Lkqz&y!33;X}weD}&;7p>xiI&ZUb1H9iD25a(gI|`|;G^NwJPv=1S5e)j z;U;`?n}jnY6rA{V^ zxTd{bK)Gi^odL3l989DQlN+Zs39Xe&otGeY(b5>rlIqfc7Ap4}EC?j<{M=hlH{1+d zw|c}}yx88_xQr`{98Z!d^FNH77=u(p-L{W6RvIn40f-BldeF-YD>p6#)(Qzf)lfZj z?3wAMtPPp>vMehkT`3gToPd%|D8~4`5WK{`#+}{L{jRUMt zrFz+O$C7y8$M&E4@+p+oV5c%uYzbqd2Y%SSgYy#xh4G3hQv>V*BnuKQhBa#=oZB~w{azUB+q%bRe_R^ z>fHBilnRTUfaJ201czL8^~Ix#+qOHSO)A|xWLqOxB$dT2W~)e-r9;bm=;p;RjYahB z*1hegN(VKK+ztr~h1}YP@6cfj{e#|sS`;3tJhIJK=tVJ-*h-5y9n*&cYCSdg#EHE# zSIx=r#qOaLJoVVf6v;(okg6?*L_55atl^W(gm^yjR?$GplNP>BZsBYEf_>wM0Lc;T zhf&gpzOWNxS>m+mN92N0{;4uw`P+9^*|-1~$uXpggj4- z^SFc4`uzj2OwdEVT@}Q`(^EcQ_5(ZtXTql*yGzdS&vrS_w>~~ra|Nb5abwf}Y!uq6R5f&6g2ge~2p(%c< z@O)cz%%rr4*cRJ5f`n@lvHNk@lE1a*96Kw6lJ~B-XfJW%?&-y?;E&?1AacU@`N`!O z6}V>8^%RZ7SQnZ-z$(jsX`amu*5Fj8g!3RTRwK^`2_QHe;_2y_n|6gSaGyPmI#kA0sYV<_qOZc#-2BO%hX)f$s-Z3xlI!ub z^;3ru11DA`4heAu%}HIXo&ctujzE2!6DIGE{?Zs>2}J+p&C$rc7gJC35gxhflorvsb%sGOxpuWhF)dL_&7&Z99=5M0b~Qa;Mo!j&Ti_kXW!86N%n= zSC@6Lw>UQ__F&+&Rzv?gscwAz8IP!n63>SP)^62(HK98nGjLY2*e^OwOq`3O|C92? z;TVhZ2SK%9AGW4ZavTB9?)mUbOoF`V7S=XM;#3EUpR+^oHtdV!GK^nXzCu>tpR|89 zdD{fnvCaN^^LL%amZ^}-E+214g&^56rpdc@yv0b<3}Ys?)f|fXN4oHf$six)-@<;W&&_kj z-B}M5U*1sb4)77aR=@%I?|Wkn-QJVuA96an25;~!gq(g1@O-5VGo7y&E_srxL6ZfS z*R%$gR}dyONgju*D&?geiSj7SZ@ftyA|}(*Y4KbvU!YLsi1EDQQCnb+-cM=K1io78o!v*);o<XwjaQH%)uIP&Zm?)Nfbfn;jIr z)d#!$gOe3QHp}2NBak@yYv3m(CPKkwI|{;d=gi552u?xj9ObCU^DJFQp4t4e1tPzM zvsRIGZ6VF+{6PvqsplMZWhz10YwS={?`~O0Ec$`-!klNUYtzWA^f9m7tkEzCy<_nS z=&<(awFeZvt51>@o_~>PLs05CY)$;}Oo$VDO)?l-{CS1Co=nxjqben*O1BR>#9`0^ zkwk^k-wcLCLGh|XLjdWv0_Hg54B&OzCE^3NCP}~OajK-LuRW53CkV~Su0U>zN%yQP zH8UH#W5P3-!ToO-2k&)}nFe`t+mdqCxxAHgcifup^gKpMObbox9LFK;LP3}0dP-UW z?Zo*^nrQ6*$FtZ(>kLCc2LY*|{!dUn$^RW~m9leoF|@Jy|M5p-G~j%+P0_#orRKf8 zvuu5<*XO!B?1E}-*SY~MOa$6c%2cM+xa8}_8x*aVn~57v&W(0mqN1W`5a7*VN{SUH zXz98DDyCnX2EPl-`Lesf`=AQT%YSDb`$%;(jUTrNen$NPJrlpPDP}prI>Ml!r6bCT;mjsg@X^#&<}CGf0JtR{Ecwd&)2zuhr#nqdgHj+g2n}GK9CHuwO zk>oZxy{vcOL)$8-}L^iVfJHAGfwN$prHjYV0ju}8%jWquw>}_W6j~m<}Jf!G?~r5&Rx)!9JNX!ts#SGe2HzobV5); zpj@&`cNcO&q+%*<%D7za|?m5qlmFK$=MJ_iv{aRs+BGVrs)98BlN^nMr{V_fcl_;jkzRju+c-y?gqBC_@J0dFLq-D9@VN&-`R9U;nv$Hg?>$oe4N&Ht$V_(JR3TG^! zzJsbQbi zFE6-{#9{G{+Z}ww!ycl*7rRdmU#_&|DqPfX3CR1I{Kk;bHwF6jh0opI`UV2W{*|nn zf_Y@%wW6APb&9RrbEN=PQRBEpM(N1w`81s=(xQj6 z-eO0k9=Al|>Ej|Mw&G`%q8e$2xVz1v4DXAi8G};R$y)ww638Y=9y$ZYFDM$}vzusg zUf+~BPX>(SjA|tgaFZr_e0{)+z9i6G#lgt=F_n$d=beAt0Sa0a7>z-?vcjl3e+W}+ z1&9=|vC=$co}-Zh*%3588G?v&U7%N1Qf-wNWJ)(v`iO5KHSkC5&g7CrKu8V}uQGcfcz zmBz#Lbqwqy#Z~UzHgOQ;Q-rPxrRNvl(&u6ts4~0=KkeS;zqURz%!-ERppmd%0v>iRlEf+H$yl{_8TMJzo0 z>n)`On|7=WQdsqhXI?#V{>+~}qt-cQbokEbgwV3QvSP7&hK4R{Z{aGHVS3;+h{|Hz z6$Js}_AJr383c_+6sNR|$qu6dqHXQTc6?(XWPCVZv=)D#6_;D_8P-=zOGEN5&?~8S zl5jQ?NL$c%O)*bOohdNwGIKM#jSAC?BVY={@A#c9GmX0=T(0G}xs`-%f3r=m6-cpK z!%waekyAvm9C3%>sixdZj+I(wQlbB4wv9xKI*T13DYG^T%}zZYJ|0$Oj^YtY+d$V$ zAVudSc-)FMl|54n=N{BnZTM|!>=bhaja?o7s+v1*U$!v!qQ%`T-6fBvmdPbVmro&d zk07TOp*KuxRUSTLRrBj{mjsnF8`d}rMViY8j`jo~Hp$fkv9F_g(jUo#Arp;Xw0M$~ zRIN!B22~$kx;QYmOkos@%|5k)!QypDMVe}1M9tZfkpXKGOxvKXB!=lo`p?|R1l=tA zp(1}c6T3Fwj_CPJwVsYtgeRKg?9?}%oRq0F+r+kdB=bFUdVDRPa;E~~>2$w}>O>v=?|e>#(-Lyx?nbg=ckJ#5U6;RT zNvHhXk$P}m9wSvFyU3}=7!y?Y z=fg$PbV8d7g25&-jOcs{%}wTDKm>!Vk);&rr;O1nvO0VrU&Q?TtYVU=ir`te8SLlS zKSNmV=+vF|ATGg`4$N1uS|n??f}C_4Sz!f|4Ly8#yTW-FBfvS48Tef|-46C(wEO_%pPhUC5$-~Y?!0vFZ^Gu`x=m7X99_?C-`|h zfmMM&Y@zdfitA@KPw4Mc(YHcY1)3*1xvW9V-r4n-9ZuBpFcf{yz+SR{ zo$ZSU_|fgwF~aakGr(9Be`~A|3)B=9`$M-TWKipq-NqRDRQc}ABo*s_5kV%doIX7LRLRau_gd@Rd_aLFXGSU+U?uAqh z8qusWWcvgQ&wu{|sRXmv?sl=xc<$6AR$+cl& zFNh5q1~kffG{3lDUdvEZu5c(aAG~+64FxdlfwY^*;JSS|m~CJusvi-!$XR`6@XtY2 znDHSz7}_Bx7zGq-^5{stTRy|I@N=>*y$zz>m^}^{d&~h;0kYiq8<^Wq7Dz0w31ShO^~LUfW6rfitR0(=3;Uue`Y%y@ex#eKPOW zO~V?)M#AeHB2kovn1v=n^D?2{2jhIQd9t|_Q+c|ZFaWt+r&#yrOu-!4pXAJuxM+Cx z*H&>eZ0v8Y`t}8{TV6smOj=__gFC=eah)mZt9gwz>>W$!>b3O;Rm^Ig*POZP8Rl0f zT~o=Nu1J|lO>}xX&#P58%Yl z83`HRs5#32Qm9mdCrMlV|NKNC+Z~ z9OB8xk5HJ>gBLi+m@(pvpw)1(OaVJKs*$Ou#@Knd#bk+V@y;YXT?)4eP9E5{J%KGtYinNYJUH9PU3A}66c>Xn zZ{Bn0<;8$WCOAL$^NqTjwM?5d=RHgw3!72WRo0c;+houoUA@HWLZM;^U$&sycWrFd zE7ekt9;kb0`lps{>R(}YnXlyGY}5pPd9zBpgXeJTY_jwaJGSJQC#-KJqmh-;ad&F- z-Y)E>!&`Rz!HtCz>%yOJ|v(u7P*I$jqEY3}(Z-orn4 zlI?CYKNl`6I){#2P1h)y(6?i;^z`N3bxTV%wNvQW+eu|x=kbj~s8rhCR*0H=iGkSj zk23lr9kr|p7#qKL=UjgO`@UnvzU)`&fI>1Qs7ubq{@+lK{hH* zvl6eSb9%yngRn^T<;jG1SVa)eA>T^XX=yUS@NCKpk?ovCW1D@!=@kn;l_BrG;hOTC z6K&H{<8K#dI(A+zw-MWxS+~{g$tI7|SfP$EYKxA}LlVO^sT#Oby^grkdZ^^lA}uEF zBSj$weBJG{+Bh@Yffzsw=HyChS(dtLE3i*}Zj@~!_T-Ay7z=B)+*~3|?w`Zd)Co2t zC&4DyB!o&YgSw+fJn6`sn$e)29`kUwAc+1MND7YjV%lO;H2}fNy>hD#=gT ze+-aFNpyKIoXY~Vq-}OWPBe?Rfu^{ps8>Xy%42r@RV#*QV~P83jdlFNgkPN=T|Kt7 zV*M`Rh*30&AWlb$;ae130e@}Tqi3zx2^JQHpM>j$6x`#{mu%tZlwx9Gj@Hc92IuY* zarmT|*d0E~vt6<+r?W^UW0&#U&)8B6+1+;k^2|FWBRP9?C4Rk)HAh&=AS8FS|NQaZ z2j!iZ)nbEyg4ZTp-zHwVlfLC~tXIrv(xrP8PAtR{*c;T24ycA-;auWsya-!kF~CWZ zw_uZ|%urXgUbc@x=L=_g@QJ@m#5beS@6W195Hn7>_}z@Xt{DIEA`A&V82bc^#!q8$ zFh?z_Vn|ozJ;NPd^5uu(9tspo8t%&-U9Ckay-s@DnM*R5rtu|4)~e)`z0P-sy?)kc zs_k&J@0&0!q4~%cKL)2l;N*T&0;mqX5T{Qy60%JtKTQZ-xb%KOcgqwJmb%MOOKk7N zgq})R_6**{8A|6H?fO+2`#QU)p$Ei2&nbj6TpLSIT^D$|`TcSeh+)}VMb}LmvZ{O| ze*1IdCt3+yhdYVxcM)Q_V0bIXLgr6~%JS<<&dxIgfL=Vnx4YHuU@I34JXA|+$_S3~ zy~X#gO_X!cSs^XM{yzDGNM>?v(+sF#<0;AH^YrE8smx<36bUsHbN#y57K8WEu(`qHvQ6cAZPo=J5C(lSmUCZ57Rj6cx!e^rfaI5%w}unz}4 zoX=nt)FVNV%QDJH`o!u9olLD4O5fl)xp+#RloZlaA92o3x4->?rB4`gS$;WO{R;Z3>cG3IgFX2EA?PK^M}@%1%A;?f6}s&CV$cIyEr#q5;yHdNZ9h{| z-=dX+a5elJoDo?Eq&Og!nN6A)5yYpnGEp}?=!C-V)(*~z-+?kY1Q7qs#Rsy%hu_60rdbB+QQNr?S1 z?;xtjUv|*E3}HmuNyB9aFL5H~3Ho0UsmuMZELp1a#CA1g`P{-mT?BchuLEtK}!QZ=3AWakRu~?f9V~3F;TV`5%9Pcs_$gq&CcU}r8gOO zC2&SWPsSG{&o-LIGTBqp6SLQZPvYKp$$7L4WRRZ0BR$Kf0I0SCFkqveCp@f)o8W)! z$%7D1R`&j7W9Q9CGus_)b%+B#J2G;l*FLz#s$hw{BHS~WNLODV#(!u_2Pe&tMsq={ zdm7>_WecWF#D=?eMjLj=-_z`aHMZ=3_-&E8;ibPmM}61i6J3is*=dKf%HC>=xbj4$ zS|Q-hWQ8T5mWde6h@;mS+?k=89?1FU<%qH9B(l&O>k|u_aD|DY*@~(`_pb|B#rJ&g zR0(~(68fpUPz6TdS@4JT5MOPrqDh5_H(eX1$P2SQrkvN8sTxwV>l0)Qq z0pzTuvtEAKRDkKGhhv^jk%|HQ1DdF%5oKq5BS>szk-CIke{%js?~%@$uaN3^Uz6Wf z_iyx{bZ(;9y4X&>LPV=L=d+A}7I4GkK0c1Xts{rrW1Q7apHf-))`BgC^0^F(>At1* za@e7{lq%yAkn*NH8Q1{@{lKhRg*^TfGvv!Sn*ed*x@6>M%aaqySxR|oNadYt1mpUZ z6H(rupHYf&Z z29$5g#|0MX#aR6TZ$@eGxxABRKakDYtD%5BmKp;HbG_ZbT+=81E&=XRk6m_3t9PvD zr5Cqy(v?gHcYvYvXkNH@S#Po~q(_7MOuCAB8G$a9BC##gw^5mW16cML=T=ERL7wsk zzNEayTG?mtB=x*wc@ifBCJ|irFVMOvH)AFRW8WE~U()QT=HBCe@s$dA9O!@`zAAT) zaOZ7l6vyR+Nk_OOF!ZlZmjoImKh)dxFbbR~z(cMhfeX1l7S_`;h|v3gI}n9$sSQ>+3@AFAy9=B_y$)q;Wdl|C-X|VV3w8 z2S#>|5dGA8^9%Bu&fhmVRrTX>Z7{~3V&0UpJNEl0=N32euvDGCJ>#6dUSi&PxFW*s zS`}TB>?}H(T2lxBJ!V#2taV;q%zd6fOr=SGHpoSG*4PDaiG0pdb5`jelVipkEk%FV zThLc@Hc_AL1#D&T4D=w@UezYNJ%0=f3iVRuVL5H?eeZM}4W*bomebEU@e2d`M<~uW zf#Bugwf`VezG|^Qbt6R_=U0}|=k;mIIakz99*>FrsQR{0aQRP6ko?5<7bkDN8evZ& zB@_KqQG?ErKL=1*ZM9_5?Pq%lcS4uLSzN(Mr5=t6xHLS~Ym`UgM@D&VNu8e?_=nSFtF$u@hpPSmI4Vo_t&v?>$~K4y(O~Rb*(MFy_igM7 z*~yYUyR6yQgzWnWMUgDov!!g=lInM+=lOmOk4L`O?{i&qxy&D*_qorRbDwj6?)!ef z#JLd7F6Z2I$S0iYI={rZNk*<{HtIl^mx=h>Cim*04K4+Z4IJtd*-)%6XV2(MCscPiw_a+y*?BKbTS@BZ3AUao^%Zi#PhoY9Vib4N>SE%4>=Jco0v zH_Miey{E;FkdlZSq)e<{`+S3W=*ttvD#hB8w=|2aV*D=yOV}(&p%0LbEWH$&@$X3x~CiF-?ejQ*N+-M zc8zT@3iwkdRT2t(XS`d7`tJQAjRmKAhiw{WOqpuvFp`i@Q@!KMhwKgsA}%@sw8Xo5Y=F zhRJZg)O4uqNWj?V&&vth*H#je6T}}p_<>!Dr#89q@uSjWv~JuW(>FqoJ5^ho0%K?E z9?x_Q;kmcsQ@5=}z@tdljMSt9-Z3xn$k)kEjK|qXS>EfuDmu(Z8|(W?gY6-l z@R_#M8=vxKMAoi&PwnaIYw2COJM@atcgfr=zK1bvjW?9B`-+Voe$Q+H$j!1$Tjn+* z&LY<%)L@;zhnJlB^Og6I&BOR-m?{IW;tyYC%FZ!&Z>kGjHJ6cqM-F z&19n+e1=9AH1VrVeHrIzqlC`w9=*zfmrerF?JMzO&|Mmv;!4DKc(sp+jy^Dx?(8>1 zH&yS_4yL7m&GWX~mdfgH*AB4{CKo;+egw=PrvkTaoBU+P-4u?E|&!c z)DKc;>$$B6u*Zr1SjUh2)FeuWLWHl5TH(UHWkf zLs>7px!c5n;rbe^lO@qlYLzlDVp(z?6rPZel=YB)Uv&n!2{+Mb$-vQl=xKw( zve&>xYx+jW_NJh!FV||r?;hdP*jOXYcLCp>DOtJ?2S^)DkM{{Eb zS$!L$e_o0(^}n3tA1R3-$SNvgBq;DOEo}fNc|tB%%#g4RA3{|euq)p+xd3I8^4E&m zFrD%}nvG^HUAIKe9_{tXB;tl|G<%>yk6R;8L2)KUJw4yHJXUOPM>(-+jxq4R;z8H#>rnJy*)8N+$wA$^F zN+H*3t)eFEgxLw+Nw3};4WV$qj&_D`%ADV2%r zJCPCo%{=z7;`F98(us5JnT(G@sKTZ^;2FVitXyLe-S5(hV&Ium+1pIUB(CZ#h|g)u zSLJJ<@HgrDiA-}V_6B^x1>c9B6%~847JkQ!^KLZ2skm;q*edo;UA)~?SghG8;QbHh z_6M;ouo_1rq9=x$<`Y@EA{C%6-pEV}B(1#sDoe_e1s3^Y>n#1Sw;N|}8D|s|VPd+g z-_$QhCz`vLxxrVMx3ape1xu3*wjx=yKSlM~nFgkNWb4?DDr*!?U)L_VeffF<+!j|b zZ$Wn2$TDv3C3V@BHpSgv3JUif8%hk%OsGZ=OxH@8&4`bbf$`aAMchl^qN>Eyu3JH} z9-S!x8-s4fE=lad%Pkp8hAs~u?|uRnL48O|;*DEU! zuS0{cpk%1E0nc__2%;apFsTm0bKtd&A0~S3Cj^?72-*Owk3V!ZG*PswDfS~}2<8le z5+W^`Y(&R)yVF*tU_s!XMcJS`;(Tr`J0%>p=Z&InR%D3@KEzzI+-2)HK zuoNZ&o=wUC&+*?ofPb0a(E6(<2Amd6%uSu_^-<1?hsxs~0K5^f(LsGqgEF^+0_H=uNk9S0bb!|O8d?m5gQjUKevPaO+*VfSn^2892K~%crWM8+6 z25@V?Y@J<9w%@NXh-2!}SK_(X)O4AM1-WTg>sj1{lj5@=q&dxE^9xng1_z9w9DK>| z6Iybcd0e zyi;Ew!KBRIfGPGytQ6}z}MeXCfLY0?9%RiyagSp_D1?N&c{ zyo>VbJ4Gy`@Fv+5cKgUgs~na$>BV{*em7PU3%lloy_aEovR+J7TfQKh8BJXyL6|P8un-Jnq(ghd!_HEOh$zlv2$~y3krgeH;9zC}V3f`uDtW(%mT#944DQa~^8ZI+zAUu4U(j0YcDfKR$bK#gvn_{JZ>|gZ5+)u?T$w7Q%F^;!Wk?G z(le7r!ufT*cxS}PR6hIVtXa)i`d$-_1KkyBU>qmgz-=T};uxx&sKgv48akIWQ89F{ z0XiY?WM^~;|T8zBOr zs#zuOONzH?svv*jokd5SK8wG>+yMC)LYL|vLqm^PMHcT=`}V$=nIRHe2?h)8WQa6O zPAU}d`1y(>kZiP~Gr=mtJLMu`i<2CspL|q2DqAgAD^7*$xzM`PU4^ga`ilE134XBQ z99P(LhHU@7qvl9Yzg$M`+dlS=x^(m-_3t|h>S}E0bcFMn=C|KamQ)=w2^e)35p`zY zRV8X?d;s^>Cof2SPR&nP3E+-LCkS0J$H!eh8~k0qo$}00b=7!H_I2O+Ro@3O$nPdm ztmbOO^B+IHzQ5w>@@@J4cKw5&^_w6s!s=H%&byAbUtczPQ7}wfTqxxtQNfn*u73Qw zGuWsrky_ajPx-5`R<)6xHf>C(oqGf_Fw|-U*GfS?xLML$kv;h_pZ@Kk$y0X(S+K80 z6^|z)*`5VUkawg}=z`S;VhZhxyDfrE0$(PMurAxl~<>lfZa>JZ288ULK7D` zl9|#L^JL}Y$j*j`0-K6kH#?bRmg#5L3iB4Z)%iF@SqT+Lp|{i`m%R-|ZE94Np7Pa5 zCqC^V3}B(FR340pmF*qaa}M}+h6}mqE~7Sh!9bDv9YRT|>vBNAqv09zXHMlcuhKD| zcjjA(b*XCIwJ33?CB!+;{)vX@9xns_b-VO{i0y?}{!sdXj1GM8+$#v>W7nw;+O_9B z_{4L;C6ol?(?W0<6taGEn1^uG=?Q3i29sE`RfYCaV$3DKc_;?HsL?D_fSYg}SuO5U zOB_f4^vZ_x%o`5|C@9C5+o=mFy@au{s)sKw!UgC&L35aH(sgDxRE2De%(%OT=VUdN ziVLEmdOvJ&5*tCMKRyXctCwQu_RH%;m*$YK&m;jtbdH#Ak~13T1^f89tn`A%QEHWs~jnY~E}p_Z$XC z=?YXLCkzVSK+Id`xZYTegb@W8_baLt-Fq`Tv|=)JPbFsKRm)4UW;yT+J`<)%#ue9DPOkje)YF2fsCilK9MIIK>p*`fkoD5nGfmLwt)!KOT+> zOFq*VZktDDyM3P5UOg`~XL#cbzC}eL%qMB=Q5$d89MKuN#$6|4gx_Jt0Gfn8w&q}%lq4QU%6#jT*MRT% zrLz~C8FYKHawn-EQWN1B75O&quS+Z81(zN)G>~vN8VwC+e+y(`>HcxC{MrJ;H1Z4k zZWuv$w_F0-Ub%MVcpIc){4PGL^I7M{>;hS?;eH!;gmcOE66z3;Z1Phqo(t zVP(Hg6q#0gIKgsg7L7WE!{Y#1nI(45tx2{$34dDd#!Z0NIyrm)HOn5W#7;f4pQci# zDW!FI(g4e668kI9{2+mLwB+=#9bfqgX%!B34V-$wwSN(_cm*^{y0jQtv*4}eO^sOV z*9xoNvX)c9isB}Tgx&ZRjp3kwhTVK?r9;n!x>^XYT z@Q^7zp{rkIs{2mUSE^2!Gf6$6;j~&4=-0cSJJDizZp6LTe8b45;{AKM%v99}{{FfC zz709%u0mC=1KXTo(=TqmZQ;c?$M3z(!xah>aywrj40sc2y3rKFw4jCq+Y+u=CH@_V zxz|qeTwa>+<|H%8Dz5u>ZI5MmjTFwXS-Fv!TDd*`>3{krWoNVx$<133`(ftS?ZPyY z&4@ah^3^i`vL$BZa>O|Nt?ucewzsF)0zX3qmM^|waXr=T0pfIb0*$AwU=?Ipl|1Y; z*Pk6{C-p4MY;j@IJ|DW>QHZQJcp;Z~?8(Q+Kk3^0qJ}SCk^*n4W zu9ZFwLHUx-$6xvaQ)SUQcYd6fF8&x)V`1bIuX@>{mE$b|Yd(qomn3;bPwnDUc0F=; zh*6_((%bqAYQWQ~odER?h>1mkL4kpb3s7`0m@rDKGU*oyF)$j~Ffd4fXV$?`f~rHf zB%Y)@5SXZvfwm10RY5X?TEo)PK_`L6qgBp=#>fO49$D zDq8Ozj0q6213tV5Qq=;fZ0$|KroY{Dz=l@lU^J)?Ko@ti20TRplXzphBi>XGx4bou zEWrkNjz0t5j!_ke{g5I#PUlEU$Km8g8TE|XK=MkU@PT4T><2OVamoK;wJ}3X0L$vX zgd7gNa359*nc)R-0!`2X@FOTB`+oETOPc=ubp5R)VQgY+5BTZZJ2?9QwnO=dnulIUF3gFn;BODC2)65)HeVd%t86sL7Rv^Y+nbn+&l z6BAJY(ETvwI)Ts$aiE8rht4KD*qNyE{8{x6R|%akbTBzw;2+6Echkt+W+`u^XX z_z&x%nnW$ZR+`W ze|#J8f4A@M|F5BpfUJb5h>|j$jOe}0oE!`Zf6fM>CR?!y@zU(cL8NsKk`a z6tx5mAkdjD;J=LcJ;;Aw8p!v#ouk>mUDZF@ zK>yvw%+bKu+T{Nk@LZ;zkYy0HBKw06_IWcMHo*0HKpTsEFZhn5qCHH9j z)|XpN&{`!0a>Vl+PmdQc)Yg4A(AG-z!+@Q#eHr&g<9D?7E)_aEB?s_rx>UE9TUq|? z;(ggJt>9l?C|zoO@5)tu?EV0x_7T17q4fF-q3{yZ^ipUbKcRZ4Qftd!xO(#UGhb2y>?*@{xq%`(-`2T^vc=#< zx!+@4pRdk&*1ht2OWk^Z5IAQ0YTAXLkL{(D*$gENaD)7A%^XXrCchN&z2x+*>o2FwPFjWpeaL=!tzv#JOW#( z$B)Nel<+$bkH1KZv3&-}=SiG~w2sbDbAWarg%5>YbC|}*d9hBjBkR(@tyM0T)FO$# zPtRXukGPnOd)~z=?avu+4Co@wF}1T)-uh5jI<1$HLtyDrVak{gw`mcH@Q-@wg{v^c zRzu}hMKFHV<8w}o*yg6p@Sq%=gkd~;`_VGTS?L@yVu`xuGy+dH6YOwcP6ZE`_0rK% zAx5!FjDuss`FQ3eF|mhrWkjux(Pny^k$u_)dyCSEbAsecHsq#8B3n3kDU(zW5yE|( zgc>sFQywFj5}U*qtF9Y(bi*;>B7WJykcAXF86@)z|0-Vm@jt!EPoLA6>r)?@DIobIZ5Sx zsc@OC{b|3%vaMbyeM|O^UxEYlEMHK4r)V-{r)_yz`w1*xV0|lh-LQOP`OP`Pk1aW( z8DSlGN>Ts|n*xj+%If~+E_BxK)~5T#w6Q1WEKt{!Xtbd`J;`2a>8boRo;7u2M&iOop4qcy<)z023=oghSFV zST;?S;ye+dRQe>ygiJ6HCv4;~3DHtJ({fWeE~$H@mKn@Oh6Z(_sO>01JwH5oA4nvK zr5Sr^g+LC zLt(i&ecdmqsIJGNOSUyUpglvhhrY8lGkzO=0USEKNL%8zHshS>Qziu|`eyWP^5xL4 zRP122_dCJl>hZc~?58w~>`P_s18VoU|7(|Eit0-lZRgLTZKNq5{k zE?V=`7=R&ro(X%LTS*f+#H-mGo_j3dm@F_krAYegDLk6UV{`UKE;{YSsn$ z(yz{v1@p|p!0>g04!eRSrSVb>MQYPr8_MA|MpoGzqyd*$@4j|)cD_%^Hrd>SorF>@ zBX+V<@vEB5PRLGR(uP9&U&5=(HVc?6B58NJT_igiAH*q~Wb`dDZpJSKfy5#Aag4IX zj~uv74EQ_Q_1qaXWI!7Vf@ZrdUhZFE;L&P_Xr8l@GMkhc#=plV0+g(ki>+7fO%?Jb zl+bTy7q{w^pTb{>(Xf2q1BVdq?#f=!geqssXp z4pMu*q;iiHmA*IjOj4`4S&|8@gSw*^{|PT}Aw~}ZXU`6=vZB=GGeMm}V6W46|pU&58~P+?LUs%n@J}CSrICkeng6YJ^M? zS(W?K4nOtoBe4tvBXs@@`i?4G$S2W&;$z8VBSM;Mn9 zxcaEiQ9=vS|bIJ>*tf9AH~m&U%2+Dim<)E=}KORp+cZ^!@wI`h1NVBXu{@%hB2Cq(dXx_aQ9x3mr*fwL5!ZryQqi|KFJuzvP zK1)nrKZ7U+B{1ZmJub?4)Ln^J6k!i0t~VO#=q1{?T)%OV?MN}k5M{}vjyZu#M0_*u z8jwZKJ#Df~1jcLXZL7bnCEhB6IzQZ-GcoQJ!16I*39iazoVGugcKA{lhiHg4Ta2fD zk1Utyc5%QzZ$s3;p0N+N8VX{sd!~l*Ta3|t>lhI&G`sr6L~G5Lul`>m z{!^INm?J|&7X=;{XveF!(b*=?9NAp4y&r&N3(GKcW4rS(Ejk|Lzs1PrxPI_owB-`H zg3(Rruh^&)`TKA6+_!n>RdI6pw>Vt1_j&+bKIaMTYLiqhZ#y_=J8`TK{Jd<7l9&sY z^^`hmi7^14s16B6)1O;vJWOF$=$B5ONW;;2&|pUvJlmeUS&F;DbSHCrEb0QBDR|my zIs+pE0Y^`qJTyH-_mP=)Y+u^LHcuZhsM3+P||?+W#V!_6E-8boP#R-*na4!o-Q1 zVthtYhK{mDhF(&7Okzo9dTi03X(AE{8cH$JIg%MEQca`S zy@8{Fjft~~BdzWC(di#X{ny;!yYGK9b@=b|zcKZ{vv4D8i+`ilOPl;PJl{!&5-0!w z^fOl#|}vVg%=n)@_e1BrP)`A zKPgs`O0EO}Y2KWLuo`iGaKu1k#YR6BMySxQf2V++Wo{6EHmK>A~Q5o73yM z-RbxC7Qdh0Cz!nG+7BRZE>~FLI-?&W_rJUl-8FDIaXoNBL)@1hwKa^wOr1($*5h~T zF;%f^%<$p8Y_yu(JEg=c_O!aZ#)Gjh$n(hfJAp$C2he555W5zdrBqjFmo|VY+el;o z=*D_w|GXG|p0**hQ7~9-n|y5k%B}TAF0iarDM!q-jYbR^us(>&y;n^2l0C%@2B}KM zyeRT9)oMt97Agvc4sEKUEy%MpXr2vz*lb zh*L}}iG>-pqDRw7ud{=FvTD?}xjD)w{`KzjNom-$jS^;iw0+7nXSnt1R@G|VqoRhE%12nm+PH?9`(4rM0kfrZzIK9JU=^$YNyLvAIoxl#Q)xxDz!^0@zZ zSCs$nfcxK_vRYM34O<1}QHZ|hp4`ioX3x8(UV(FU$J@o%tw3t4k1QPmlEpZa2IujG&(roX_q*%e`Hq|);0;@k z0z=fZiFckp#JzW0p+2A+D$PC~IsakhJJkG(c;CqAgFfU0Z`u$PzG~-9I1oPHrCw&)@s^Dc~^)#HPW0Ra}J^=|h7Fs*<8|b13ZzG6MP*Q1dkoZ6&A^!}|hbjM{2HpqlSXv_UUg1U4gn z3Q)2VjU^ti1myodv+tjhSZp%D978m~p& z43uZUrraHs80Mq&vcetqfQpQP?m!CFj)44t8Z}k`E798wxg&~aCm+DBoI+nKq}&j^ zlPY3W$)K;KtEajks1`G?-@me7C>{PiiBu+41#yU_c(dITaqE?IQ(DBu+c^Ux!>pCj zLC|HJGU*v+!it1(;3e`6igkH(VA)-S+k(*yqxMgUah3$@C zz`7hEM47xr>j8^g`%*f=6S5n>z%Bt_Fg{Tvmr+MIsCx=0gsu_sF`q2hlkEmisz#Fy zj_0;zUWr;Gz}$BS%Y`meb(=$d%@Crs(OoJ|}m#<7=-A~PQbyN$x%2iXP2@e*nO0b7AwfH8cCUa*Wfu@b)D_>I*%uE4O3 z(lfnB`-Xf*LfC)E}e?%X2kK7DItK6Tf<+M^mX0Ijf_!IP>7c8IZX%8_#0060P{QMuV^B9i<^E`_Qf0pv9(P%_s8D`qvDE9LK9u-jB}J2S`(mCO&XHTS04Z5Ez*vl^T%!^$~EH8M-UdwhegL>3IQ*)(MtuH2Xt1p!fS4o~*rR?WLxlA!sjc2(O znjJn~wQ!Fp9s2e^IWP1C<4%sFF}T4omr}7+4asciyo3DntTgWIzhQpQirM$9{EbQd z3jz9vS@{aOqTQHI|l#aUV@2Q^Wko4T0T04Me4!2nsdrA8QY1%fnAYb~d2GDz@lAtfcHq(P7 zaMBAGo}+NcE-K*@9y;Vt3*(aCaMKXBB*BJcD_Qnxpt75r?GeAQ}*|>pYJE=uZb73 zC>sv)18)q#EGrTG6io*}JLuB_jP3AU1Uiu$D7r|2_zlIGb9 zjhst#ni)Y`$)!fc#reM*$~iaYoz~_Cy7J3ZTiPm)E?%`fbk`3Tu-F#`{i!l5pNEn5 zO-Tw-=TojYhzT{J=?SZj=Z8#|eoF>434b-DXiUsignxXNaR3 zm_}4iWU$gt2Mw5NvZ5(VpF`?X*f2UZDs1TEa1oZCif?Jdgr{>O~7}-$|BZ7I(IKW`{f;@|IZFX*R8&iT= zoWstN8&R;}@2Ka%d3vrLtR|O??ben;k8QbS-WB0VgiCz;<$pBmIZdN!aalyCSEm)crpS9dcD^Y@XT1a3+zpi-`D}e#HV<} z$Y(G&o~PvL-xSVD5D?JqF3?B9rxGWeb=oEGJ3vRp5xfBPlngh1O$yI95EL+T8{GC@ z98i1H9KhZGFl|;`)_=QpM6H?eDPpw~^(aFQWwyXZ8_EEE4#@QeT_URray*mEOGsGc z6|sdXtq!hVZo=d#+9^@lm&L5|q&-GDCyUx#YQiccq;spOBe3V+VKdjJA=IL=Zn%P} zNk=_8u}VhzFf{UYZV0`lUwcD&)9AFx0@Fc6LD9A6Rd1=ga>Mi0)_QxM2ddCVRmZ0d z+J=uXc(?5JLX3=)e)Jm$HS2yF`44IKhwRnm2*669_J=2LlwuF5$1tAo@ROSU@-y+;Foy2IEl2^V1N;fk~YR z?&EP8#t&m0B=?aJeuz~lHjAzRBX>&x=A;gIvb>MD{XEV zV%l-+9N-)i;YH%nKP?>f`=?#`>B(`*t`aiPLoQM(a6(qs4p5KFjDBN?8JGrf3z8>= zi7sD)c)Nm~x{e<^jy4nTx${P~cwz_*a>%0_;ULou3kHCAD7EYkw@l$8TN#LO9jC( z1BeFW`k+bu5e8Ns^a8dPcjEVHM;r6UX+cN=Uy7HU)j-myRU0wHd$A1fNI~`4;I~`zC)3ul#8#^rXVSO*m}Ag>c%_;nj=Nv$rCZ z*~L@C@OZg%Q^m)lc-kcX&a*a5`y&DaRxh6O*dfhLfF+fU5wKs(1v*!TkZidw*)YBP za@r`3+^IHRFeO%!ai%rxy;R;;V^Fr=OJlpBX;(b*3+SIw}7= zIq$*Thr(Zft-RlY)D3e8V;BmD&HOfX+E$H#Y@B3?UL5L~_fA-@*IB-!gItK7PIgG9 zgWuGZK_nuZjHVT_Fv(XxtU%)58;W39vzTI2n&)&4Dmq7&JX6G>XFaAR{7_3QB6zsT z?$L8c*WdN~nZGiscY%5KljQARN;`w$gho=p006z;n(qIQ*Zu<``TMO3n0{ARL@gYh zoRwS*|Niw~cR!?hE{m*y@F`1)vx-JRfqET=dJ5_(076st(=lFfjtKHoYg`k3oNmo_ zNbQEw8&sO5jAYmkD|Zaz_yUb0rC})U!rCHOl}JhbYIDLzLvrZVw0~JO`d*6f;X&?V=#T@ND*cv^I;`sFeq4 z##H5;gpZTb^0Hz@3C*~u0AqqNZ-r%rN3KD~%Gw`0XsIq$(^MEb<~H(2*5G^<2(*aI z%7}WB+TRlMIrEK#s0 z93xn*Ohb=kWFc)BNHG4I(~RPn-R8#0lqyBBz5OM6o5|>x9LK@%HaM}}Y5goCQRt2C z{j*2TtT4ne!Z}vh89mjwiSXG=%DURar~=kGNNaO_+Nkb+tRi~Rkf!7a$*QlavziD( z83s4GmQ^Wf*0Bd04f#0HX@ua_d8 z23~z*53ePD6@xwZ(vdl0DLc=>cPIOPOdca&MyR^jhhKrdQO?_jJh`xV3GKz&2lvP8 zEOwW6L*ufvK;TN{=S&R@pzV^U=QNk^Ec}5H z+2~JvEVA{`uMAr)?Kf|aW>33`)UL@bnfIUQc~L;TsTQ6>r-<^rB8uoNOJ>HWgqMI8 zSW}pZmp_;z_2O5_RD|fGyTxaxk53Hg_3Khc<8AUzV|ZeK{fp|Ne933=1&_^Dbv5^u zB9n=*)k*tjHDRJ@$bp9mrh}qFn*s}npMl5BMDC%Hs0M0g-hW~P*3CNG06G!MOPEQ_ zi}Qs-6M8aMt;sL$vlmVBR^+Ry<64jrm1EI1%#j?c?4b*7>)a{aDw#TfTYKq+SjEFA z(aJ&z_0?0JB83D-i3Vh+o|XV4UP+YJ$9Boid2^M2en@APw&wx7vU~t$r2V`F|7Qfo z>WKgI@eNBZ-+Og<{u2ZiG%>YvH2L3fNpV9J;WLJoBZda)01Rn;o@){01{7E#ke(7U zHK>S#qZ(N=aoae*4X!0A{)nu0R_sKpi1{)u>GVjC+b5Jyl6#AoQ-1_3UDovNSo`T> z?c-@7XX*2GMy?k?{g)7?Sv;SJkmxYPJPs!&QqB12ejq`Lee^-cDveVWL^CTUldb(G zjDGe(O4P=S{4fF=#~oAu>LG>wrU^z_?3yt24FOx>}{^lCGh8?vtvY$^hbZ)9I0E3r3NOlb9I?F-Yc=r$*~l`4N^xzlV~N zl~#oc>U)Yjl0BxV>O*Kr@lKT{Z09OXt2GlvE38nfs+DD7exl|&vT;)>VFXJVZp9Np zDK}aO;R3~ag$X*|hRVY3OPax|PG`@_ESc8E!mHRByJbZQRS38V2F__7MW~sgh!a>98Q2%lUNFO=^xU52|?D=IK#QjwBky-C>zOWlsiiM&1n z;!&1((Xn1$9K}xabq~222gYvx3hnZPg}VMF_GV~5ocE=-v>V=T&RsLBo&`)DOyIj* zLV{h)JU_y*7SdRtDajP_Y+rBkNN*1_TXiKwHH2&p51d(#zv~s#HwbNy?<+(=9WBvo zw2hkk2Dj%kTFhY+$T+W-b7@qD!bkfN#Z2ng@Pd=i3-i?xYfs5Z*1hO?kd7Sp^9`;Y zM2jeGg<-nJD1er@Pc_cSY7wo5dzQX44=%6rn}P_SRbpzsA{6B+!$3B0#;}qwO37G^ zL(V_5JK`XT?OHVk|{_$vQ|oNEpab*BO4F zUTNQ7RUhnRsU`TK#~`)$icsvKh~(pl=3p6m98@k3P#~upd=k*u20SNcb{l^1rUa)>qO997)pYRWMncC8A&&MHlbW?7i^7M`+B$hH~Y|J zd>FYOGQ;j>Zc2e7R{KK7)0>>nn_jYJy&o@sK!4G>-rLKM8Hv)f;hi1D2fAc$+six2 zyVZ@wZ6x|fJ!4KrpCJY=!Mq0;)X)OoS~{Lkh6u8J`eK%u0WtKh6B>GW_)PVc zl}-k`p09qwGtZ@VbYJC!>29V?Dr>>vk?)o(x?!z*9DJ||9qG-&G~#kXxbw{KKYy}J zQKa-dPt~M~E}V?PhW0R26xdA%1T*%ra6SguGu50YHngOTIv)@N|YttEXo#OZfgtP7;H?EeZZxo<}3YlYxtBq znJ!WFR^tmGf0Py}N?kZ(#=VtpC@%xJkDmfcCoBTxq zr_|5gP?u1@vJZbxPZ|G0AW4=tpb84gM2DpJU||(b8kMOV1S3|(yuwZJ&rIiFW(U;5 zUtAW`O6F6Zy+eZ1EDuP~AAHlSY-+A_eI5Gx)%*uro5tljy}kCZU*_d7)oJ>oQSZ3* zneTn`{gnNC&uJd)0aMBzAg021?YJ~b(fmkwZAd696a=0NzBAqBN54KuNDwa*no(^O z6p05bioXUR^uXjpTol*ppHp%1v9e)vkoUAUJyBx3lw0UO39b0?^{}yb!$yca(@DUn zCquRF?t=Zb9`Ed3AI6|L{eX~ijVH`VzSMheKoP7LSSf4g>md>`yi!TkoG5P>Ofp+n z(v~rW+(5L96L{vBb^g51B=(o)?%%xhvT*A5btOpw(TKh^g^4c zw>0%X!_0`{iN%RbVk+A^f{w-4-SSf*fu@FhruNL##F~sF24O~u zyYF<3el2b$$wZ_|uW#@Ak+VAGk#e|kS8nL1g>2B-SNMjMp^8;-FfeofY2fphFHO!{ z*!o4oTb{4e;S<|JEs<1_hPsmAlVNk?_5-Fp5KKU&d#FiNW~Y+pVFk@Cua1I{T+1|+ zHx6rFMor)7L)krbilqsWwy@T+g3DiH5MyVf8Wy}XbEaoFIDr~y;@r&I>FMW{ z?Q+(IgyebZ)-i4jNoXQhq4Muy9Fv+OxU;9_Jmn+<`mEC#%2Q_2bpcgzcinygNI!&^ z=V$)o2&Yz04~+&pPWWn`rrWxJ&}8khR)6B(--!9Q zubo}h+1T)>a@c)H^i``@<^j?|r4*{;tQf78(xn0g39IoZw0(CwY1f<%F>kEaJ zp9u|IeMY5mRdAlw*+gSN^5$Q)ShM<~E=(c8QM+T-Qk)FyKz#Sw0EJ*edYcuOtO#~Cx^(M7w5 z3)rl#L)rF|(Vun2LkFr!rg8Q@=r>9p>(t3Gf_auiJ2Xx9HmxYTa|=MH_SUlYL`mz9 zTTS$`%;D-|Jt}AP1&k7PcnfFNTH0A-*FmxstjBDiZX?}%u%Yq94$fUT&z6od+(Uk> zuqsld#G(b$G8tus=M!N#oPd|PVFX)?M?tCD0tS%2IGTfh}3YA3f&UM)W$_GNV8 zQo+a(ml2Km4o6O%gKTCSDNq+#zCTIQ1*`TIJh~k6Gp;htHBFnne))rlFdGqwC6dx2+La1&Mnko*352k0y z+tQcwndQlX`nc6nb$A9?<-o|r*%aWXV#=6PQic0Ok_D;q>wbv&j7cKc!w4~KF#-{6 z(S%6Za)WpGIWf7jZ3svNG5OLs0>vCL9{V7cgO%zevIVMH{WgP*^D9ws&OqA{yr|m| zKD4*07dGXshJHd#e%x%J+qmS^lS|0Bp?{drv;{@{l9ArPO&?Q5=?OO9=}h$oVe#3b z3Yofj&Cb}WC$PxmRRS)H%&$1-)z7jELS}!u!zQ?A^Y{Tv4QVt*vd@uj-^t2fYRzQj zfxGR>-q|o$3sGn^#VzZ!QQx?h9`njeJry}@x?|k0-GTTA4y3t2E`3DZ!A~D?GiJup z)8%PK2^9OVRlP(24P^4_<|D=H^7}WlWu#LgsdHzB%cPy|f8dD3|A^mh4WXxhLTVu_ z@abE{6Saz|Y{rXYPd4$tfPYo}ef(oQWZ=4Bct-=_9`#Qgp4ma$n$`tOwq#&E18$B; z@Bp)bn3&rEi0>fWWZ@7k5WazfoX`SCO4jQWwVuo+$PmSZn^Hz?O(-tW@*DGxuf)V1 zO_xm&;NVCaHD4dqt(-MlszI3F-p?0!-e$fbiCeuaw66h^TTDLWuaV<@C-`=Xe5WL) zwooG7h>4&*)p3pKMS3O!4>-4jQUN}iAMQ)2*70?hP~)TzzR?-f@?Aqy$$1Iy8VGG$ zMM?8;j!pUX7QQD$gRc_#+=raAS577ga-w?jd`vCiN5lu)dEUkkUPl9!?{$IJNxQys z*E4e$eF&n&+AMRQR2gcaFEjAy*r)G!s(P6D&TfoApMFC_*Ftx0|D0@E-=B7tezU@d zZ{hGiN;YLIoSeRS;9o%dEua4b%4R3;$SugDjP$x;Z!M!@QibuSBb)HY!3zJ7M;^jw zlx6AD50FD&p3JyP*>o+t9YWW8(7P2t!VQQ21pHJOcG_SXQD;(5aX#M6x##5H_Re>6lPyDCjxr*R(+HE%c&QN+b^tbT zXBJk?p)zhJj#I?&Y2n&~XiytG9!1ox;bw5Rbj~)7c(MFBb4>IiRATdhg zmiEFlj@S_hwYYI(ki{}&<;_7(Z0Qkfq>am z&LtL=2qc7rWguk3BtE4zL41@#S;NN*-jWw|7Kx7H7~_%7fPt;TIX}Ubo>;Rmj94V> zNB1=;-9AR7s`Pxn}t_6^3ahlq53e&!Lh85uG zec0vJY_6e`tg7LgfrJ3k!DjR)Bi#L@DHIrZ`sK=<5O0Ip!fxGf*OgGSpP@Hbbe&$9 z;ZI}8lEoC2_7;%L2=w?tb%1oL0V+=Z`7b=P&lNGY;yVBazXRYu;+cQDKvm*7NCxu&i;zub zAJh#11%?w>E2rf2e~C4+rAb-&$^vsdACs7 z@|Ra!OfVM(ke{vyiqh7puf&Yp6cd6{DptUteYfIRWG3pI+5< zBVBI_xkBAc<(pcb$!Y%dTW(b;B;2pOI-(QCsLv@U-D1XJ z(Gk8Q3l7Ws46Aktuj>|s{$6zA&xCPuXL-kB`CgYMs}4IeyG*P51IDwW?8UNQd+$i~ zlxOPtSi5L|gJcF@DwmJA5Ju8HEJ>o{{upwIpb!f{2(vLNBw`7xMbvcw<^{Fj@E~1( z?w`iIMieunS#>nXlmUcSMU+D3rX28f?s7z;X=se6bo8;5vM|O^(D6{A9*ChnGH!RG zP##3>LDC3jZPE4PH32AxrqPk|yIIrq~`aL-=}`okhNu9aT%q z1b)7iJ)CN=V#Ly84N_r7U^SH2FGdE5FpTO2 z630TF$P>GNMu8`rOytb(lB2};`;P4YNwW1<5d3Q~AX#P0aX}R2b2)`rgkp#zTxcGj zAV^cvFbhP|JgWrq_e`~exr~sIR$6p5V?o4Wym3kQ3HA+;Pr$bQ0(PmADVO%MKL!^q z?zAM8j1l4jrq|5X+V!8S*2Wl@=7*pPgciTVK6kS1Ge zMsd_u6DFK$jTnvVtE;qa+8(1sGBu~n&F%dh(&c(Zs4Fc#A=gG^^%^AyH}1^?|8quj zl@Z47h$){PlELJgYZCIHHL= z{U8O>Tw4x3<1{?$8>k-P<}1y9DmAZP_;(3Y*{Sk^H^A=_iSJ@+s5ktgwTXz_2$~W9>VVZsfwCm@s0sQ zeB50_yu@uS+e7QoPvdCwDz{prjo(AFwR%C?z`EL{1`|coJHQTk^nX=tvs1<0arUOJ z!^`*x&&BvTYmemyZ)2p~{%eYX=JVR?DYr(rNgqRMA5E1PR1Iw=prk=L2ldy3r3Vg@27IZx43+ywyzr-X*p*d@tZV+!U#~$-q=8c zgdSuh#r?b4GhEGNai)ayHQpk>5(%j5c@C1K3(W1pb~HeHpaqijJZa-e6vq_8t-^M^ zBJxq|MqZc?pjXPIH}70a5vt!IUh;l}<>VX<-Qcv^u@5(@@M2CHSe_hD$VG-eiV^V( zj7*9T0?di?P$FaD6oo?)<)QT>Npf6Og!GO^GmPV(Km0!=+dE&bk#SNI+C9RGQ|{~O*VC+tXK3!n`5 zHfl6>lwf_aEVV3`0T!aHNZLsj$paS$=LL(?b!Czaa5bbSuZ6#$_@LK<(7yrrl+80| z{tOFd=|ta2Z`^ssozD9BINn45NxUeCQis?-BKmU*Kt=FY-NJ+)8S1ecuFtN-M?&42 zl2$G>u!iNhAk*HoJ^4v^9#ORYp5t^wDj6|lx~5w45#E5wVqI1JQ~9l?nPp1YINf++ zMAdSif~_ETv@Er(EFBI^@L4BULFW>)NI+ejHFP*T}UhWNN`I)RRS8za? z*@`1>9ZB}An%aT5K=_2iQmfE;GcBVHLF!$`I99o5GO`O%O_zLr9AG18>&^HkG(;=V z%}c!OBQ~?MX(9h~tajX{=x)+!cbM7$YzTlmsPOdp2L-?GoW`@{lY9U3f;OUo*BwRB z8A+nv(br0-SH#VxGy#ZrgnGD(=@;HME;yd46EgWJ`EL%oXc&lFpc@Y}^>G(W>h_v_ zlN!`idhX+OjL+~T?19sroAFVGfa5tX-D49w$1g2g_-T|EpHL6}K_aX4$K=LTvwtlF zL*z}j{f+Uoe7{-px3_5iKPA<_7W=>Izkk)!l9ez2w%vi(?Y;i8AxRNLSOGDzNoqoI zP!1uAl}r=_871(G?y`i&)-7{u=%nxk7CZ_Qh#!|ITec zwQn`33GTUM`;D2POWnkqngqJhJRlM>CTONzTG}>^Q0wUunQyn|TAiHzyX2_%ATx%P z%7gW)%4rA9^)M<_%k@`Y?RbC<29sWU&5;@|9thf2#zf8z12$hRcZ!CSb>kUp=4N#y zl3hE#y6>kkA8VY2`W`g5Ip?2qC_BY$>R`iGQLhz2-S>x(RuWv)SPaGdl^)gGw7tjR zH@;jwk!jIaCgSg_*9iF|a);sRUTq30(8I(obh^|}S~}P4U^BIGYqcz;MPpC~Y@k_m zaw4WG1_vz2GdCAX!$_a%GHK**@IrHSkGoN>)e}>yzUTm52on`hYot7cB=oA-h1u|R ztH$11t?54Qg2L+i33FPFKKRm1aOjKST{l1*(nps`>sv%VqeVMWjl5+Gh+9);hIP8? zA@$?}Sc z3qIRpba+y5yf{R6G(u8Z^vkg0Fu&D-7?1s=QZU`Ub{-!Y`I?AGf1VNuc^L3v>)>i# z{DV9W$)>34wnzAXUiV^ZpYKw>UElrN_5Xj6{r_3| z$X5PK`e5$7>~9Dj7gK5ash(dvs`vwfk}&RD`>04;j62zoXESkFBklYaKm5seyiX(P zqQ-;XxlV*yg?Dhlx%xt!b0N3GHp@(p$A;8|%# zZ5m2KL|{on4nr>2_s9Yh=r5ScQ0;aMF)G$-9-Ca6%wA`Pa)i?NGFA|#Yi?{X-4ZO_ z^}%7%vkzvUHa$-^Y#aA+aiR5sa%S|Ebyn`EV<3Pc?ax_f>@sBZF1S;7y$CXd5t5=WGsTKBk8$OfH4v|0?0I=Yp}7c=WBSCg!{0n)XmiU;lfx)**zZaYqmDJelxk$)nZyx5`x$6R|fz(;u zEje5Dtm|a%zK!!tk3{i9$I2b{vXNFy%Bf{50X!x{98+BsDr_u9i>G5%*sqEX|06J0 z^IY{UcEbj6LDwuMh7cH`H@9sVt1l1#8kEQ(LyT@&+K}(ReE`ux8gb0r6L_#bDUo^P z3Ka2lRo52Hdtl_%+pwVs14=q`{d^L58PsU@AMf(hENumaxM{7iAT5sYmWh@hQCO^ zK&}ijo=`VqZ#a3vE?`7QW0ZREL17ZvDfdqKGD?0D4fg{7v%|Yj&_jcKJAB)>=*RS* zto8p6@k%;&^ZF>hvXm&$PCuEp{uqw3VPG$9VMdW5$w-fy2CNNT>E;>ejBgy-m_6`& z97L1p{%srn@O_JQgFpa_#f(_)eb#YS>o>q3(*uB;uZb605(iqM$=NK{nHY=+X2*G) zO3-_Xh%aG}fHWe*==58zBwp%&`mge<8uq8;xIxOd=P%9EK!34^E9sk|(Zq1QSz-JVeP12Fp)-`F|KY$LPwUE?rku zY@OJ)Z9A!ojfzfeyJ9;zv2EM7ZQB)AR5xGa-tMn^bl)FmoIiVyJ@!~@%{}qXXD&Ns zPnfe5U+&ohKefILu_1mPfLGuapX@btta5C#gPB2cjk5m4T}Nfi+Vfka!Yd(L?-c~5 z#ZK4VeQEXNPc4r$K00Fg>g#_W!YZ)cJ?JTS<&68_$#cZT-ME`}tcwqg3#``3M3UPvn+pi}(VNNx6y zFIMVb6OwYU(2`at$gHba*qrMVUl8xk5z-z~fb@Q3Y_+aXuEKH}L+>eW__!IAd@V}L zkw#s%H0v2k5-=vh$^vPCuAi22Luu3uKTf6fPo?*nvj$9(u)4$6tvF-%IM+3pt*cgs z_?wW}J7VAA{_~!?))?s6{M=KPpVhg4fNuU*|3THp@_(q!b*hdl{fjRVFWtu^1dV(f z6iOux9hi&+UK=|%M*~|aqFK{Urfl!TA}UWY#`w(0P!KMe1Si{8|o))Gy6d7;!JQYhgMYmXl?3FfOM2nQGN@~Ap6(G z3+d_5y@=nkpKAhRqf{qQ~k7Z$v&l&@m7Ppt#FSNzKPZM z8LhihcE6i=<(#87E|Wr~HKvVWhkll4iSK$^mUHaxgy8*K$_Zj;zJ`L$naPj+^3zTi z-3NTaaKnD5FPY-~?Tq6QHnmDDRxu0mh0D|zD~Y=vv_qig5r-cIbCpxlju&8Sya)@{ zsmv6XUSi)@(?PvItkiZEeN*)AE~I_?#+Ja-r8$(XiXei2d@Hi7Rx8+rZZb?ZLa{;@*EHeRQ-YDadz~M*YCM4&F-r;E#M+@CSJMJ0oU|PQ^ z=E!HBJDMQ2TN*Y(Ag(ynAL8%^v;=~q?s4plA_hig&5Z0x_^Oab!T)@6kRN$)qEJ6E zNuQjg|G7iwU(N8pI@_6==0CL;lRh1dQF#wePhmu@hADFd3B5KIH#dx(2A zp~K&;Xw}F_N6CU~0)QpQk7s$a+LcTOj1%=WXI(U=Dv!6 z{#<#-)2+gCyyv=Jw?Ab#PVkxPDeH|sAxyG`|Ys}A$PW4TdBv%zDz z^?lwrxWR<%Vzc8Sgt|?FL6ej_*e&rhqJZ3Y>k=X(^dytycR;XDU16}Pc9Vn0>_@H+ zQ;a`GSMEG64=JRAOg%~L)x*w{2re6DVprNp+FcNra4VdNjiaF0M^*>CdPkt(m150rCue?FVdL0nFL$V%5y6N z%eLr5%YN7D06k5ji5*p4v$UMM)G??Q%RB27IvH7vYr_^3>1D-M66#MN8tWGw>WED} z5AhlsanO=STFYFs)Il_0i)l)f<8qn|$DW7ZXhf5xI;m+7M5-%P63XFQrG9>DMqHc} zsgNU9nR`b}E^mL5=@7<1_R~j@q_2U^3h|+`7YH-?C=vme1C3m`Fe0HC>pjt6f_XMh zy~-i-8R46QNYneL4t@)<0VU7({aUO?aH`z4V2+kxgH5pYD5)wCh75JqQY)jIPN=U6 z+qi8cGiOtXG2tXm;_CfpH9ESCz#i5B(42}rBJJF$jh<1sbpj^8&L;gzGHb8M{of+} zzF^8VgML2O9nxBW7AvdEt90vp+#kZxWf@A)o9f9}vKJy9NDBjBW zSt=Hcs=YWCwnfY1UYx*+msp{g!w0HC<_SM!VL1(I2PE?CS}r(eh?{I)mQixmo5^p# zV?2R!R@3GV6hwTCrfHiK#3Orj>I!GS2kYhk1S;aFBD_}u2v;0HYFq}Iz1Z(I4oca4 zxquja8$+8JW_EagDHf$a1OTk5S97umGSDaj)gH=fLs9>_=XvVj^Xj9a#gLdk=&3tl zfmK9MNnIX9v{?%xdw7568 zNrZ|roYs(vC4pHB5RJ8>)^*OuyNC>x7ad)tB_}3SgQ96+-JT^Qi<`xi=)_=$Skwv~ zdqeT9Pa`LYvCAn&rMa2aCDV(TMI#PA5g#RtV|CWpgDYRA^|55LLN^uNh*gOU>Z=a06qJ;$C9z8;n-Pq=qZnc1zUwJ@t)L;&NN+E5m zRkQ(SeM8=l-aoAKGKD>!@?mWTW&~)uF2PYUJ;tB^my`r9n|Ly~0c%diYzqs9W#FTjy?h&X3TnH zXqA{QI82sdjPO->f=^K^f>N`+B`q9&rN0bOXO79S&a9XX8zund(kW7O76f4dcWhIu zER`XSMSFbSL>b;Rp#`CuGJ&p$s~G|76){d?xSA5wVg##_O0DrmyEYppyBr%fyWbbv zp`K84JwRNP$d-pJ!Qk|(RMr?*!wi1if-9G#0p>>1QXKXWFy)eB3ai)l3601q8!9JC zvU#ZWWDNKq9g6fYs?JQ)Q4C_cgTy3FhgKb8s&m)DdmL5zhNK#8wWg!J*7G7Qhe9VU zha?^AQTDpYcuN!B+#1dE*X{<#!M%zfUQbj=zLE{dW0XeQ7-oIsGY6RbkP2re@Q{}r_$iiH0xU%iN*ST`A)-EH6eaZB$GA#v)cLi z*MpA(3bYk$oBDKAzu^kJoSUsDd|856DApz={3u8sbQV@JnRkp2nC|)m;#T=DvIL-O zI4vh;g7824l}*`_p@MT4+d`JZ2%6NQh=N9bmgJ#q!hK@_<`HQq3}Z8Ij>3%~<*= zcv=!oT#5xmeGI92lqm9sGVE%#X$ls;St|F#u!?5Y7syhx6q#MVRa&lBmmn%$C0QzU z);*ldgwwCmzM3uglr}!Z2G+?& zf%Dpo&mD%2ZcNFiN-Z0f;c_Q;A%f@>26f?{d1kxIJD}LxsQkB47SAdwinfMILZdN3 zfj^HmTzS3Ku5BxY>ANutS8WPQ-G>v4^_Qndy==P3pDm+Xc?>rUHl-4+^%Sp5atOja z2oP}ftw-rqnb}+khR3CrRg^ibi6?QYk1*i^;kQGirQ=uB9Sd1NTfT-Rbv;hqnY4neE5H1YUrjS2m+2&@uXiAo- zrKUX|Ohg7(6F(AoP~tj;NZlV#xsfo-5reuQHB$&EIAhyZk;bL;k9ouDmJNBAun;H& zn;Of1z_Qj`x&M;5X;{s~iGzBQTY^kv-k{ksbE*Dl%Qf%N@hQCfY~iUw!=F-*$cpf2 z3wix|aLBV0b;W@z^%7S{>9Z^T^fLOI68_;l@+Qzaxo`nAI8emTV@rRhEKZ z?*z_{oGdI~R*#<2{bkz$G~^Qef}$*4OYTgtL$e9q!FY7EqxJ2`zk6SQc}M(k(_MaV zSLJnTXw&@djco1~a(vhBl^&w=$fa9{Sru>7g8SHahv$&Bl(D@(Zwxo_3r=;VH|uc5 zi1Ny)J!<(KN-EcQ(xlw%PNwK8U>4$9nVOhj(y0l9X^vP1TA>r_7WtSExIOsz`nDOP zs}d>Vxb2Vo2e5x8p(n~Y5ggAyvib>d)6?)|E@{FIz?G3PVGLf7-;BxaP;c?7ddH$z zA+{~k^V=bZuXafOv!RPsE1GrR3J2TH9uB=Z67gok+u`V#}BR86hB1xl}H4v`F+mRfr zYhortD%@IGfh!JB(NUNSDh+qDz?4ztEgCz&bIG-Wg7w-ua4ChgQR_c+z8dT3<1?uX z*G(DKy_LTl*Ea!%v!RhpCXW1WJO6F`bgS-SB;Xw9#! z<*K}=#wVu9$`Yo|e!z-CPYH!nj7s9dEPr-E`DXUBu0n!xX~&|%#G=BeM?X@shQQMf zMvr2!y7p_gD5-!Lnm|a@z8Of^EKboZsTMk%5VsJEm>VsJ4W7Kv{<|#4f-qDE$D-W>gWT%z-!qXnDHhOvLk=?^a1*|0j z{pW{M0{#1VcR5;F!!fIlLVNh_Gj zbnW(_j?0c2q$EHIi@fSMR{OUKBcLr{Y&$hrM8XhPByyZaXy|dd&{hYQRJ9@Fn%h3p7*VQolBIV@Eq`=y%5BU~3RPa^$a?ixp^cCg z+}Q*X+CW9~TL29@OOng(#OAOd!)e$d%sr}^KBJ-?-X&|4HTmtemxmp?cT3uA?md4% zT8yZ0U;6Rg6JHy3fJae{6TMGS?ZUX6+gGTT{Q{)SI85$5FD{g-eR%O0KMpWPY`4@O zx!hen1*8^E(*}{m^V_?}(b5k3hYo=T+$&M32+B`}81~KKZhY;2H{7O-M@vbCzuX0n zW-&HXeyr1%I3$@ns-V1~Lb@wIpkmx|8I~ob1Of7i6BTNysEwI}=!nU%q7(V_^+d*G z7G;07m(CRTJup!`cdYi93r^+LY+`M*>aMuHJm(A8_O8C#A*$!Xvddgpjx5)?_EB*q zgE8o5O>e~9IiSC@WtZpF{4Bj2J5eZ>uUzY%TgWF7wdDE!fSQIAWCP)V{;HsU3ap?4 znRsiiDbtN7i9hapO;(|Ew>Ip2TZSvK9Z^N21%J?OiA_&eP1{(Pu_=%JjKy|HOardq ze?zK^K zA%sjF64*Wufad%H<) z^|t>e*h+Z1#l=5wHexzt9HNDNXgM=-OPWKd^5p!~%SIl>Fo&7BvNpbf8{NXmH)o{r zO=aBJ;meX1^{O%q;kqdw*5k!Y7%t_30 zy{nGRVc&5qt?dBwLs+^Sfp;f`YVMSB#C>z^a9@fpZ!xb|b-JEz1LBX7ci)V@W+kvQ89KWA0T~Lj$aCcfW#nD5bt&Y_< z-q{4ZXDqVg?|0o)j1%l0^_it0WF*LCn-+)c!2y5yS7aZIN$>0LqNnkujV*YVes(v$ zY@_-!Q;!ZyJ}Bg|G-~w@or&u0RO?vlt5*9~yeoPV_UWrO2J54b4#{D(D>jF(R88u2 zo#B^@iF_%S>{iXSol8jpmsZuJ?+;epg>k=$d`?GSegAVp3n$`GVDvK${N*#L_1`44 z{w0fL{2%)0|E+qgZtjX}itZz^KJt4Y;*8uSK}Ft38+3>j|K(PxIXXR-t4VopXo#9# zt|F{LWr-?34y`$nLBVV_*UEgA6AUI65dYIbqpNq9cl&uLJ0~L}<=ESlOm?Y-S@L*d z<7vt}`)TW#f%Rp$Q}6@3=j$7Tze@_uZO@aMn<|si{?S}~maII`VTjs&?}jQ4_cut9$)PEqMukwoXobzaKx^MV z2fQwl+;LSZ$qy%Tys0oo^K=jOw$!YwCv^ei4NBVauL)tN%=wz9M{uf{IB(BxK|lT*pFkmNK_1tV`nb%jH=a0~VNq2RCKY(rG7jz!-D^k)Ec)yS%17pE#o6&eY+ z^qN(hQT$}5F(=4lgNQhlxj?nB4N6ntUY6(?+R#B?W3hY_a*)hnr4PA|vJ<6p`K3Z5Hy z{{8(|ux~NLUW=!?9Qe&WXMTAkQnLXg(g=I@(VG3{HE13OaUT|DljyWXPs2FE@?`iU z4GQlM&Q=T<4&v@Fe<+TuXiZQT3G~vZ&^POfmI1K2h6t4eD}Gk5XFGpbj1n_g*{qmD6Xy z`6Vv|lLZtLmrnv*{Q%xxtcWVj3K4M%$bdBk_a&ar{{GWyu#ljM;dII;*jP;QH z#+^o-A4np{@|Mz+LphTD0`FTyxYq#wY)*&Ls5o{0z9yg2K+K7ZN>j1>N&;r+Z`vI| zDzG1LJZ+sE?m?>x{5LJx^)g&pGEpY=fQ-4}{x=ru;}FL$inHemOg%|R*ZXPodU}Kh zFEd5#+8rGq$Y<_?k-}r5zgQ3jRV=ooHiF|@z_#D4pKVEmn5CGV(9VKCyG|sT9nc=U zEoT67R`C->KY8Wp-fEcjjFm^;Cg(ls|*ABVHq8clBE(;~K^b+S>6uj70g? z&{XQ5U&!Z$SO7zfP+y^8XBbiu*Cv-yJG|l-oe*!s5$@Lh_KpxYL2sx`B|V=dETN>5K+C+CU~a_3cI8{vbu$TNVdGf15*>D zz@f{zIlorkY>TRh7mKuAlN9A0>N>SV`X)+bEHms=mfYTMWt_AJtz_h+JMmrgH?mZt zm=lfdF`t^J*XLg7v+iS)XZROygK=CS@CvUaJo&w2W!Wb@aa?~Drtf`JV^cCMjngVZ zv&xaIBEo8EYWuML+vxCpjjY^s1-ahXJzAV6hTw%ZIy!FjI}aJ+{rE&u#>rs)vzuxz z+$5z=7W?zH2>Eb32dvgHYZtCAf!=OLY-pb4>Ae79rd68E2LkVPj-|jFeyqtBCCwiW zkB@kO_(3wFq)7qwV}bA=zD!*@UhT`geq}ITo%@O(Z5Y80nEX~;0-8kO{oB6|(4fQh z);73T!>3@{ZobPwRv*W?7m0Ml9GmJBCJd&6E?hdj9lV= z4flNfsc(J*DyPv?RCOx!MSvk(M952PJ-G|JeVxWVjN~SNS6n-_Ge3Q;TGE;EQvZg86%wZ`MB zSMQua(i*R8a75!6$QRO^(o7sGoomb+Y{OMy;m~Oa`;P9Yqo>?bJAhqXxLr7_3g_n>f#UVtxG!^F#1+y@os6x(sg z^28bsQ@8rw%Gxk-stAEPRbv^}5sLe=VMbkc@Jjimqjvmd!3E7+QnL>|(^3!R} zD-l1l7*Amu@j+PWLGHXXaFG0Ct2Q=}5YNUxEQHCAU7gA$sSC<5OGylNnQUa>>l%sM zyu}z6i&({U@x^hln**o6r2s-(C-L50tQvz|zHTqW!ir?w&V23tuYEDJVV#5pE|OJu z7^R!A$iM$YCe?8n67l*J-okwfZ+ZTkGvZ)tVPfR;|3gyFjF)8V zyXXN=!*bpyRg9#~Bg1+UDYCt0 ztp4&?t1X0q>uz;ann$OrZs{5*r`(oNvw=$7O#rD|Wuv*wIi)4b zGtq4%BX+kkagv3F9Id6~-c+1&?zny%w5j&nk9SQfo0k4LhdSU_kWGW7axkfpgR`8* z!?UTG*Zi_baA1^0eda8S|@&F z{)Rad0kiLjB|=}XFJhD(S3ssKlveFFmkN{Vl^_nb!o5M!RC=m)V&v2%e?ZoRC@h3> zJ(?pvToFd`*Zc@HFPL#=otWKwtuuQ_dT-Hr{S%pQX<6dqVJ8;f(o)4~VM_kEQkMR+ zs1SCVi~k>M`u1u2xc}>#D!V&6nOOh-E$O&SzYrjJdZpaDv1!R-QGA141WjQe2s0J~ zQ;AXG)F+K#K8_5HVqRoRM%^EduqOnS(j2)|ctA6Q^=|s_WJYU;Z%5bHp08HPL`YF2 zR)Ad1z{zh`=sDs^&V}J z%$Z$!jd7BY5AkT?j`eqMs%!Gm@T8)4w3GYEX~IwgE~`d|@T{WYHkudy(47brgHXx& zBL1yFG6!!!VOSmDxBpefy2{L_u5yTwja&HA!mYA#wg#bc-m%~8aRR|~AvMnind@zs zy>wkShe5&*un^zvSOdlVu%kHsEo>@puMQ`b1}(|)l~E{5)f7gC=E$fP(FC2=F<^|A zxeIm?{EE!3sO!Gr7e{w)Dx(uU#3WrFZ>ibmKSQ1tY?*-Nh1TDHLe+k*;{Rp!Bmd_m zb#^kh`Y*8l|9Cz2e{;RL%_lg{#^Ar+NH|3z*Zye>!alpt{z;4dFAw^^H!6ING*EFc z_yqhr8d!;%nHX9AKhFQZBGrSzfzYCi%C!(Q5*~hX>)0N`vbhZ@N|i;_972WSx*>LH z87?en(;2_`{_JHF`Sv6Wlps;dCcj+8IJ8ca6`DsOQCMb3n# z3)_w%FuJ3>fjeOOtWyq)ag|PmgQbC-s}KRHG~enBcIwqIiGW8R8jFeBNY9|YswRY5 zjGUxdGgUD26wOpwM#8a!Nuqg68*dG@VM~SbOroL_On0N6QdT9?)NeB3@0FCC?Z|E0 z6TPZj(AsPtwCw>*{eDEE}Gby>0q{*lI+g2e&(YQrsY&uGM{O~}(oM@YWmb*F zA0^rr5~UD^qmNljq$F#ARXRZ1igP`MQx4aS6*MS;Ot(1L5jF2NJ;de!NujUYg$dr# z=TEL_zTj2@>ZZN(NYCeVX2==~=aT)R30gETO{G&GM4XN<+!&W&(WcDP%oL8PyIVUC zs5AvMgh6qr-2?^unB@mXK*Dbil^y-GTC+>&N5HkzXtozVf93m~xOUHn8`HpX=$_v2 z61H;Z1qK9o;>->tb8y%#4H)765W4E>TQ1o0PFj)uTOPEvv&}%(_mG0ISmyhnQV33Z$#&yd{ zc{>8V8XK$3u8}04CmAQ#I@XvtmB*s4t8va?-IY4@CN>;)mLb_4!&P3XSw4pA_NzDb zORn!blT-aHk1%Jpi>T~oGLuh{DB)JIGZ9KOsciWs2N7mM1JWM+lna4vkDL?Q)z_Ct z`!mi0jtr+4*L&N7jk&LodVO#6?_qRGVaucqVB8*us6i3BTa^^EI0x%EREQSXV@f!lak6Wf1cNZ8>*artIJ(ADO*=<-an`3zB4d*oO*8D1K!f z*A@P1bZCNtU=p!742MrAj%&5v%Xp_dSX@4YCw%F|%Dk=u|1BOmo)HsVz)nD5USa zR~??e61sO(;PR)iaxK{M%QM_rIua9C^4ppVS$qCT9j2%?*em?`4Z;4@>I(c%M&#cH z>4}*;ej<4cKkbCAjjDsyKS8rIm90O)Jjgyxj5^venBx&7B!xLmzxW3jhj7sR(^3Fz z84EY|p1NauwXUr;FfZjdaAfh%ivyp+^!jBjJuAaKa!yCq=?T_)R!>16?{~p)FQ3LDoMyG%hL#pR!f@P%*;#90rs_y z@9}@r1BmM-SJ#DeuqCQk=J?ixDSwL*wh|G#us;dd{H}3*-Y7Tv5m=bQJMcH+_S`zVtf;!0kt*(zwJ zs+kedTm!A}cMiM!qv(c$o5K%}Yd0|nOd0iLjus&;s0Acvoi-PFrWm?+q9f^FslxGi z6ywB`QpL$rJzWDg(4)C4+!2cLE}UPCTBLa*_=c#*$b2PWrRN46$y~yST3a2$7hEH= zNjux+wna^AzQ=KEa_5#9Ph=G1{S0#hh1L3hQ`@HrVnCx{!fw_a0N5xV(iPdKZ-HOM za)LdgK}1ww*C_>V7hbQnTzjURJL`S%`6nTHcgS+dB6b_;PY1FsrdE8(2K6FN>37!62j_cBlui{jO^$dPkGHV>pXvW0EiOA zqW`YaSUBWg_v^Y5tPJfWLcLpsA8T zG)!x>pKMpt!lv3&KV!-um= zKCir6`bEL_LCFx4Z5bAFXW$g3Cq`?Q%)3q0r852XI*Der*JNuKUZ`C{cCuu8R8nkt z%pnF>R$uY8L+D!V{s^9>IC+bmt<05h**>49R*#vpM*4i0qRB2uPbg8{{s#9yC;Z18 zD7|4m<9qneQ84uX|J&f-g8a|nFKFt34@Bt{CU`v(SYbbn95Q67*)_Esl_;v291s=9 z+#2F2apZU4Tq=x+?V}CjwD(P=U~d<=mfEFuyPB`Ey82V9G#Sk8H_Ob_RnP3s?)S_3 zr%}Pb?;lt_)Nf>@zX~D~TBr;-LS<1I##8z`;0ZCvI_QbXNh8Iv)$LS=*gHr;}dgb=w5$3k2la1keIm|=7<-JD>)U%=Avl0Vj@+&vxn zt-)`vJxJr88D&!}2^{GPXc^nmRf#}nb$4MMkBA21GzB`-Or`-3lq^O^svO7Vs~FdM zv`NvzyG+0T!P8l_&8gH|pzE{N(gv_tgDU7SWeiI-iHC#0Ai%Ixn4&nt{5y3(GQs)i z&uA;~_0shP$0Wh0VooIeyC|lak__#KVJfxa7*mYmZ22@(<^W}FdKjd*U1CqSjNKW% z*z$5$=t^+;Ui=MoDW~A7;)Mj%ibX1_p4gu>RC}Z_pl`U*{_z@+HN?AF{_W z?M_X@o%w8fgFIJ$fIzBeK=v#*`mtY$HC3tqw7q^GCT!P$I%=2N4FY7j9nG8aIm$c9 zeKTxVKN!UJ{#W)zxW|Q^K!3s;(*7Gbn;e@pQBCDS(I|Y0euK#dSQ_W^)sv5pa%<^o zyu}3d?Lx`)3-n5Sy9r#`I{+t6x%I%G(iewGbvor&I^{lhu-!#}*Q3^itvY(^UWXgvthH52zLy&T+B)Pw;5>4D6>74 zO_EBS)>l!zLTVkX@NDqyN2cXTwsUVao7$HcqV2%t$YzdAC&T)dwzExa3*kt9d(}al zA~M}=%2NVNUjZiO7c>04YH)sRelXJYpWSn^aC$|Ji|E13a^-v2MB!Nc*b+=KY7MCm zqIteKfNkONq}uM;PB?vvgQvfKLPMB8u5+Am=d#>g+o&Ysb>dX9EC8q?D$pJH!MTAqa=DS5$cb+;hEvjwVfF{4;M{5U&^_+r zvZdu_rildI!*|*A$TzJ&apQWV@p{!W`=?t(o0{?9y&vM)V)ycGSlI3`;ps(vf2PUq zX745#`cmT*ra7XECC0gKkpu2eyhFEUb?;4@X7weEnLjXj_F~?OzL1U1L0|s6M+kIhmi%`n5vvDALMagi4`wMc=JV{XiO+^ z?s9i7;GgrRW{Mx)d7rj)?(;|b-`iBNPqdwtt%32se@?w4<^KU&585_kZ=`Wy^oLu9 z?DQAh5z%q;UkP48jgMFHTf#mj?#z|=w= z(q6~17Vn}P)J3M?O)x))%a5+>TFW3No~TgP;f}K$#icBh;rSS+R|}l鯊%1Et zwk~hMkhq;MOw^Q5`7oC{CUUyTw9x>^%*FHx^qJw(LB+E0WBX@{Ghw;)6aA-KyYg8p z7XDveQOpEr;B4je@2~usI5BlFadedX^ma{b{ypd|RNYqo#~d*mj&y`^iojR}s%~vF z(H!u`yx68D1Tj(3(m;Q+Ma}s2n#;O~bcB1`lYk%Irx60&-nWIUBr2x&@}@76+*zJ5 ze&4?q8?m%L9c6h=J$WBzbiTf1Z-0Eb5$IZs>lvm$>1n_Mezp*qw_pr8<8$6f)5f<@ zyV#tzMCs51nTv_5ca`x`yfE5YA^*%O_H?;tWYdM_kHPubA%vy47i=9>Bq) zRQ&0UwLQHeswmB1yP)+BiR;S+Vc-5TX84KUA;8VY9}yEj0eESSO`7HQ4lO z4(CyA8y1G7_C;6kd4U3K-aNOK!sHE}KL_-^EDl(vB42P$2Km7$WGqNy=%fqB+ zSLdrlcbEH=T@W8V4(TgoXZ*G1_aq$K^@ek=TVhoKRjw;HyI&coln|uRr5mMOy2GXP zwr*F^Y|!Sjr2YQXX(Fp^*`Wk905K%$bd03R4(igl0&7IIm*#f`A!DCarW9$h$z`kYk9MjjqN&5-DsH@8xh63!fTNPxWsFQhNv z#|3RjnP$Thdb#Ys7M+v|>AHm0BVTw)EH}>x@_f4zca&3tXJhTZ8pO}aN?(dHo)44Z z_5j+YP=jMlFqwvf3lq!57-SAuRV2_gJ*wsR_!Y4Z(trO}0wmB9%f#jNDHPdQGHFR; zZXzS-$`;7DQ5vF~oSgP3bNV$6Z(rwo6W(U07b1n3UHqml>{=6&-4PALATsH@Bh^W? z)ob%oAPaiw{?9HfMzpGb)@Kys^J$CN{uf*HX?)z=g`J(uK1YO^8~s1(ZIbG%Et(|q z$D@_QqltVZu9Py4R0Ld8!U|#`5~^M=b>fnHthzKBRr=i+w@0Vr^l|W;=zFT#PJ?*a zbC}G#It}rQP^Ait^W&aa6B;+0gNvz4cWUMzpv(1gvfw-X4xJ2Sv;mt;zb2Tsn|kSS zo*U9N?I{=-;a-OybL4r;PolCfiaL=y@o9{%`>+&FI#D^uy#>)R@b^1ue&AKKwuI*` zx%+6r48EIX6nF4o;>)zhV_8(IEX})NGU6Vs(yslrx{5fII}o3SMHW7wGtK9oIO4OM&@@ECtXSICLcPXoS|{;=_yj>hh*%hP27yZwOmj4&Lh z*Nd@OMkd!aKReoqNOkp5cW*lC)&C$P?+H3*%8)6HcpBg&IhGP^77XPZpc%WKYLX$T zsSQ$|ntaVVOoRat$6lvZO(G-QM5s#N4j*|N_;8cc2v_k4n6zx9c1L4JL*83F-C1Cn zaJhd;>rHXB%%ZN=3_o3&Qd2YOxrK~&?1=UuN9QhL$~OY-Qyg&})#ez*8NpQW_*a&kD&ANjedxT0Ar z<6r{eaVz3`d~+N~vkMaV8{F?RBVemN(jD@S8qO~L{rUw#=2a$V(7rLE+kGUZ<%pdr z?$DP|Vg#gZ9S}w((O2NbxzQ^zTot=89!0^~hE{|c9q1hVzv0?YC5s42Yx($;hAp*E zyoGuRyphQY{Q2ee0Xx`1&lv(l-SeC$NEyS~8iil3_aNlnqF_G|;zt#F%1;J)jnPT& z@iU0S;wHJ2$f!juqEzPZeZkjcQ+Pa@eERSLKsWf=`{R@yv7AuRh&ALRTAy z8=g&nxsSJCe!QLchJ=}6|LshnXIK)SNd zRkJNiqHwKK{SO;N5m5wdL&qK`v|d?5<4!(FAsDxR>Ky#0#t$8XCMptvNo?|SY?d8b z`*8dVBlXTUanlh6n)!EHf2&PDG8sXNAt6~u-_1EjPI1|<=33T8 zEnA00E!`4Ave0d&VVh0e>)Dc}=FfAFxpsC1u9ATfQ`-Cu;mhc8Z>2;uyXtqpLb7(P zd2F9<3cXS} znMg?{&8_YFTGRQZEPU-XPq55%51}RJpw@LO_|)CFAt62-_!u_Uq$csc+7|3+TV_!h z+2a7Yh^5AA{q^m|=KSJL+w-EWDBc&I_I1vOr^}P8i?cKMhGy$CP0XKrQzCheG$}G# zuglf8*PAFO8%xop7KSwI8||liTaQ9NCAFarr~psQt)g*pC@9bORZ>m`_GA`_K@~&% zijH0z;T$fd;-Liw8%EKZas>BH8nYTqsK7F;>>@YsE=Rqo?_8}UO-S#|6~CAW0Oz1} z3F(1=+#wrBJh4H)9jTQ_$~@#9|Bc1Pd3rAIA_&vOpvvbgDJOM(yNPhJJq2%PCcMaI zrbe~toYzvkZYQ{ea(Wiyu#4WB#RRN%bMe=SOk!CbJZv^m?Flo5p{W8|0i3`hI3Np# zvCZqY%o258CI=SGb+A3yJe~JH^i{uU`#U#fvSC~rWTq+K`E%J@ zasU07&pB6A4w3b?d?q}2=0rA#SA7D`X+zg@&zm^iA*HVi z009#PUH<%lk4z~p^l0S{lCJk1Uxi=F4e_DwlfHA`X`rv(|JqWKAA5nH+u4Da+E_p+ zVmH@lg^n4ixs~*@gm_dgQ&eDmE1mnw5wBz9Yg?QdZwF|an67Xd*x!He)Gc8&2!urh z4_uXzbYz-aX)X1>&iUjGp;P1u8&7TID0bTH-jCL&Xk8b&;;6p2op_=y^m@Nq*0{#o!!A;wNAFG@0%Z9rHo zcJs?Th>Ny6+hI`+1XoU*ED$Yf@9f91m9Y=#N(HJP^Y@ZEYR6I?oM{>&Wq4|v0IB(p zqX#Z<_3X(&{H+{3Tr|sFy}~=bv+l=P;|sBz$wk-n^R`G3p0(p>p=5ahpaD7>r|>pm zv;V`_IR@tvZreIuv2EM7ZQHhO+qUgw#kOs%*ekY^n|=1#x9&c;Ro&I~{rG-#_3ZB1 z?|9}IFdbP}^DneP*T-JaoYHt~r@EfvnPE5EKUwIxjPbsr$% zfWW83pgWST7*B(o=kmo)74$8UU)v0{@4DI+ci&%=#90}!CZz|rnH+Mz=HN~97G3~@ z;v5(9_2%eca(9iu@J@aqaMS6*$TMw!S>H(b z4(*B!|H|8&EuB%mITr~O?vVEf%(Gr)6E=>H~1VR z&1YOXluJSG1!?TnT)_*YmJ*o_Q@om~(GdrhI{$Fsx_zrkupc#y{DK1WOUR>tk>ZE) ziOLoBkhZZ?0Uf}cm>GsA>Rd6V8@JF)J*EQlQ<=JD@m<)hyElXR0`pTku*3MU`HJn| zIf7$)RlK^pW-$87U;431;Ye4Ie+l~_B3*bH1>*yKzn23cH0u(i5pXV! z4K?{3oF7ZavmmtTq((wtml)m6i)8X6ot_mrE-QJCW}Yn!(3~aUHYG=^fA<^~`e3yc z-NWTb{gR;DOUcK#zPbN^D*e=2eR^_!(!RKkiwMW@@yYtEoOp4XjOGgzi`;=8 zi3`Ccw1%L*y(FDj=C7Ro-V?q)-%p?Ob2ZElu`eZ99n14-ZkEV#y5C+{Pq87Gu3&>g zFy~Wk7^6v*)4pF3@F@rE__k3ikx(hzN3@e*^0=KNA6|jC^B5nf(XaoQaZN?Xi}Rn3 z$8&m*KmWvPaUQ(V<#J+S&zO|8P-#!f%7G+n_%sXp9=J%Z4&9OkWXeuZN}ssgQ#Tcj z8p6ErJQJWZ+fXLCco=RN8D{W%+*kko*2-LEb))xcHwNl~Xmir>kmAxW?eW50Osw3# zki8Fl$#fvw*7rqd?%E?}ZX4`c5-R&w!Y0#EBbelVXSng+kUfeUiqofPehl}$ormli zg%r)}?%=?_pHb9`Cq9Z|B`L8b>(!+8HSX?`5+5mm81AFXfnAt1*R3F z%b2RPIacKAddx%JfQ8l{3U|vK@W7KB$CdLqn@wP^?azRks@x8z59#$Q*7q!KilY-P zHUbs(IFYRGG1{~@RF;Lqyho$~7^hNC`NL3kn^Td%A7dRgr_&`2k=t+}D-o9&C!y^? z6MsQ=tc3g0xkK(O%DzR9nbNB(r@L;1zQrs8mzx&4dz}?3KNYozOW5;=w18U6$G4U2 z#2^qRLT*Mo4bV1Oeo1PKQ2WQS2Y-hv&S|C7`xh6=Pj7MNLC5K-zokZ67S)C;(F0Dd zloDK2_o1$Fmza>EMj3X9je7e%Q`$39Dk~GoOj89-6q9|_WJlSl!!+*{R=tGp z8u|MuSwm^t7K^nUe+^0G3dkGZr3@(X+TL5eah)K^Tn zXEtHmR9UIaEYgD5Nhh(s*fcG_lh-mfy5iUF3xxpRZ0q3nZ=1qAtUa?(LnT9I&~uxX z`pV?+=|-Gl(kz?w!zIieXT}o}7@`QO>;u$Z!QB${a08_bW0_o@&9cjJUXzVyNGCm8 zm=W+$H!;_Kzp6WQqxUI;JlPY&`V}9C$8HZ^m?NvI*JT@~BM=()T()Ii#+*$y@lTZBkmMMda>7s#O(1YZR+zTG@&}!EXFG{ zEWPSDI5bFi;NT>Yj*FjH((=oe%t%xYmE~AGaOc4#9K_XsVpl<4SP@E!TgC0qpe1oi zNpxU2b0(lEMcoibQ-G^cxO?ySVW26HoBNa;n0}CWL*{k)oBu1>F18X061$SP{Gu67 z-v-Fa=Fl^u3lnGY^o5v)Bux}bNZ~ z5pL+7F_Esoun8^5>z8NFoIdb$sNS&xT8_|`GTe8zSXQzs4r^g0kZjg(b0bJvz`g<70u9Z3fQILX1Lj@;@+##bP|FAOl)U^9U>0rx zGi)M1(Hce)LAvQO-pW!MN$;#ZMX?VE(22lTlJrk#pB0FJNqVwC+*%${Gt#r_tH9I_ z;+#)#8cWAl?d@R+O+}@1A^hAR1s3UcW{G+>;X4utD2d9X(jF555}!TVN-hByV6t+A zdFR^aE@GNNgSxxixS2p=on4(+*+f<8xrwAObC)D5)4!z7)}mTpb7&ofF3u&9&wPS< zB62WHLGMhmrmOAgmJ+|c>qEWTD#jd~lHNgT0?t-p{T=~#EMcB| z=AoDKOL+qXCfk~F)-Rv**V}}gWFl>liXOl7Uec_8v)(S#av99PX1sQIVZ9eNLkhq$ zt|qu0b?GW_uo}TbU8!jYn8iJeIP)r@;!Ze_7mj{AUV$GEz6bDSDO=D!&C9!M@*S2! zfGyA|EPlXGMjkH6x7OMF?gKL7{GvGfED=Jte^p=91FpCu)#{whAMw`vSLa`K#atdN zThnL+7!ZNmP{rc=Z>%$meH;Qi1=m1E3Lq2D_O1-X5C;!I0L>zur@tPAC9*7Jeh)`;eec}1`nkRP(%iv-`N zZ@ip-g|7l6Hz%j%gcAM}6-nrC8oA$BkOTz^?dakvX?`^=ZkYh%vUE z9+&)K1UTK=ahYiaNn&G5nHUY5niLGus@p5E2@RwZufRvF{@$hW{;{3QhjvEHMvduO z#Wf-@oYU4ht?#uP{N3utVzV49mEc9>*TV_W2TVC`6+oI)zAjy$KJrr=*q##&kobiQ z1vNbya&OVjK`2pdRrM?LuK6BgrLN7H_3m z!qpNKg~87XgCwb#I=Q&0rI*l$wM!qTkXrx1ko5q-f;=R2fImRMwt5Qs{P*p^z@9ex z`2#v(qE&F%MXlHpdO#QEZyZftn4f05ab^f2vjxuFaat2}jke{j?5GrF=WYBR?gS(^ z9SBiNi}anzBDBRc+QqizTTQuJrzm^bNA~A{j%ugXP7McZqJ}65l10({wk++$=e8O{ zxWjG!Qp#5OmI#XRQQM?n6?1ztl6^D40hDJr?4$Wc&O_{*OfMfxe)V0=e{|N?J#fgE>j9jAajze$iN!*yeF%jJU#G1c@@rm zolGW!j?W6Q8pP=lkctNFdfgUMg92wlM4E$aks1??M$~WQfzzzXtS)wKrr2sJeCN4X zY(X^H_c^PzfcO8Bq(Q*p4c_v@F$Y8cHLrH$`pJ2}=#*8%JYdqsqnGqEdBQMpl!Ot04tUGSXTQdsX&GDtjbWD=prcCT9(+ z&UM%lW%Q3yrl1yiYs;LxzIy>2G}EPY6|sBhL&X&RAQrSAV4Tlh2nITR?{6xO9ujGu zr*)^E`>o!c=gT*_@6S&>0POxcXYNQd&HMw6<|#{eSute2C3{&h?Ah|cw56-AP^f8l zT^kvZY$YiH8j)sk7_=;gx)vx-PW`hbSBXJGCTkpt;ap(}G2GY=2bbjABU5)ty%G#x zAi07{Bjhv}>OD#5zh#$0w;-vvC@^}F! z#X$@)zIs1L^E;2xDAwEjaXhTBw2<{&JkF*`;c3<1U@A4MaLPe{M5DGGkL}#{cHL%* zYMG+-Fm0#qzPL#V)TvQVI|?_M>=zVJr9>(6ib*#z8q@mYKXDP`k&A4A};xMK0h=yrMp~JW{L?mE~ph&1Y1a#4%SO)@{ zK2juwynUOC)U*hVlJU17%llUxAJFuKZh3K0gU`aP)pc~bE~mM!i1mi!~LTf>1Wp< zuG+ahp^gH8g8-M$u{HUWh0m^9Rg@cQ{&DAO{PTMudV6c?ka7+AO& z746QylZ&Oj`1aqfu?l&zGtJnpEQOt;OAFq19MXTcI~`ZcoZmyMrIKDFRIDi`FH)w; z8+*8tdevMDv*VtQi|e}CnB_JWs>fhLOH-+Os2Lh!&)Oh2utl{*AwR)QVLS49iTp{6 z;|172Jl!Ml17unF+pd+Ff@jIE-{Oxv)5|pOm@CkHW?{l}b@1>Pe!l}VccX#xp@xgJ zyE<&ep$=*vT=}7vtvif0B?9xw_3Gej7mN*dOHdQPtW5kA5_zGD zpA4tV2*0E^OUimSsV#?Tg#oiQ>%4D@1F5@AHwT8Kgen$bSMHD3sXCkq8^(uo7CWk`mT zuslYq`6Yz;L%wJh$3l1%SZv#QnG3=NZ=BK4yzk#HAPbqXa92;3K5?0kn4TQ`%E%X} z&>Lbt!!QclYKd6+J7Nl@xv!uD%)*bY-;p`y^ZCC<%LEHUi$l5biu!sT3TGGSTPA21 zT8@B&a0lJHVn1I$I3I1I{W9fJAYc+8 zVj8>HvD}&O`TqU2AAb={?eT;0hyL(R{|h23=4fDSZKC32;wWxsVj`P z3J3{M$PwdH!ro*Cn!D&=jnFR>BNGR<<|I8CI@+@658Dy(lhqbhXfPTVecY@L8%`3Q z1Fux2w?2C3th60jI~%OC9BtpNF$QPqcG+Pz96qZJ71_`0o0w_q7|h&O>`6U+^BA&5 zXd5Zp1Xkw~>M%RixTm&OqpNl8Q+ue=92Op_>T~_9UON?ZM2c0aGm=^A4ejrXj3dV9 zhh_bCt-b9`uOX#cFLj!vhZ#lS8Tc47OH>*)y#{O9?AT~KR9LntM|#l#Dlm^8{nZdk zjMl#>ZM%#^nK2TPzLcKxqx24P7R1FPlBy7LSBrRvx>fE$9AJ;7{PQm~^LBX^k#6Zq zw*Z(zJC|`!6_)EFR}8|n8&&Rbj8y028~P~sFXBFRt+tmqH-S3<%N;C&WGH!f3{7cm zy_fCAb9@HqaXa1Y5vFbxWf%#zg6SI$C+Uz5=CTO}e|2fjWkZ;Dx|84Ow~bkI=LW+U zuq;KSv9VMboRvs9)}2PAO|b(JCEC_A0wq{uEj|3x@}*=bOd zwr{TgeCGG>HT<@Zeq8y}vTpwDg#UBvD)BEs@1KP$^3$sh&_joQPn{hjBXmLPJ{tC) z*HS`*2+VtJO{|e$mM^|qv1R*8i(m1`%)}g=SU#T#0KlTM2RSvYUc1fP+va|4;5}Bfz98UvDCpq7}+SMV&;nX zQw~N6qOX{P55{#LQkrZk(e5YGzr|(B;Q;ju;2a`q+S9bsEH@i1{_Y0;hWYn1-79jl z5c&bytD*k)GqrVcHn6t-7kinadiD>B{Tl`ZY@`g|b~pvHh5!gKP4({rp?D0aFd_cN zhHRo4dd5^S6ViN(>(28qZT6E>??aRhc($kP`>@<+lIKS5HdhjVU;>f7<4))E*5|g{ z&d1}D|vpuV^eRj5j|xx9nwaCxXFG?Qbjn~_WSy=N}P0W>MP zG-F%70lX5Xr$a)2i6?i|iMyM|;Jtf*hO?=Jxj12oz&>P=1#h~lf%#fc73M2_(SUM- zf&qnjS80|_Y0lDgl&I?*eMumUklLe_=Td!9G@eR*tcPOgIShJipp3{A10u(4eT~DY zHezEj8V+7m!knn7)W!-5QI3=IvC^as5+TW1@Ern@yX| z7Nn~xVx&fGSr+L%4iohtS3w^{-H1A_5=r&x8}R!YZvp<2T^YFvj8G_vm}5q;^UOJf ztl=X3iL;;^^a#`t{Ae-%5Oq{?M#s6Npj+L(n-*LMI-yMR{)qki!~{5z{&`-iL}lgW zxo+tnvICK=lImjV$Z|O_cYj_PlEYCzu-XBz&XC-JVxUh9;6*z4fuBG+H{voCC;`~GYV|hj%j_&I zDZCj>Q_0RCwFauYoVMiUSB+*Mx`tg)bWmM^SwMA+?lBg12QUF_x2b)b?qb88K-YUd z0dO}3k#QirBV<5%jL$#wlf!60dizu;tsp(7XLdI=eQs?P`tOZYMjVq&jE)qK*6B^$ zBe>VvH5TO>s>izhwJJ$<`a8fakTL!yM^Zfr2hV9`f}}VVUXK39p@G|xYRz{fTI+Yq z20d=)iwjuG9RB$%$^&8#(c0_j0t_C~^|n+c`Apu|x7~;#cS-s=X1|C*YxX3ailhg_|0`g!E&GZJEr?bh#Tpb8siR=JxWKc{#w7g zWznLwi;zLFmM1g8V5-P#RsM@iX>TK$xsWuujcsVR^7TQ@!+vCD<>Bk9tdCo7Mzgq5 zv8d>dK9x8C@Qoh01u@3h0X_`SZluTb@5o;{4{{eF!-4405x8X7hewZWpz z2qEi4UTiXTvsa(0X7kQH{3VMF>W|6;6iTrrYD2fMggFA&-CBEfSqPlQDxqsa>{e2M z(R5PJ7uOooFc|9GU0ELA%m4&4Ja#cQpNw8i8ACAoK6?-px+oBl_yKmenZut#Xumjz zk8p^OV2KY&?5MUwGrBOo?ki`Sxo#?-Q4gw*Sh0k`@ zFTaYK2;}%Zk-68`#5DXU$2#=%YL#S&MTN8bF+!J2VT6x^XBci6O)Q#JfW{YMz) zOBM>t2rSj)n#0a3cjvu}r|k3od6W(SN}V-cL?bi*Iz-8uOcCcsX0L>ZXjLqk zZu2uHq5B|Kt>e+=pPKu=1P@1r9WLgYFq_TNV1p9pu0erHGd!+bBp!qGi+~4A(RsYN@CyXNrC&hxGmW)u5m35OmWwX`I+0yByglO`}HC4nGE^_HUs^&A(uaM zKPj^=qI{&ayOq#z=p&pnx@@k&I1JI>cttJcu@Ihljt?6p^6{|ds`0MoQwp+I{3l6` zB<9S((RpLG^>=Kic`1LnhpW2=Gu!x`m~=y;A`Qk!-w`IN;S8S930#vBVMv2vCKi}u z6<-VPrU0AnE&vzwV(CFC0gnZYcpa-l5T0ZS$P6(?9AM;`Aj~XDvt;Jua=jIgF=Fm? zdp=M$>`phx%+Gu};;-&7T|B1AcC#L4@mW5SV_^1BRbo6;2PWe$r+npRV`yc;T1mo& z+~_?7rA+(Um&o@Tddl zL_hxvWk~a)yY}%j`Y+200D%9$bWHy&;(yj{jpi?Rtz{J66ANw)UyPOm;t6FzY3$hx zcn)Ir79nhFvNa7^a{SHN7XH*|Vlsx`CddPnA&Qvh8aNhEA;mPVv;Ah=k<*u!Zq^7 z<=xs*iQTQOMMcg|(NA_auh@x`3#_LFt=)}%SQppP{E>mu_LgquAWvh<>L7tf9+~rO znwUDS52u)OtY<~!d$;m9+87aO+&`#2ICl@Y>&F{jI=H(K+@3M1$rr=*H^dye#~TyD z!){#Pyfn+|ugUu}G;a~!&&0aqQ59U@UT3|_JuBlYUpT$2+11;}JBJ`{+lQN9T@QFY z5+`t;6(TS0F?OlBTE!@7D`8#URDNqx2t6`GZ{ZgXeS@v%-eJzZOHz18aS|svxII$a zZeFjrJ*$IwX$f-Rzr_G>xbu@euGl)B7pC&S+CmDJBg$BoV~jxSO#>y z33`bupN#LDoW0feZe0%q8un0rYN|eRAnwDHQ6e_)xBTbtoZtTA=Fvk){q}9Os~6mQ zKB80VI_&6iSq`LnK7*kfHZoeX6?WE}8yjuDn=2#JG$+;-TOA1%^=DnXx%w{b=w}tS zQbU3XxtOI8E(!%`64r2`zog;5<0b4i)xBmGP^jiDZ2%HNSxIf3@wKs~uk4%3Mxz;~ zts_S~E4>W+YwI<-*-$U8*^HKDEa8oLbmqGg?3vewnaNg%Mm)W=)lcC_J+1ov^u*N3 zXJ?!BrH-+wGYziJq2Y#vyry6Z>NPgkEk+Ke`^DvNRdb>Q2Nlr#v%O@<5hbflI6EKE z9dWc0-ORk^T}jP!nkJ1imyjdVX@GrjOs%cpgA8-c&FH&$(4od#x6Y&=LiJZPINVyW z0snY$8JW@>tc2}DlrD3StQmA0Twck~@>8dSix9CyQOALcREdxoM$Sw*l!}bXKq9&r zysMWR@%OY24@e`?+#xV2bk{T^C_xSo8v2ZI=lBI*l{RciPwuE>L5@uhz@{!l)rtVlWC>)6(G)1~n=Q|S!{E9~6*fdpa*n z!()-8EpTdj=zr_Lswi;#{TxbtH$8*G=UM`I+icz7sr_SdnHXrv=?iEOF1UL+*6O;% zPw>t^kbW9X@oEXx<97%lBm-9?O_7L!DeD)Me#rwE54t~UBu9VZ zl_I1tBB~>jm@bw0Aljz8! zXBB6ATG6iByKIxs!qr%pz%wgqbg(l{65DP4#v(vqhhL{0b#0C8mq`bnqZ1OwFV z7mlZZJFMACm>h9v^2J9+^_zc1=JjL#qM5ZHaThH&n zXPTsR8(+)cj&>Un{6v*z?@VTLr{TmZ@-fY%*o2G}*G}#!bmqpoo*Ay@U!JI^Q@7gj;Kg-HIrLj4}#ec4~D2~X6vo;ghep-@&yOivYP zC19L0D`jjKy1Yi-SGPAn94(768Tcf$urAf{)1)9W58P`6MA{YG%O?|07!g9(b`8PXG1B1Sh0?HQmeJtP0M$O$hI z{5G`&9XzYhh|y@qsF1GnHN|~^ru~HVf#)lOTSrv=S@DyR$UKQk zjdEPFDz{uHM&UM;=mG!xKvp;xAGHOBo~>_=WFTmh$chpC7c`~7?36h)7$fF~Ii}8q zF|YXxH-Z?d+Q+27Rs3X9S&K3N+)OBxMHn1u(vlrUC6ckBY@@jl+mgr#KQUKo#VeFm zFwNYgv0<%~Wn}KeLeD9e1$S>jhOq&(e*I@L<=I5b(?G(zpqI*WBqf|Zge0&aoDUsC zngMRA_Kt0>La+Erl=Uv_J^p(z=!?XHpenzn$%EA`JIq#yYF?JLDMYiPfM(&Csr#f{ zdd+LJL1by?xz|D8+(fgzRs~(N1k9DSyK@LJygwaYX8dZl0W!I&c^K?7)z{2is;OkE zd$VK-(uH#AUaZrp=1z;O*n=b?QJkxu`Xsw&7yrX0?(CX=I-C#T;yi8a<{E~?vr3W> zQrpPqOW2M+AnZ&p{hqmHZU-;Q(7?- zP8L|Q0RM~sB0w1w53f&Kd*y}ofx@c z5Y6B8qGel+uT1JMot$nT1!Tim6{>oZzJXdyA+4euOLME?5Fd_85Uk%#E*ln%y{u8Q z$|?|R@Hpb~yTVK-Yr_S#%NUy7EBfYGAg>b({J|5b+j-PBpPy$Ns`PaJin4JdRfOaS zE|<HjH%NuJgsd2wOlv>~y=np%=2)$M9LS|>P)zJ+Fei5vYo_N~B0XCn+GM76 z)Xz3tg*FRVFgIl9zpESgdpWAavvVViGlU8|UFY{{gVJskg*I!ZjWyk~OW-Td4(mZ6 zB&SQreAAMqwp}rjy`HsG({l2&q5Y52<@AULVAu~rWI$UbFuZs>Sc*x+XI<+ez%$U)|a^unjpiW0l0 zj1!K0(b6$8LOjzRqQ~K&dfbMIE=TF}XFAi)$+h}5SD3lo z%%Qd>p9se=VtQG{kQ;N`sI)G^u|DN#7{aoEd zkksYP%_X$Rq08);-s6o>CGJ<}v`qs%eYf+J%DQ^2k68C%nvikRsN?$ap--f+vCS`K z#&~)f7!N^;sdUXu54gl3L=LN>FB^tuK=y2e#|hWiWUls__n@L|>xH{%8lIJTd5`w? zSwZbnS;W~DawT4OwSJVdAylbY+u5S+ZH{4hAi2&}Iv~W(UvHg(1GTZRPz`@{SOqzy z(8g&Dz=$PfRV=6FgxN~zo+G8OoPI&d-thcGVR*_^(R8COTM@bq?fDwY{}WhsQS1AK zF6R1t8!RdFmfocpJ6?9Yv~;WYi~XPgs(|>{5})j!AR!voO7y9&cMPo#80A(`za@t>cx<0;qxM@S*m(jYP)dMXr*?q0E`oL;12}VAep179uEr8c<=D zr5?A*C{eJ`z9Ee;E$8)MECqatHkbHH z&Y+ho0B$31MIB-xm&;xyaFCtg<{m~M-QDbY)fQ>Q*Xibb~8ytxZQ?QMf9!%cV zU0_X1@b4d+Pg#R!`OJ~DOrQz3@cpiGy~XSKjZQQ|^4J1puvwKeScrH8o{bscBsowomu z^f12kTvje`yEI3eEXDHJ6L+O{Jv$HVj%IKb|J{IvD*l6IG8WUgDJ*UGz z3!C%>?=dlfSJ>4U88)V+`U-!9r^@AxJBx8R;)J4Fn@`~k>8>v0M9xp90OJElWP&R5 zM#v*vtT}*Gm1^)Bv!s72T3PB0yVIjJW)H7a)ilkAvoaH?)jjb`MP>2z{%Y?}83 zUIwBKn`-MSg)=?R)1Q0z3b>dHE^)D8LFs}6ASG1|daDly_^lOSy&zIIhm*HXm1?VS=_iacG);_I9c zUQH1>i#*?oPIwBMJkzi_*>HoUe}_4o>2(SHWzqQ=;TyhAHS;Enr7!#8;sdlty&(>d zl%5cjri8`2X^Ds`jnw7>A`X|bl=U8n+3LKLy(1dAu8`g@9=5iw$R0qk)w8Vh_Dt^U zIglK}sn^)W7aB(Q>HvrX=rxB z+*L)3DiqpQ_%~|m=44LcD4-bxO3OO*LPjsh%p(k?&jvLp0py57oMH|*IMa(<|{m1(0S|x)?R-mqJ=I;_YUZA>J z62v*eSK;5w!h8J+6Z2~oyGdZ68waWfy09?4fU&m7%u~zi?YPHPgK6LDwphgaYu%0j zurtw)AYOpYKgHBrkX189mlJ`q)w-f|6>IER{5Lk97%P~a-JyCRFjejW@L>n4vt6#hq;!|m;hNE||LK3nw1{bJOy+eBJjK=QqNjI;Q6;Rp5 z&035pZDUZ#%Oa;&_7x0T<7!RW`#YBOj}F380Bq?MjjEhrvlCATPdkCTTl+2efTX$k zH&0zR1n^`C3ef~^sXzJK-)52(T}uTG%OF8yDhT76L~|^+hZ2hiSM*QA9*D5odI1>& z9kV9jC~twA5MwyOx(lsGD_ggYmztXPD`2=_V|ks_FOx!_J8!zM zTzh^cc+=VNZ&(OdN=y4Juw)@8-85lwf_#VMN!Ed(eQiRiLB2^2e`4dp286h@v@`O%_b)Y~A; zv}r6U?zs&@uD_+(_4bwoy7*uozNvp?bXFoB8?l8yG0qsm1JYzIvB_OH4_2G*IIOwT zVl%HX1562vLVcxM_RG*~w_`FbIc!(T=3>r528#%mwwMK}uEhJ()3MEby zQQjzqjWkwfI~;Fuj(Lj=Ug0y`>~C7`w&wzjK(rPw+Hpd~EvQ-ufQOiB4OMpyUKJhw zqEt~jle9d7S~LI~$6Z->J~QJ{Vdn3!c}g9}*KG^Kzr^(7VI5Gk(mHLL{itj_hG?&K4Ws0+T4gLfi3eu$N=`s36geNC?c zm!~}vG6lx9Uf^5M;bWntF<-{p^bruy~f?sk9 zcETAPQZLoJ8JzMMg<-=ju4keY@SY%Wo?u9Gx=j&dfa6LIAB|IrbORLV1-H==Z1zCM zeZcOYpm5>U2fU7V*h;%n`8 zN95QhfD994={1*<2vKLCNF)feKOGk`R#K~G=;rfq}|)s20&MCa65 zUM?xF5!&e0lF%|U!#rD@I{~OsS_?=;s_MQ_b_s=PuWdC)q|UQ&ea)DMRh5>fpQjXe z%9#*x=7{iRCtBKT#H>#v%>77|{4_slZ)XCY{s3j_r{tdpvb#|r|sbS^dU1x70$eJMU!h{Y7Kd{dl}9&vxQl6Jt1a` zHQZrWyY0?!vqf@u-fxU_@+}u(%Wm>0I#KP48tiAPYY!TdW(o|KtVI|EUB9V`CBBNaBLVih7+yMVF|GSoIQD0Jfb{ z!OXq;(>Z?O`1gap(L~bUcp>Lc@Jl-})^=6P%<~~9ywY=$iu8pJ0m*hOPzr~q`23eX zgbs;VOxxENe0UMVeN*>uCn9Gk!4siN-e>x)pIKAbQz!G)TcqIJ0`JBBaX>1-4_XO_-HCS^vr2vjv#7KltDZdyQ{tlWh4$Gm zB>|O1cBDC)yG(sbnc*@w6e%e}r*|IhpXckx&;sQCwGdKH+3oSG-2)Bf#x`@<4ETAr z0My%7RFh6ZLiZ_;X6Mu1YmXx7C$lSZ^}1h;j`EZd6@%JNUe=btBE z%s=Xmo1Ps?8G`}9+6>iaB8bgjUdXT?=trMu|4yLX^m0Dg{m7rpKNJey|EwHI+nN1e zL^>qN%5Fg)dGs4DO~uwIdXImN)QJ*Jhpj7$fq_^`{3fwpztL@WBB}OwQ#Epo-mqMO zsM$UgpFiG&d#)lzEQ{3Q;)&zTw;SzGOah-Dpm{!q7<8*)Ti_;xvV2TYXa}=faXZy? z3y?~GY@kl)>G&EvEijk9y1S`*=zBJSB1iet>0;x1Ai)*`^{pj0JMs)KAM=@UyOGtO z3y0BouW$N&TnwU6!%zS%nIrnANvZF&vB1~P5_d`x-giHuG zPJ;>XkVoghm#kZXRf>qxxEix;2;D1CC~NrbO6NBX!`&_$iXwP~P*c($EVV|669kDO zKoTLZNF4Cskh!Jz5ga9uZ`3o%7Pv`d^;a=cXI|>y;zC3rYPFLQkF*nv(r>SQvD*## z(Vo%^9g`%XwS0t#94zPq;mYGLKu4LU3;txF26?V~A0xZbU4Lmy`)>SoQX^m7fd^*E z+%{R4eN!rIk~K)M&UEzxp9dbY;_I^c} zOc{wlIrN_P(PPqi51k_$>Lt|X6A^|CGYgKAmoI#Li?;Wq%q~q*L7ehZkUrMxW67Jl zhsb~+U?33QS>eqyN{(odAkbopo=Q$Az?L+NZW>j;#~@wCDX?=L5SI|OxI~7!Pli;e zELMFcZtJY3!|=Gr2L4>z8yQ-{To>(f80*#;6`4IAiqUw`=Pg$%C?#1 z_g@hIGerILSU>=P>z{gM|DS91A4cT@PEIB^hSop!uhMo#2G;+tQSpDO_6nOnPWSLU zS;a9m^DFMXR4?*X=}d7l;nXuHk&0|m`NQn%d?8|Ab3A9l9Jh5s120ibWBdB z$5YwsK3;wvp!Kn@)Qae{ef`0#NwlRpQ}k^r>yos_Ne1;xyKLO?4)t_G4eK~wkUS2A&@_;)K0-03XGBzU+5f+uMDxC z(s8!8!RvdC#@`~fx$r)TKdLD6fWEVdEYtV#{ncT-ZMX~eI#UeQ-+H(Z43vVn%Yj9X zLdu9>o%wnWdvzA-#d6Z~vzj-}V3FQ5;axDIZ;i(95IIU=GQ4WuU{tl-{gk!5{l4_d zvvb&uE{%!iFwpymz{wh?bKr1*qzeZb5f6e6m_ozRF&zux2mlK=v_(_s^R6b5lu?_W4W3#<$zeG~Pd)^!4tzhs}-Sx$FJP>)ZGF(hVTH|C3(U zs0PO&*h_ zNA-&qZpTP$$LtIgfiCn07}XDbK#HIXdmv8zdz4TY;ifNIH-0jy(gMSByG2EF~Th#eb_TueZC` zE?3I>UTMpKQ})=C;6p!?G)M6w^u*A57bD?2X`m3X^6;&4%i_m(uGJ3Z5h`nwxM<)H z$I5m?wN>O~8`BGnZ=y^p6;0+%_0K}Dcg|K;+fEi|qoBqvHj(M&aHGqNF48~XqhtU? z^ogwBzRlOfpAJ+Rw7IED8lRbTdBdyEK$gPUpUG}j-M42xDj_&qEAQEtbs>D#dRd7Y z<&TpSZ(quQDHiCFn&0xsrz~4`4tz!CdL8m~HxZM_agu@IrBpyeL1Ft}V$HX_ZqDPm z-f89)pjuEzGdq-PRu`b1m+qBGY{zr_>{6Ss>F|xHZlJj9dt5HD$u`1*WZe)qEIuDSR)%z+|n zatVlhQ?$w#XRS7xUrFE;Y8vMGhQS5*T{ZnY=q1P?w5g$OKJ#M&e??tAmPWHMj3xhS ziGxapy?kn@$~2%ZY;M8Bc@%$pkl%Rvj!?o%agBvpQ-Q61n9kznC4ttrRNQ4%GFR5u zyv%Yo9~yxQJWJSfj z?#HY$y=O~F|2pZs22pu|_&Ajd+D(Mt!nPUG{|1nlvP`=R#kKH zO*s$r_%ss5h1YO7k0bHJ2CXN)Yd6CHn~W!R=SqkWe=&nAZu(Q1G!xgcUilM@YVei@2@a`8he z9@pM`)VB*=e7-MWgLlXlc)t;fF&-AwM{E-EX}pViFn0I0CNw2bNEnN2dj!^4(^zS3 zobUm1uQnpqk_4q{pl*n06=TfK_C>UgurKFjRXsK_LEn};=79`TB12tv6KzwSu*-C8 z;=~ohDLZylHQ|Mpx-?yql>|e=vI1Z!epyUpAcDCp4T|*RV&X`Q$0ogNwy6mFALo^@ z9=&(9txO8V@E!@6^(W0{*~CT>+-MA~vnJULBxCTUW>X5>r7*eXYUT0B6+w@lzw%n> z_VjJ<2qf|(d6jYq2(x$(ZDf!yVkfnbvNmb5c|hhZ^2TV_LBz`9w!e_V*W_(MiA7|= z&EeIIkw*+$Xd!)j8<@_<}A5;~A_>3JT*kX^@}cDoLd>Qj<`Se^wdUa(j0dp+Tl8EptwBm{9OGsdFEq zM`!pjf(Lm(`$e3FLOjqA5LnN5o!}z{ zNf}rJuZh@yUtq&ErjHeGzX4(!luV!jB&;FAP|!R_QHYw#^Z1LwTePAKJ6X&IDNO#; z)#I@Xnnzyij~C@UH~X51JCgQeF0&hTXnuoElz#m{heZRexWc0k4<>0+ClX7%0 zEBqCCld1tD9Zwkr4{?Nor19#E5-YKfB8d?qgR82-Ow2^AuNevly2*tHA|sK!ybYkX zm-sLQH72P&{vEAW6+z~O5d0qd=xW~rua~5a?ymYFSD@8&gV)E5@RNNBAj^C99+Z5Z zR@Pq55mbCQbz+Mn$d_CMW<-+?TU960agEk1J<>d>0K=pF19yN))a~4>m^G&tc*xR+yMD*S=yip-q=H zIlredHpsJV8H(32@Zxc@bX6a21dUV95Th--8pE6C&3F>pk=yv$yd6@Haw;$v4+Fcb zRwn{Qo@0`7aPa2LQOP}j9v>sjOo5Kqvn|`FLizX zB+@-u4Lw|jsvz{p^>n8Vo8H2peIqJJnMN}A)q6%$Tmig7eu^}K2 zrh$X?T|ZMsoh{6pdw1G$_T<`Ds-G=jc;qcGdK4{?dN2-XxjDNbb(7pk|3JUVCU4y; z)?LXR>f+AAu)JEiti_Zy#z5{RgsC}R(@jl%9YZ>zu~hKQ*AxbvhC378-I@{~#%Y`Z zy=a=9YpewPIC+gkEUUwtUL7|RU7=!^Aa}Mk^6uxOgRGA#JXjWLsjFUnix|Mau{hDT z7mn*z1m5g`vP(#tjT0Zy4eAY(br&!RiiXE=ZI!{sE1#^#%x^Z7t1U)b<;%Y}Q9=5v z;wpDCEZ@OE36TWT=|gxigT@VaW9BvHS05;_P(#s z8zI4XFQys}q)<`tkX$WnSarn{3e!s}4(J!=Yf>+Y>cP3f;vr63f2{|S^`_pWc)^5_!R z*(x-fuBxL51@xe!lnDBKi}Br$c$BMZ3%f2Sa6kLabiBS{pq*yj;q|k(86x`PiC{p6 z_bxCW{>Q2BA8~Ggz&0jkrcU+-$ANBsOop*ms>34K9lNYil@}jC;?cYP(m^P}nR6FV zk(M%48Z&%2Rx$A&FhOEirEhY0(dn;-k(qkTU)sFQ`+-ih+s@A8g?r8Pw+}2;35WYf zi}VO`jS`p(tc)$X$a>-#WXoW!phhatC*$}|rk>|wUU71eUJG^$c6_jwX?iSHM@6__ zvV|6%U*$sSXJu9SX?2%M^kK|}a2QJ8AhF{fuXrHZxXsI~O zGKX45!K7p*MCPEQ=gp?eu&#AW*pR{lhQR##P_*{c_DjMGL|3T3-bSJ(o$|M{ytU}> zAV>wq*uE*qFo9KvnA^@juy{x<-u*#2NvkV={Ly}ysKYB-k`K3@K#^S1Bb$8Y#0L0# z`6IkSG&|Z$ODy|VLS+y5pFJx&8tvPmMd8c9FhCyiU8~k6FwkakUd^(_ml8`rnl>JS zZV){9G*)xBqPz^LDqRwyS6w86#D^~xP4($150M)SOZRe9sn=>V#aG0Iy(_^YcPpIz8QYM-#s+n% z@Jd?xQq?Xk6=<3xSY7XYP$$yd&Spu{A#uafiIfy8gRC`o0nk{ezEDjb=q_qRAlR1d zFq^*9Gn)yTG4b}R{!+3hWQ+u3GT~8nwl2S1lpw`s0X_qpxv)g+JIkVKl${sYf_nV~B>Em>M;RlqGb5WVil(89 zs=ld@|#;dq1*vQGz=7--Br-|l) zZ%Xh@v8>B7P?~}?Cg$q9_={59l%m~O&*a6TKsCMAzG&vD>k2WDzJ6!tc!V)+oxF;h zJH;apM=wO?r_+*#;ulohuP=E>^zon}a$NnlcQ{1$SO*i=jnGVcQa^>QOILc)e6;eNTI>os=eaJ{*^DE+~jc zS}TYeOykDmJ=6O%>m`i*>&pO_S;qMySJIyP=}4E&J%#1zju$RpVAkZbEl+p%?ZP^C z*$$2b4t%a(e+%>a>d_f_<JjxI#J1x;=hPd1zFPx=6T$;;X1TD*2(edZ3f46zaAoW>L53vS_J*N8TMB|n+;LD| zC=GkQPpyDY#Am4l49chDv*gojhRj_?63&&8#doW`INATAo(qY#{q}%nf@eTIXmtU< zdB<7YWfyCmBs|c)cK>1)v&M#!yNj#4d$~pVfDWQc_ke1?fw{T1Nce_b`v|Vp5ig(H zJvRD^+ps46^hLX;=e2!2e;w9y1D@!D$c@Jc&%%%IL=+xzw55&2?darw=9g~>P z9>?Kdc$r?6c$m%x2S$sdpPl>GQZ{rC9mPS63*qjCVa?OIBj!fW zm|g?>CVfGXNjOfcyqImXR_(tXS(F{FcoNzKvG5R$IgGaxC@)i(e+$ME}vPVIhd|mx2IIE+f zM?9opQHIVgBWu)^A|RzXw!^??S!x)SZOwZaJkGjc<_}2l^eSBm!eAJG9T>EC6I_sy z?bxzDIAn&K5*mX)$RQzDA?s)-no-XF(g*yl4%+GBf`##bDXJ==AQk*xmnatI;SsLp zP9XTHq5mmS=iWu~9ES>b%Q=1aMa|ya^vj$@qz9S!ih{T8_PD%Sf_QrNKwgrXw9ldm zHRVR98*{C?_XNpJn{abA!oix_mowRMu^2lV-LPi;0+?-F(>^5#OHX-fPED zCu^l7u3E%STI}c4{J2!)9SUlGP_@!d?5W^QJXOI-Ea`hFMKjR7TluLvzC-ozCPn1`Tpy z!vlv@_Z58ILX6>nDjTp-1LlFMx~-%GA`aJvG$?8*Ihn;mH37eK**rmOEwqegf-Ccx zrIX4;{c~RK>XuTXxYo5kMiWMy)!IC{*DHG@E$hx?RwP@+wuad(P1{@%tRkyJRqD)3 zMHHHZ4boqDn>-=DgR5VlhQTpfVy182Gk;A_S8A1-;U1RR>+$62>(MUx@Nox$vTjHq z%QR=j!6Gdyb5wu7y(YUktwMuW5<@jl?m4cv4BODiT5o8qVdC0MBqGr@-YBIwnpZAY znX9(_uQjP}JJ=!~Ve9#5I~rUnN|P_3D$LqZcvBnywYhjlMSFHm`;u9GPla{5QD7(7*6Tb3Svr8;(nuAd81q$*uq6HC_&~je*Ca7hP4sJp0av{M8480wF zxASi7Qv+~@2U%Nu1Ud;s-G4CTVWIPyx!sg&8ZG0Wq zG_}i3C(6_1>q3w!EH7$Kwq8uBp2F2N7}l65mk1p*9v0&+;th=_E-W)E;w}P(j⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930..b82aa23a4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 0adc8e1a5..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f1..25da30dbd 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/settings.gradle.kts b/settings.gradle.kts index 2cc466665..eb5a07bf7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,7 +8,7 @@ pluginManagement { } plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" } if (!file(".git").exists()) { From bd0d44dca79dc25b8cb31cd64bd157725365657c Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 3 Apr 2024 19:56:26 -0700 Subject: [PATCH 085/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e709245 Add config option for tripwire disarming fix --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4a3bbca5b..553606fe1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 45d1486fecab6f50c193bea0fcf03727832f3091 +paperCommit = e709245b5566229ed5c262b310bcd1a1e71a8918 org.gradle.caching = true org.gradle.parallel = true From b64f4f50e234b35bf58dfd2cadcd6395386fdbb9 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 6 Apr 2024 19:03:06 -0700 Subject: [PATCH 086/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a203544 build: Compile against and shade the filtered jar (#9747) PaperMC/Paper@bd38e03 Updated Upstream (Bukkit/CraftBukkit) (#10379) PaperMC/Paper@a774fba feat: Entity#teleportAsync method with TeleportFlags (#10371) PaperMC/Paper@06361fa Fix invalid block entities created during world gen (#10375) PaperMC/Paper@bbee11f Deprecate Bukkit#getLogger (#10388) PaperMC/Paper@d8456ee Don't throw NPE for unplaced blockstate on #getDrops (#10366) PaperMC/Paper@182e79b Add more item use API (#10304) PaperMC/Paper@acf838f Backport some stuff from the generators branch (#10365) PaperMC/Paper@3d31e45 Add BlockBreakProgressUpdateEvent (#10300) PaperMC/Paper@8e75001 Disable vertical air friction when item entities have friction disabled (#10369) PaperMC/Paper@241d8e2 Ignore minecart in activation range (#10359) PaperMC/Paper@1207162 Allow player-list API to self un/list (#10358) --- gradle.properties | 2 +- patches/api/0001-Pufferfish-API-Changes.patch | 6 +-- patches/api/0003-Purpur-config-files.patch | 4 +- patches/api/0007-Ridables.patch | 4 +- patches/api/0011-Bring-back-server-name.patch | 8 ++-- .../0013-LivingEntity-safeFallDistance.patch | 6 +-- patches/api/0014-Lagging-threshold.patch | 8 ++-- .../0017-ItemStack-convenience-methods.patch | 4 +- ...0018-LivingEntity-broadcastItemBreak.patch | 4 +- ...027-API-for-any-mob-to-burn-daylight.patch | 8 ++-- ...the-ability-to-add-combustible-items.patch | 8 ++-- .../api/0038-Add-local-difficulty-api.patch | 4 +- patches/api/0041-Debug-Marker-API.patch | 12 +++--- patches/api/0046-Fire-Immunity-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 37 +++++++------------ patches/server/0002-Rebrand.patch | 14 +++---- .../server/0003-Fix-pufferfish-issues.patch | 21 ++--------- .../server/0005-Purpur-client-support.patch | 6 +-- patches/server/0008-Ridables.patch | 22 +++++------ patches/server/0012-AFK-API.patch | 12 +++--- .../0015-LivingEntity-safeFallDistance.patch | 12 +++--- .../0060-Implement-elytra-settings.patch | 8 ++-- patches/server/0074-Squid-EAR-immunity.patch | 6 +-- ...0087-LivingEntity-broadcastItemBreak.patch | 4 +- ...173-API-for-any-mob-to-burn-daylight.patch | 10 ++--- .../0179-Add-portal-permission-bypass.patch | 4 +- .../0206-Extended-OfflinePlayer-API.patch | 4 +- patches/server/0235-Allow-void-trading.patch | 4 +- ...fig-for-mob-last-hurt-by-player-time.patch | 6 +-- patches/server/0249-Stonecutter-damage.patch | 4 +- .../0258-Add-local-difficulty-api.patch | 4 +- .../0261-Allow-custom-ChatDecorators.patch | 4 +- patches/server/0262-Remove-Timings.patch | 22 +++++------ .../server/0263-Remove-Mojang-Profiler.patch | 26 ++++++------- patches/server/0266-Debug-Marker-API.patch | 8 ++-- .../server/0270-Add-death-screen-API.patch | 4 +- ...04-register-minecraft-debug-commands.patch | 4 +- 37 files changed, 153 insertions(+), 175 deletions(-) diff --git a/gradle.properties b/gradle.properties index 553606fe1..16f3daa9f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = e709245b5566229ed5c262b310bcd1a1e71a8918 +paperCommit = 12071620558a64575ac641d9b93c120a66e5e3a7 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 3f52c985d..1fbc75a41 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 66bcd8f9a8fce8f920a0f1dd7ae0a2937da68e80..c43eb3099747b9f1155b918ca818487b63488538 100644 +index 04853c43b99951bf0d4c96ef73724625bdaf018f..9164120d299d062c62529a7ef74eac0ded367993 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { @@ -29,8 +29,8 @@ index 66bcd8f9a8fce8f920a0f1dd7ae0a2937da68e80..c43eb3099747b9f1155b918ca818487b api("org.slf4j:slf4j-api:$slf4jVersion") + api("io.sentry:sentry:5.4.0") // Pufferfish - implementation("org.ow2.asm:asm:9.5") - implementation("org.ow2.asm:asm-commons:9.5") + implementation("org.ow2.asm:asm:9.7") + implementation("org.ow2.asm:asm-commons:9.7") @@ -109,6 +110,13 @@ val generateApiVersioningFile by tasks.registering { } } diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0003-Purpur-config-files.patch index 3693a5e77..9f404b21d 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0003-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 0eb61b090d6f8fa6d99735ff3680dac774c52c1f..771f9f054268aa574b76c976b4734595b529aae9 100644 +index 4ff1b38eb65f97344257204cf018f176f247ed36..2e9abd4887b54dab53217c01773e0be5fb3b19fa 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2229,6 +2229,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2235,6 +2235,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0007-Ridables.patch b/patches/api/0007-Ridables.patch index cc3f8b7d6..f27b057a0 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0007-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 967125e99adc1b5446f42811d60ef44ba56ef5f5..02418d7d976147c70375002452cb39a4325de215 100644 +index 23def071492ccd715693d534cc506936e18f0f46..93178130cba1aea4c210e47925703dca49ad4d97 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1138,4 +1138,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1144,4 +1144,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0011-Bring-back-server-name.patch index 81d22a559..300d69c1c 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index db46e3233edf18bd91a6da8612ccc9f0080d5c17..13eeaf8a59c83ecfdbdb8cf62e78fd70b00d170b 100644 +index 9a428153f34291bdc026a71f7e60e285b7794b0c..a7ab6c954c67fe802ebd4611a8c355d19873a465 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2878,4 +2878,15 @@ public final class Bukkit { +@@ -2884,4 +2884,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index db46e3233edf18bd91a6da8612ccc9f0080d5c17..13eeaf8a59c83ecfdbdb8cf62e78fd70 + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 771f9f054268aa574b76c976b4734595b529aae9..5e44a3cb8b8865e760d2f600af1351259b2867fe 100644 +index 2e9abd4887b54dab53217c01773e0be5fb3b19fa..ef56a9a52cad11377f4a58b92bcb1bc2740002df 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2524,4 +2524,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2530,4 +2530,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index ed4e1eb01..5b9e0d217 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,13 +5,13 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 5cb82901a5d0c8ee673501fc53389d526d4a5b6f..4051906aa47dc2392f1f47aceaefa09aaf45c2ee 100644 +index 65112eae8b92344796850b1e4c89e75443eab2fe..0a970ea7bfce16476ceafbe9764115f6610a248b 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1312,4 +1312,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1445,4 +1445,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); - // Paper end + // Paper end - body yaw API + + // Purpur start + /** diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch index 09efe342c..e1bdc520d 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 13eeaf8a59c83ecfdbdb8cf62e78fd70b00d170b..812d903e8883ab087ec7ae154d76dceb019bac17 100644 +index a7ab6c954c67fe802ebd4611a8c355d19873a465..8ff0b6c0bab4c8972de1c59b7a9c4e80db350fba 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2888,5 +2888,14 @@ public final class Bukkit { +@@ -2894,5 +2894,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index 13eeaf8a59c83ecfdbdb8cf62e78fd70b00d170b..812d903e8883ab087ec7ae154d76dceb // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 5e44a3cb8b8865e760d2f600af1351259b2867fe..45287918b72c3053f21b56cd33b6daf692c9888a 100644 +index ef56a9a52cad11377f4a58b92bcb1bc2740002df..846707b827e9f542c7a0b3191ea92b602dd4aa63 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2532,5 +2532,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2538,5 +2538,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch index 2aceddef5..e59e4539b 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0017-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index f9af60356da4668cec8b24e73f5747ab82e35a91..b304ad1307cdd6785653b1eab9781e070fb14c5a 100644 +index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09fcc9c960c 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11557,4 +11557,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11559,4 +11559,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } diff --git a/patches/api/0018-LivingEntity-broadcastItemBreak.patch b/patches/api/0018-LivingEntity-broadcastItemBreak.patch index d84c3ca8a..9fd2aebc2 100644 --- a/patches/api/0018-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0018-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 4051906aa47dc2392f1f47aceaefa09aaf45c2ee..f16a6eb97dcea3009023bffada76393792462e53 100644 +index 0a970ea7bfce16476ceafbe9764115f6610a248b..bcc1488c351b25bd49d37dae7719bbb7057acf66 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1327,5 +1327,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1460,5 +1460,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch index eb5d17f10..4e3e15db2 100644 --- a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0027-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 02418d7d976147c70375002452cb39a4325de215..644f58eeef73bab67ab50b16b87e7c2e798ea2c0 100644 +index 93178130cba1aea4c210e47925703dca49ad4d97..51ae4b559a6ebb5c324ac029c86e5b5a6b894d7e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1168,5 +1168,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1174,5 +1174,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); @@ -23,10 +23,10 @@ index 02418d7d976147c70375002452cb39a4325de215..644f58eeef73bab67ab50b16b87e7c2e // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index f16a6eb97dcea3009023bffada76393792462e53..91ce069e4f23a115a01b329dcf053ed19dfb83bc 100644 +index bcc1488c351b25bd49d37dae7719bbb7057acf66..5369d802d37863a1efc0c031520147ceedcadc78 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1334,5 +1334,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1467,5 +1467,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch b/patches/api/0033-Added-the-ability-to-add-combustible-items.patch index de687d1fb..6c5238aa8 100644 --- a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0033-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 812d903e8883ab087ec7ae154d76dceb019bac17..17bb5de3f1216ddfcb66152a0791c63334460051 100644 +index 8ff0b6c0bab4c8972de1c59b7a9c4e80db350fba..15f27ae49daf0c9140b429d310f9112f64bd29ab 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2897,5 +2897,24 @@ public final class Bukkit { +@@ -2903,5 +2903,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index 812d903e8883ab087ec7ae154d76dceb019bac17..17bb5de3f1216ddfcb66152a0791c633 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 45287918b72c3053f21b56cd33b6daf692c9888a..109811ccc128006e29751e2242e171519c8557c7 100644 +index 846707b827e9f542c7a0b3191ea92b602dd4aa63..e318d4d5a1fec1522ef37aed2ed677952e50943b 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2539,5 +2539,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2545,5 +2545,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0038-Add-local-difficulty-api.patch b/patches/api/0038-Add-local-difficulty-api.patch index 66b359723..91b4d417b 100644 --- a/patches/api/0038-Add-local-difficulty-api.patch +++ b/patches/api/0038-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index c5fe36050eeaff80cfb989fe2f38370215af6fe5..9ac1ee847e64427cb9b1b396c23b6689f7c99f9c 100644 +index 35fb5047dd8a8521586a9ca9f8d70881355fb7f5..bd1ceec96d354ddfeb7f79e6007b79c4da37a8bb 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4213,6 +4213,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4222,6 +4222,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0041-Debug-Marker-API.patch b/patches/api/0041-Debug-Marker-API.patch index 8f34da2a9..0efb071b2 100644 --- a/patches/api/0041-Debug-Marker-API.patch +++ b/patches/api/0041-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 17bb5de3f1216ddfcb66152a0791c63334460051..afe47ecf0e7ae673aaf62b226e9cb07d2ed393eb 100644 +index 15f27ae49daf0c9140b429d310f9112f64bd29ab..53ce0fb2dac9c22680ab934f535b5a2037139445 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2916,5 +2916,89 @@ public final class Bukkit { +@@ -2922,5 +2922,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 17bb5de3f1216ddfcb66152a0791c63334460051..afe47ecf0e7ae673aaf62b226e9cb07d // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 109811ccc128006e29751e2242e171519c8557c7..90f109af3c83a1bc12cb27497d107de5029d0ce6 100644 +index e318d4d5a1fec1522ef37aed2ed677952e50943b..c15b0b05870a469ea5d314c9fac6a57a045f463c 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2554,5 +2554,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2560,5 +2560,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -179,10 +179,10 @@ index 109811ccc128006e29751e2242e171519c8557c7..90f109af3c83a1bc12cb27497d107de5 // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 9ac1ee847e64427cb9b1b396c23b6689f7c99f9c..565ce4b0c5eb300953aaefa786b9f8938c771f2a 100644 +index bd1ceec96d354ddfeb7f79e6007b79c4da37a8bb..c2fc3c7158b65a875515afda0d69e2d6529db976 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4221,6 +4221,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4230,6 +4230,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); diff --git a/patches/api/0046-Fire-Immunity-API.patch b/patches/api/0046-Fire-Immunity-API.patch index f3be9e4a7..e143436ef 100644 --- a/patches/api/0046-Fire-Immunity-API.patch +++ b/patches/api/0046-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 644f58eeef73bab67ab50b16b87e7c2e798ea2c0..c83293ced48a0f43cb9314d306321e26b469f51e 100644 +index 51ae4b559a6ebb5c324ac029c86e5b5a6b894d7e..706096924ffd3b578866693e2937de4182fad554 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1175,5 +1175,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1181,5 +1181,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 38232c41b..0f5386a2d 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 241808d8619e17c0681f79acbbc98af5bf52dd89..12b774464e8de3a07993be23e233d31e11ede7b1 100644 +index bcfe59b6efb628ee1e7f9d60667360d4d885fb6a..4517548e2c892c2e94f91e7449660f9e36b8f14e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -76,15 +76,6 @@ index 241808d8619e17c0681f79acbbc98af5bf52dd89..12b774464e8de3a07993be23e233d31e "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -211,7 +230,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src -> - } - tasks.registerRunTask("runDev") { - description = "Spin up a non-relocated Mojang-mapped test server" -- classpath(tasks.filterProjectDir.flatMap { it.outputJar }) -- classpath(runtimeClasspathForRunDev) -- jvmArgs("-DPaper.isRunDev=true") -+ classpath(sourceSets.main.map { it.runtimeClasspath }) - } diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java index 7620c72a4c243cbeea245203ce03a97cbfa7d922..b35a9f4c5f8960864c402ede8a51fb5ab9c4fcc0 100644 --- a/src/main/java/co/aikar/timings/TimingsExport.java @@ -1497,7 +1488,7 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 93b661e9cb7743aeff7da3972942cb73049a5e4c..60dad77b824c9b6a45e3a3960eb9d995583f1d28 100644 +index c8772c773f9933ed1d1debfe707af4373c458152..07319732c76473589774c90edf8a1f1ba4b26d04 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entity.activatedTick ) { if ( entity.defaultActivationState ) @@ -3389,7 +3380,7 @@ index c39894e824334f1dc52e0466cf9d84f7e219be70..41cddf7e42f0e8f80973e482a95e55d3 entity.activatedTick = MinecraftServer.currentTick; } } -@@ -296,7 +319,7 @@ public class ActivationRange +@@ -298,7 +321,7 @@ public class ActivationRange if ( entity instanceof LivingEntity ) { LivingEntity living = (LivingEntity) entity; diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index 9ee29f584..4a02365d1 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 12b774464e8de3a07993be23e233d31e11ede7b1..7e82d2c6a6085a5ea335ba9ef2a5ec3f5a37e787 100644 +index 4517548e2c892c2e94f91e7449660f9e36b8f14e..1cad0728d005df9475a978b272adef9703f2ba46 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -45,7 +45,7 @@ index 12b774464e8de3a07993be23e233d31e11ede7b1..7e82d2c6a6085a5ea335ba9ef2a5ec3f "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -174,7 +178,7 @@ fun TaskContainer.registerRunTask( +@@ -169,7 +173,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -177,7 +177,7 @@ index 99c5038672b09d0874125e3df280174c1e8151e6..f91ea723a1c85f6cf8c4f6dd7f182b94 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 60dad77b824c9b6a45e3a3960eb9d995583f1d28..9ce656109ea20de5f443f9e680debe38e9dace24 100644 +index 07319732c76473589774c90edf8a1f1ba4b26d04..b2dd76b79660126cac3b995e9ca2f88dc70937ff 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -953,7 +953,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop - } - tasks.registerRunTask("runDev") { - description = "Spin up a non-relocated Mojang-mapped test server" -- classpath(sourceSets.main.map { it.runtimeClasspath }) -+ classpath(tasks.filterProjectDir.flatMap { it.outputJar }) -+ classpath(runtimeClasspathForRunDev) -+ jvmArgs("-DPaper.isRunDev=true") - } diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -58,7 +45,7 @@ index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c210 "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 62ad086b5b07303d920fdb3534a556673ef51f71..15aaa270e51b9194596e7ed5061c85c9fb54e177 100644 +index 4bd83e1605fb6540be1847dc3691e74b95f260ad..7f5749c15f017624af11b81b497efd229b81efd9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -924,7 +924,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -80,7 +67,7 @@ index 62ad086b5b07303d920fdb3534a556673ef51f71..15aaa270e51b9194596e7ed5061c85c9 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5c5c8fbd562b46f8699be97353447eaab36c007a..385253bddf50c290317b6d0f283331edf515badd 100644 +index 5298be16774b23b71d2de3b8697a758c73255912..f664ab1748aab367ae0c468cfd54dad3ade42ec3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -106,7 +93,7 @@ index 837f68825f601971f374be47952b23108bf66ba6..2a8a8030feefae84e394460612405887 return; } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index dbbb726f90077b4116b0c9424aa95c9db52ae100..9f5cde72a5305572202c316e750ad1b5e778fd87 100644 +index 15186884c67f8b75a6b40e244c8b18797f098fd1..d70b6dd93702fcd5590b19eceba0281ce39e9de4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -216,7 +216,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -119,7 +106,7 @@ index dbbb726f90077b4116b0c9424aa95c9db52ae100..9f5cde72a5305572202c316e750ad1b5 protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 922191159fadf8e89646d7299aadee4aa851f71a..5fab6909bd2ee303f49b7e667617bcae608e82d7 100644 +index 270a892373ecbb3982990d6201d79c8a66de4f60..d087c8271dbdfe3dc6d805539a710d37ed6d7f21 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -122,7 +122,7 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index a1961f7a5..1fe4bcede 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 58591bf2f63b9c5e97d9ce4188dff3366968a178..1d91ce01e7ce806a5b2e937ff855ebf159534f29 100644 +index b3781efbd3edcf102fe1bda5d6149915dc1127c6..ae0c027a49ae6d09c86053945992f4480df5b1d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { @@ -43,10 +43,10 @@ index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..34559eae0ea3f88d7b9a3c9e4a2350c4 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 206520f6f20b2e48b1eefdd4edb26510b88e4c92..ab96c92d3d995a64ea9fd1c3996da35148195c48 100644 +index e77bf7f432387bdfa7f69d31b014e8cd254fd4ca..6a558a7042b78e8de7fc637053468ac9029b4133 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3427,4 +3427,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3425,4 +3425,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { this.getHandle().setSendViewDistance(viewDistance); } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 42df2cdc8..2067530fc 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,7 +22,7 @@ index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9ce656109ea20de5f443f9e680debe38e9dace24..5a0ebacdda1cf62ce5c8d088c1266cfd47923ff5 100644 +index b2dd76b79660126cac3b995e9ca2f88dc70937ff..fcf2d5e56c025f236589c40f598e36a167b13a41 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1712,6 +1712,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 15aaa270e51b9194596e7ed5061c85c9fb54e177..1e9e75906838e358935dd920800eb5b6acfc8e11 100644 +index 7f5749c15f017624af11b81b497efd229b81efd9..7d0a0ab955ec45f4883c987428722a4b647fcece 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index 15aaa270e51b9194596e7ed5061c85c9fb54e177..1e9e75906838e358935dd920800eb5b6 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d39a3359249e2a312da0645d5abb625d98fe4034..44409eed0b603a1e8203a35ff0263d360d81be32 100644 +index e10999f90a695ac8399f1089aae6b8c0a225f5da..afca9734927fd003e249972439494c561f0c0966 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -763,6 +763,15 @@ public class ServerPlayer extends Player { @@ -66,7 +66,7 @@ index d39a3359249e2a312da0645d5abb625d98fe4034..44409eed0b603a1e8203a35ff0263d36 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6bd9ac31a 100644 +index 2ae1d53364da7f0e30c642df4e9a62f9e6581432..d9f24bcc2f5eaabc49f6a9ec545afe2d096fc532 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -79,7 +79,7 @@ index 601ac8738a775eafde2c9e237feb596a9a47ba89..7f73d724af2c468a06dcfd760a70b8d6 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3d9e96a54a00a7b2a73d2d26752b581deba94854..2518a9ebb69de85b1e387d115213bf2b20a0e715 100644 +index 670761baeb8a9e6df3728bb66515e96750b76526..dcb0a4f3e688198f19f75abdf7b0165d359dcef8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -190,7 +190,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 25e30408c964b5257f1cf945892bd668df38252b..4621dd94e9346bdd2eeca1d17869ff99aede0077 100644 +index 366121188c5abb550ed0a5f99d25c001628685bb..98907fee8d85e7b7dc66807a0717134db3a94c33 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -5175,10 +5175,10 @@ index 6f49b9b8707d74330adb973e0db3cd5bccf138b6..f5e1aa316a90bf2cd9c997b76830096d public boolean isPickable() { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 7cd7912cecbbbe2c32bfd9b85181115c6d316eb8..18d3b660bc5efaca76379f836fc7afb0158eda3b 100644 +index e8e4489bcd64fde1b3226bdc7a7cc612508bda3f..85d154f18e240cac77e023b4b5983ad7a95912b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1252,4 +1252,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1270,4 +1270,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5207,10 +5207,10 @@ index 7cd7912cecbbbe2c32bfd9b85181115c6d316eb8..18d3b660bc5efaca76379f836fc7afb0 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index cb3e9672f375a1a660757a05362729ddb5ca7504..c12fb91e6fa286b99bd08ff39cda7d6e4ff73f19 100644 +index c0823c612de9dc2a64cc797f061eef25c5f31359..171efb1ab482d0042bead18df0880f038cfda16a 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -592,6 +592,15 @@ public class CraftEventFactory { +@@ -593,6 +593,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5226,7 +5226,7 @@ index cb3e9672f375a1a660757a05362729ddb5ca7504..c12fb91e6fa286b99bd08ff39cda7d6e return event; } -@@ -1181,6 +1190,7 @@ public class CraftEventFactory { +@@ -1182,6 +1191,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index f57a93231..234a2f06d 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 44409eed0b603a1e8203a35ff0263d360d81be32..cdb3cf1b9a809e3936164dbbcf9ccdfc21b9906c 100644 +index afca9734927fd003e249972439494c561f0c0966..c0c7aca4bc56b59dc0a450bd370cb3c0104c78e6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2234,8 +2234,68 @@ public class ServerPlayer extends Player { @@ -78,7 +78,7 @@ index 44409eed0b603a1e8203a35ff0263d360d81be32..cdb3cf1b9a809e3936164dbbcf9ccdfc return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7f73d724af2c468a06dcfd760a70b8d6bd9ac31a..69919fa008780a09b5cfea5e41bb71ddfb4c0b80 100644 +index d9f24bcc2f5eaabc49f6a9ec545afe2d096fc532..65e64b69e36d3089589a1ac76dac97694532e9a6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,7 +223,7 @@ index ed84c87a3f76bc0254c1abb189e6b8b808823465..5bc68b1ef33f297e9a4b1bdd7d69f86a if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ee8c5a9881de75a9a8fe4224f7585a036017653a..bcf3393ad12a70eea0e1b24f69fac15b08af32fb 100644 +index 6a558a7042b78e8de7fc637053468ac9029b4133..5cb6572563bad1ef5ed755f94c5d0a854867406f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -488,10 +488,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index ee8c5a9881de75a9a8fe4224f7585a036017653a..bcf3393ad12a70eea0e1b24f69fac15b for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3433,5 +3438,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3431,5 +3436,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,10 +317,10 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 41cddf7e42f0e8f80973e482a95e55d3bd19f659..b73bb349aed01a96515e5d4d7fe67d28bd80189f 100644 +index d7c7e12c0b8f77e59d94de130972f762ed227726..88bac31994679c6a1b65e237fd44b239817fa2cf 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -203,6 +203,7 @@ public class ActivationRange +@@ -205,6 +205,7 @@ public class ActivationRange continue; } diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 16ab70eb0..ccd80fc5a 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 781eefa21c958c28c35d2d9559d89da236ce9387..5e5485906f1157e52a7082278adcb7b6e56f3f06 100644 +index 3c7c618dd9611485b81336ca4a5059fcb1e4f1ff..09f64c62333ff1fe4c77377d86922de59aa05265 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -69,13 +69,13 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 5a506af2b01974af94bdc42b6a5eb866b516ac4e..33f34eabcdb53beaa39a58566646a370015980d4 100644 +index 52c70c2793209aadb88bd4c5f45340747271d3d7..e25c95a904820a84ba18976a30faff289682a47f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1155,4 +1155,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - getHandle().knockback(strength, directionX, directionZ); - }; - // Paper end +@@ -1210,4 +1210,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + this.getHandle().setYBodyRot(bodyYaw); + } + // Paper end - body yaw API + + // Purpur start + @Override diff --git a/patches/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index fcba012db..f87c939a4 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c80e2c400f264d7d195dbf87f5dec95ba5df7444..40a22471b7828d660b1d8aa3f16af060694a86e3 100644 +index 2ebe8c165c8b425d437e0b359e3f2ad851b84273..56ffc7ae9bf9dabcbe6e993475a9bf5c0e337926 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3589,7 +3589,16 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -80,13 +80,13 @@ index 38e097807c5034c077a10d3af08bf348a008d229..5b0816b6c01912c41e588559597edf8b 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 fa876ddf54780728e7f3ecfe02aa8a16b8ef6f8d..75cf58919ac787b389286b41a9f0b5a945e71649 100644 +index a792c7b7a6179aa88fc473b27ef0ca13bd91a395..c2218c2dd46641ebb4c9278fa0d6015122b1905c 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -131,6 +131,14 @@ public class TridentItem extends Item implements Vanishable { - f2 *= f6 / f5; +@@ -128,6 +128,14 @@ public class TridentItem extends Item implements Vanishable { f3 *= f6 / f5; f4 *= f6 / f5; + org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f2, f3, f4); // CraftBukkit + + // Purpur start + ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST); diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch index cb395933b..3ec9e1084 100644 --- a/patches/server/0074-Squid-EAR-immunity.patch +++ b/patches/server/0074-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 e813fa037ca17bec29db916eac882cbfab432e56..c87c7feb140864771cbef3dcee1f89319c9a1f83 100644 +index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630629ec132 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1453,6 +1453,7 @@ public class PurpurWorldConfig { @@ -25,7 +25,7 @@ index e813fa037ca17bec29db916eac882cbfab432e56..c87c7feb140864771cbef3dcee1f8931 public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index b73bb349aed01a96515e5d4d7fe67d28bd80189f..f9e3f4e15719ed9284ec315b8a1ef63dc242e009 100644 +index 88bac31994679c6a1b65e237fd44b239817fa2cf..c63b7d5b442f2be5dadd529a2f4f65302e44e792 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -36,7 +36,7 @@ index b73bb349aed01a96515e5d4d7fe67d28bd80189f..f9e3f4e15719ed9284ec315b8a1ef63d import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -401,6 +402,7 @@ public class ActivationRange +@@ -403,6 +404,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0087-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch index 227917143..671e9bd02 100644 --- a/patches/server/0087-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0087-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 33f34eabcdb53beaa39a58566646a370015980d4..f2e101fe1d6adbfb277088076c0bac51cb95a23e 100644 +index e25c95a904820a84ba18976a30faff289682a47f..17fc6efc988bd74fc50c340eb62f8a7def2167cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1166,5 +1166,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1221,5 +1221,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index 0542c8412..15910ed38 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 43f2282a7a59852ddb86d417baef9bf0bbdc9ea4..afdb416fe714097696132afba348f42ba6fd5140 100644 +index f7e482ac8dec8a8c6ae9965acbc41a2af00aebe1..e9bdb223886f1c2e91324c01ea0203b7c319ec48 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -32,7 +32,7 @@ index 43f2282a7a59852ddb86d417baef9bf0bbdc9ea4..afdb416fe714097696132afba348f42b return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 926962fc5631faa4672c8dd2fdb72b9ef6947292..4af345c848040fabdde82b4f0493ba796a7fef1f 100644 +index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c7891da88e07 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -354,7 +354,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 // Paper end - Add more Zombie API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 20597775406e0ec019ac21550d83e971455ed1a9..83686f2fff044fd6b692da5533a3c97b0cf473b6 100644 +index cac42202295b16de0466216f64be4fdf30929a7e..b6ecb58718b7de7ba9c90236f3dc11715652daa9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -370,10 +370,10 @@ index 20597775406e0ec019ac21550d83e971455ed1a9..83686f2fff044fd6b692da5533a3c97b Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f2e101fe1d6adbfb277088076c0bac51cb95a23e..3b4a6d0d3ec4f6454bb6e0dab35cc282bf3237aa 100644 +index 17fc6efc988bd74fc50c340eb62f8a7def2167cb..210040aa3f810c03cadf38df9d10da336dffaaa1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1172,5 +1172,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1227,5 +1227,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0179-Add-portal-permission-bypass.patch index a5beb57f1..ef28c017e 100644 --- a/patches/server/0179-Add-portal-permission-bypass.patch +++ b/patches/server/0179-Add-portal-permission-bypass.patch @@ -26,10 +26,10 @@ index f8b444583cc48a18a68c860ba933c0c1834578be..992ac6cfba700839259b973fa1eabb5c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index acbb64010cd59668aa1bcb52ff1220789cadb1d3..6c2e91b986099027d83aba85f14ae69cbc358348 100644 +index 7984365c8290ac9e526a413b56e1c8c0841e330c..a8b30fa294e088c0b604a5d8ac5667e32ed1b287 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -267,6 +267,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0206-Extended-OfflinePlayer-API.patch index 0b96bdcf6..4a56ad7ab 100644 --- a/patches/server/0206-Extended-OfflinePlayer-API.patch +++ b/patches/server/0206-Extended-OfflinePlayer-API.patch @@ -243,10 +243,10 @@ index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f74e632f6be8ab2c7bdf9f5ba2ad2a2a0ef4d14e..219d6019eed162a2127f4d175aff817f52d93544 100644 +index aad02ebc0df97e6e7024add8fce149b54124a58b..b90774a6c6041b3317b33d18a31ec2ab4eee1725 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2670,6 +2670,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2668,6 +2668,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0235-Allow-void-trading.patch b/patches/server/0235-Allow-void-trading.patch index a5464f07a..3358bf825 100644 --- a/patches/server/0235-Allow-void-trading.patch +++ b/patches/server/0235-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f141031f668898b8cc0ac1970b9026da6be4a466..6c165580b2c57a7fb95833208a72af33988427dc 100644 +index 39a6ff48d820b56728398ac287f9a4db108f3bad..b9ca61e2ec4318c55997840f33fc8eae926fda73 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2909,7 +2909,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2920,7 +2920,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal diff --git a/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch index 0b89099b6..6fa467d46 100644 --- a/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8..e5691cf9ad9e795426b27391ebfb27dba97756fb 100644 +index 21019c1484a281e6cbcaf1c3e462efa106fee5eb..839f280eeb18e01712a18b595b1a13abfab6f45b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1555,13 +1555,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -25,10 +25,10 @@ index 99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8..e5691cf9ad9e795426b27391ebfb27db if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 9730a5469f81687cfde0a19a58d1c2147588d1d2..e3f724a19ab2f9821d84f9b03acf7c925c88f455 100644 +index 210040aa3f810c03cadf38df9d10da336dffaaa1..64c73cc7370c23c9ce68b68476fd0ddb3ca6beca 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -490,7 +490,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -506,7 +506,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; diff --git a/patches/server/0249-Stonecutter-damage.patch b/patches/server/0249-Stonecutter-damage.patch index d12cfa3bd..a418d32e2 100644 --- a/patches/server/0249-Stonecutter-damage.patch +++ b/patches/server/0249-Stonecutter-damage.patch @@ -124,10 +124,10 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c12fb91e6fa286b99bd08ff39cda7d6e4ff73f19..f587c8defaf55ffa77d90deb8b9a3975e8f90ef9 100644 +index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0b913fe09 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1132,7 +1132,7 @@ public class CraftEventFactory { +@@ -1133,7 +1133,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; diff --git a/patches/server/0258-Add-local-difficulty-api.patch b/patches/server/0258-Add-local-difficulty-api.patch index a8f3e8bcc..93b6068bc 100644 --- a/patches/server/0258-Add-local-difficulty-api.patch +++ b/patches/server/0258-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index bfb178c69026e9759e9afaebb9da141b62d1f144..699432c497281f5501e48fb2a40a6f8bb65f7a6a 100644 +index 01797d9791f19dfda4b168218eadeaae97f11eab..6084fe6fd3fa2c122cb3d764a4a61287b9a20375 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2388,6 +2388,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2408,6 +2408,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0261-Allow-custom-ChatDecorators.patch b/patches/server/0261-Allow-custom-ChatDecorators.patch index 5030cd4ce..8c3d080d5 100644 --- a/patches/server/0261-Allow-custom-ChatDecorators.patch +++ b/patches/server/0261-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ddcc94aee7cb8cb54f2cc54c3ae7f72c2eb47d51..67066434a381c7e0e558a80b2b66031643764b67 100644 +index f7b3dd47d16c3d0e0f374ff31bb8acd1127326cf..00c17b658c8fff133868d2a260dffa8d1171f964 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2857,6 +2857,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2736,40 +2736,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Date: Sat, 6 Apr 2024 19:07:00 -0700 Subject: [PATCH 087/148] update gradle paperweight version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9b490e30e..eea9569d2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.12" + id("io.papermc.paperweight.patcher") version "1.5.13" } allprojects { From d51b4a37282fe943f99d6813892db6fdc873e903 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 7 Apr 2024 18:38:21 -0700 Subject: [PATCH 088/148] [ci-skip] worry about this later --- .../server/0006-Fix-decompile-errors.patch | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/patches/server/0006-Fix-decompile-errors.patch b/patches/server/0006-Fix-decompile-errors.patch index f89a4b10b..69d3ae35d 100644 --- a/patches/server/0006-Fix-decompile-errors.patch +++ b/patches/server/0006-Fix-decompile-errors.patch @@ -17,6 +17,43 @@ index 89f0f68b3e2be64bcbf8b173a51d56ea3a3fb4ea..05e1c94268cf5c6897807cd7acced652 } } else { +diff --git a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java +index 0f43466df9b6a59722d5c311b9bd02f59ac75539..9d96a077e3306718a7aaa7ac62772beafc4b82cd 100644 +--- a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java ++++ b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java +@@ -114,10 +114,10 @@ public class ArgumentTypeInfos { + register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension)); + register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode)); + register(registry, "time", TimeArgument.class, new TimeArgument.Info()); +- register(registry, "resource_or_tag", fixClassType(ResourceOrTagArgument.class), new ResourceOrTagArgument.Info()); +- register(registry, "resource_or_tag_key", fixClassType(ResourceOrTagKeyArgument.class), new ResourceOrTagKeyArgument.Info()); +- register(registry, "resource", fixClassType(ResourceArgument.class), new ResourceArgument.Info()); +- register(registry, "resource_key", fixClassType(ResourceKeyArgument.class), new ResourceKeyArgument.Info()); ++ register(registry, "resource_or_tag", fixClassType(ResourceOrTagArgument.class), new ResourceOrTagArgument.Info<>()); // Purpur - decompile error ++ register(registry, "resource_or_tag_key", fixClassType(ResourceOrTagKeyArgument.class), new ResourceOrTagKeyArgument.Info<>()); // Purpur - decompile error ++ register(registry, "resource", fixClassType(ResourceArgument.class), new ResourceArgument.Info<>()); // Purpur - decompile error ++ register(registry, "resource_key", fixClassType(ResourceKeyArgument.class), new ResourceKeyArgument.Info<>()); // Purpur - decompile error + register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror)); + register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation)); + register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap)); +@@ -130,7 +130,7 @@ public class ArgumentTypeInfos { + } + + private static > Class fixClassType(Class clazz) { +- return clazz; ++ return (Class) clazz; // Purpur - decompile error + } + + public static boolean isClassRecognized(Class clazz) { +@@ -142,7 +142,7 @@ public class ArgumentTypeInfos { + if (argumentTypeInfo == null) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Unrecognized argument type %s (%s)", argumentType, argumentType.getClass())); + } else { +- return argumentTypeInfo; ++ return (ArgumentTypeInfo) argumentTypeInfo; // Purpur - decompile error + } + } + 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 d9016807bc21c38a5c38170e1335c79b39355bcb..03c065d0ad97d29f3586ba2bf3cd207b867ed634 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java From 9069ede4b1924078c23e3b567d012ac8d4632e69 Mon Sep 17 00:00:00 2001 From: "Pantera (Mad_Daniel)" <89838384+Pantera07@users.noreply.github.com> Date: Mon, 8 Apr 2024 11:06:14 +0900 Subject: [PATCH 089/148] Add Configurable-villager-search-radius (#1478) --- ...-Configurable-villager-search-radius.patch | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 patches/server/0306-Configurable-villager-search-radius.patch diff --git a/patches/server/0306-Configurable-villager-search-radius.patch b/patches/server/0306-Configurable-villager-search-radius.patch new file mode 100644 index 000000000..c895fc79e --- /dev/null +++ b/patches/server/0306-Configurable-villager-search-radius.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Pantera +Date: Fri, 26 Jan 2024 15:57:24 +0900 +Subject: [PATCH] Configurable-villager-search-radius + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..bcb39d162c3401db471688738f32e9383af45e01 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +@@ -65,7 +65,7 @@ public class AcquirePoi { + }; + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); ++ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur + Set, BlockPos>> set = new java.util.HashSet<>(poiposes); + // Paper end - optimise POI access + Path path = findPathToPois(entity, set); +diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de543790b2 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java ++++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); + // don't ask me why it's unbounded. ask mojang. +- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); ++ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); + // Paper end - optimise POI access + if (path != null && path.canReach()) { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1ea80d8b0 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -2900,6 +2900,8 @@ public class PurpurWorldConfig { + public boolean villagerDisplayTradeItem = true; + public int villagerSpawnIronGolemRadius = 0; + public int villagerSpawnIronGolemLimit = 0; ++ public int villagerAcquirePoiSearchRadius = 48; ++ public int villagerNearestBedSensorSearchRadius = 48; + private void villagerSettings() { + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); +@@ -2936,6 +2938,8 @@ public class PurpurWorldConfig { + villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); + villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); + villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); ++ villagerAcquirePoiSearchRadius = getInt("mobs.villager.search-radius.acquire-poi", villagerAcquirePoiSearchRadius); ++ villagerNearestBedSensorSearchRadius = getInt("mobs.villager.search-radius.nearest-bed-sensor", villagerNearestBedSensorSearchRadius); + } + + public boolean vindicatorRidable = false; From 0b95a8072acbd1ffa415fd80d9f5406b113c2a7f Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 12 Apr 2024 17:45:35 -0700 Subject: [PATCH 090/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5436d44 Deprecate several Keyed#getKey methods (#10357) PaperMC/Paper@a7f1dc6 Change online mode default for Velocity configuration (#10413) PaperMC/Paper@37db2d7 [ci skip] Update book page/char limit for book meta doc (#10415) PaperMC/Paper@526795b Update patches to handle vineflower decompiler (#10406) PaperMC/Paper@8fe90de [ci skip] Referenced InventoryDragEvent in documentation of InventoryClickEvent (#10395) PaperMC/Paper@46d462b Fix StackOverflowException thrown on shutdown (Fixes #10404) (#10408) PaperMC/Paper@f061e76 Fix hit criteria advancement triggered before changing state (#10409) PaperMC/Paper@3263470 Add color transition and clone functions to ParticleBuilder (#10342) PaperMC/Paper@4445d23 Deprecate ItemStack#setType & add ItemStack#withType (#10290) --- build.gradle.kts | 7 +- gradle.properties | 2 +- .../0017-ItemStack-convenience-methods.patch | 4 +- patches/api/0051-Add-hover-lines-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 141 +++++----- .../server/0006-Fix-decompile-errors.patch | 98 ++----- patches/server/0008-Ridables.patch | 257 ++++++------------ ...-Configurable-entity-base-attributes.patch | 56 ++-- .../0010-Barrels-and-enderchests-6-rows.patch | 76 +++--- patches/server/0011-Llama-API.patch | 8 +- patches/server/0012-AFK-API.patch | 12 +- .../server/0030-Breedable-Polar-Bears.patch | 16 +- .../server/0033-Cat-spawning-options.patch | 33 +-- .../0051-Implement-infinite-liquids.patch | 4 +- .../0055-Add-canSaveToDisk-to-Entity.patch | 8 +- ...g-mends-most-damages-equipment-first.patch | 8 +- ...0059-Add-5-second-tps-average-in-tps.patch | 10 +- .../0060-Implement-elytra-settings.patch | 6 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 10 +- patches/server/0094-Flying-squids-Oh-my.patch | 16 +- ...te-and-mending-enchantments-together.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 24 +- ...mes-from-item-forms-of-entities-to-e.patch | 8 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 20 +- ...efing-bypass-to-everything-affected.patch} | 2 +- ...0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch | 36 --- ...llow-Note-Block-sounds-when-blocked.patch} | 4 +- ...123-Add-EntityTeleportHinderedEvent.patch} | 4 +- ... => 0124-Farmland-trampling-changes.patch} | 4 +- ...5-Movement-options-for-armor-stands.patch} | 2 +- ....patch => 0126-Fix-stuck-in-portals.patch} | 4 +- ...ggle-for-water-sensitive-mob-damage.patch} | 54 ++-- ...8-Config-to-always-tame-in-Creative.patch} | 8 +- ... 0129-End-crystal-explosion-options.patch} | 0 ...ther-Ender-Dragon-can-ride-vehicles.patch} | 0 ...atch => 0131-Dont-run-with-scissors.patch} | 6 +- ...nch-Man.patch => 0132-One-Punch-Man.patch} | 2 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 0 ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 2 +- ...n-aggressiveness-towards-Endermites.patch} | 4 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 4 +- ...ig.patch => 0138-Tick-fluids-config.patch} | 2 +- ...39-Config-to-disable-Llama-caravans.patch} | 8 +- ...g-to-make-Creepers-explode-on-death.patch} | 0 ...rable-ravager-griefable-blocks-list.patch} | 2 +- ...142-Sneak-to-bulk-process-composter.patch} | 2 +- ...h => 0143-Config-for-skipping-night.patch} | 4 +- ...144-Add-config-for-villager-trading.patch} | 0 ...=> 0145-Allow-infinity-on-crossbows.patch} | 10 +- ...ngs.patch => 0146-Drowning-Settings.patch} | 4 +- ...reak-individual-slabs-when-sneaking.patch} | 6 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 6 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 0 ...tion-to-make-doors-require-redstone.patch} | 2 +- ...Config-to-allow-for-unsafe-enchants.patch} | 14 +- ...0152-Configurable-sponge-absorption.patch} | 0 ...ch => 0153-Projectile-offset-config.patch} | 6 +- ...or-powered-rail-activation-distance.patch} | 2 +- ...> 0155-Piglin-portal-spawn-modifier.patch} | 4 +- ...Config-to-change-max-number-of-bees.patch} | 2 +- ...-Config-for-wither-explosion-radius.patch} | 2 +- ... => 0158-Gamemode-extra-permissions.patch} | 8 +- ...0159-Configurable-piston-push-limit.patch} | 18 +- ...160-Configurable-broadcast-settings.patch} | 4 +- ... => 0161-Configurable-mob-blindness.patch} | 2 +- ...hidden-players-from-entity-selector.patch} | 2 +- ...-to-impact-Creeper-explosion-radius.patch} | 0 ... 0164-Iron-golem-calm-anger-options.patch} | 4 +- ...ots.patch => 0165-Breedable-parrots.patch} | 4 +- ...gurable-powered-rail-boost-modifier.patch} | 4 +- ...ge-multiplier-critical-damage-value.patch} | 0 ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 2 +- ...-anvil-cumulative-cost-configurable.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 2 +- ...72-API-for-any-mob-to-burn-daylight.patch} | 2 +- ...h => 0173-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 2 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 0 ...ayer-join-full-server-by-permission.patch} | 0 ...> 0178-Add-portal-permission-bypass.patch} | 0 ...9-Shulker-spawn-from-bullet-options.patch} | 4 +- ...ating-glow-berries-adds-glow-effect.patch} | 16 +- ...-Option-to-make-drowned-break-doors.patch} | 0 ...nfigurable-hunger-starvation-damage.patch} | 0 ...patch => 0183-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0184-Add-uptime-command.patch} | 2 +- ...tch => 0185-Tool-actionable-options.patch} | 32 +-- ...6-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0187-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 4 +- ...-shulker-box-items-from-dropping-co.patch} | 0 ...tch => 0190-Big-dripleaf-tilt-delay.patch} | 0 ...0191-Player-ridable-in-water-option.patch} | 0 ...-Enderman-teleport-on-projectile-hi.patch} | 0 ...d.patch => 0193-Add-compass-command.patch} | 2 +- ...h => 0194-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 0 ...zeable-Zombie-Villager-curing-times.patch} | 0 ...for-sponges-to-work-on-lava-and-mud.patch} | 0 ...198-Toggle-for-Wither-s-spawn-sound.patch} | 0 ...-breaks-from-solid-neighbors-config.patch} | 0 ...move-curse-of-binding-with-weakness.patch} | 0 ...0201-Conduit-behavior-configuration.patch} | 0 ...patch => 0202-Cauldron-fill-chances.patch} | 0 ...o-allow-mobs-to-pathfind-over-rails.patch} | 18 +- ... 0204-Shulker-change-color-with-dye.patch} | 0 ... => 0205-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 2 +- ...-blocks-to-grow-into-trees-naturall.patch} | 31 ++- ...-right-click-to-use-exp-for-mending.patch} | 2 +- ...urally-aggressive-to-players-chance.patch} | 0 ...urally-aggressive-to-players-chance.patch} | 0 ...r-beds-to-explode-on-villager-sleep.patch} | 0 ...Halloween-options-and-optimizations.patch} | 0 ...atch => 0214-Config-for-grindstones.patch} | 0 ....patch => 0215-UPnP-Port-Forwarding.patch} | 2 +- ...Campfire-option-for-lit-when-placed.patch} | 0 ...tinguish-fire-blocks-with-snowballs.patch} | 0 ...on-to-disable-zombie-villagers-cure.patch} | 0 ...nt-BlockEntity-Lore-and-DisplayName.patch} | 0 ...tch => 0220-Signs-allow-color-codes.patch} | 2 +- ...-and-twisting-vines-configurable-ma.patch} | 8 +- ...=> 0222-Mobs-always-drop-experience.patch} | 52 ++-- ....patch => 0223-Potion-NamespacedKey.patch} | 65 ++--- ...ne-API.patch => 0224-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 0 ...urtle-eggs-random-tick-crack-chance.patch} | 0 ...=> 0227-Mob-head-visibility-percent.patch} | 2 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 6 +- ...Stop-bees-from-dying-after-stinging.patch} | 0 ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 0 ...ng.patch => 0234-Allow-void-trading.patch} | 0 ...h => 0235-Configurable-phantom-size.patch} | 0 ...> 0236-Configurable-food-attributes.patch} | 15 +- ....patch => 0237-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 0 ... => 0239-Lobotomize-stuck-villagers.patch} | 0 ...ion-for-villager-display-trade-item.patch} | 10 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 0 ...=> 0243-Anvil-repair-damage-options.patch} | 2 +- ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 4 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 0 ...ge.patch => 0248-Stonecutter-damage.patch} | 28 +- ...le-damage-settings-for-magma-blocks.patch} | 0 ...250-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0251-Skeletons-eat-wither-roses.patch} | 0 ...52-Enchantment-Table-Persists-Lapis.patch} | 16 +- ...ofiler.patch => 0253-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0256-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0257-Add-local-difficulty-api.patch} | 0 ...258-Add-toggle-for-RNG-manipulation.patch} | 8 +- ... 0259-Send-client-custom-name-of-BE.patch} | 0 ...=> 0260-Allow-custom-ChatDecorators.patch} | 2 +- ...imings.patch => 0261-Remove-Timings.patch} | 20 +- ...atch => 0262-Remove-Mojang-Profiler.patch} | 102 ++++--- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0264-Add-Bee-API.patch} | 0 ...-API.patch => 0265-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 0 ...67-Add-skeleton-bow-accuracy-option.patch} | 0 ...atch => 0268-Allay-respect-item-NBT.patch} | 0 ....patch => 0269-Add-death-screen-API.patch} | 0 ...-Make-pufferfish-config-relocatable.patch} | 4 +- ...1-Implement-ram-and-rambar-commands.patch} | 2 +- ...272-Add-item-packet-serialize-event.patch} | 4 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0276-Language-API.patch} | 0 ... 0277-Milk-Keeps-Beneficial-Effects.patch} | 2 +- ...s-not-looking-up-and-down-when-stra.patch} | 4 +- ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0281-Fire-Immunity-API.patch} | 4 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 2 +- ...t.patch => 0283-Added-got-ram-event.patch} | 0 ... 0284-Log-skipped-entity-s-position.patch} | 0 ....patch => 0285-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0290-Add-PreExplodeEvents.patch} | 2 +- ...1-Improve-output-of-plugins-command.patch} | 0 ...atch => 0292-Add-mending-multiplier.patch} | 0 ....patch => 0293-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0294-Stored-Bee-API.patch} | 0 ...patch => 0295-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0296-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 16 +- ...0300-place-end-crystal-on-any-block.patch} | 0 ...I.patch => 0301-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...3-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 26 +- 210 files changed, 751 insertions(+), 918 deletions(-) rename patches/server/{0122-Add-mobGriefing-bypass-to-everything-affected.patch => 0121-Add-mobGriefing-bypass-to-everything-affected.patch} (99%) delete mode 100644 patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename patches/server/{0123-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0122-Config-to-allow-Note-Block-sounds-when-blocked.patch} (94%) rename patches/server/{0124-Add-EntityTeleportHinderedEvent.patch => 0123-Add-EntityTeleportHinderedEvent.patch} (98%) rename patches/server/{0125-Farmland-trampling-changes.patch => 0124-Farmland-trampling-changes.patch} (94%) rename patches/server/{0126-Movement-options-for-armor-stands.patch => 0125-Movement-options-for-armor-stands.patch} (98%) rename patches/server/{0127-Fix-stuck-in-portals.patch => 0126-Fix-stuck-in-portals.patch} (94%) rename patches/server/{0128-Toggle-for-water-sensitive-mob-damage.patch => 0127-Toggle-for-water-sensitive-mob-damage.patch} (98%) rename patches/server/{0129-Config-to-always-tame-in-Creative.patch => 0128-Config-to-always-tame-in-Creative.patch} (93%) rename patches/server/{0130-End-crystal-explosion-options.patch => 0129-End-crystal-explosion-options.patch} (100%) rename patches/server/{0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (100%) rename patches/server/{0132-Dont-run-with-scissors.patch => 0131-Dont-run-with-scissors.patch} (97%) rename patches/server/{0133-One-Punch-Man.patch => 0132-One-Punch-Man.patch} (96%) rename patches/server/{0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (100%) rename patches/server/{0135-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0134-Config-to-ignore-nearby-mobs-when-sleeping.patch} (92%) rename patches/server/{0136-Add-back-player-spawned-endermite-API.patch => 0135-Add-back-player-spawned-endermite-API.patch} (97%) rename patches/server/{0137-Config-Enderman-aggressiveness-towards-Endermites.patch => 0136-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0139-Tick-fluids-config.patch => 0138-Tick-fluids-config.patch} (97%) rename patches/server/{0140-Config-to-disable-Llama-caravans.patch => 0139-Config-to-disable-Llama-caravans.patch} (90%) rename patches/server/{0141-Config-to-make-Creepers-explode-on-death.patch => 0140-Config-to-make-Creepers-explode-on-death.patch} (100%) rename patches/server/{0142-Configurable-ravager-griefable-blocks-list.patch => 0141-Configurable-ravager-griefable-blocks-list.patch} (97%) rename patches/server/{0143-Sneak-to-bulk-process-composter.patch => 0142-Sneak-to-bulk-process-composter.patch} (98%) rename patches/server/{0144-Config-for-skipping-night.patch => 0143-Config-for-skipping-night.patch} (92%) rename patches/server/{0145-Add-config-for-villager-trading.patch => 0144-Add-config-for-villager-trading.patch} (100%) rename patches/server/{0146-Allow-infinity-on-crossbows.patch => 0145-Allow-infinity-on-crossbows.patch} (92%) rename patches/server/{0147-Drowning-Settings.patch => 0146-Drowning-Settings.patch} (94%) rename patches/server/{0148-Break-individual-slabs-when-sneaking.patch => 0147-Break-individual-slabs-when-sneaking.patch} (92%) rename patches/server/{0149-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0148-Config-to-disable-hostile-mob-spawn-on-ice.patch} (89%) rename patches/server/{0150-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0149-Config-to-show-Armor-Stand-arms-on-spawn.patch} (100%) rename patches/server/{0151-Option-to-make-doors-require-redstone.patch => 0150-Option-to-make-doors-require-redstone.patch} (98%) rename patches/server/{0152-Config-to-allow-for-unsafe-enchants.patch => 0151-Config-to-allow-for-unsafe-enchants.patch} (91%) rename patches/server/{0153-Configurable-sponge-absorption.patch => 0152-Configurable-sponge-absorption.patch} (100%) rename patches/server/{0154-Projectile-offset-config.patch => 0153-Projectile-offset-config.patch} (97%) rename patches/server/{0155-Config-for-powered-rail-activation-distance.patch => 0154-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/server/{0156-Piglin-portal-spawn-modifier.patch => 0155-Piglin-portal-spawn-modifier.patch} (93%) rename patches/server/{0157-Config-to-change-max-number-of-bees.patch => 0156-Config-to-change-max-number-of-bees.patch} (96%) rename patches/server/{0158-Config-for-wither-explosion-radius.patch => 0157-Config-for-wither-explosion-radius.patch} (96%) rename patches/server/{0159-Gamemode-extra-permissions.patch => 0158-Gamemode-extra-permissions.patch} (95%) rename patches/server/{0160-Configurable-piston-push-limit.patch => 0159-Configurable-piston-push-limit.patch} (76%) rename patches/server/{0161-Configurable-broadcast-settings.patch => 0160-Configurable-broadcast-settings.patch} (94%) rename patches/server/{0162-Configurable-mob-blindness.patch => 0161-Configurable-mob-blindness.patch} (97%) rename patches/server/{0163-Hide-hidden-players-from-entity-selector.patch => 0162-Hide-hidden-players-from-entity-selector.patch} (98%) rename patches/server/{0164-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0163-Config-for-health-to-impact-Creeper-explosion-radius.patch} (100%) rename patches/server/{0165-Iron-golem-calm-anger-options.patch => 0164-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0166-Breedable-parrots.patch => 0165-Breedable-parrots.patch} (95%) rename patches/server/{0167-Configurable-powered-rail-boost-modifier.patch => 0166-Configurable-powered-rail-boost-modifier.patch} (92%) rename patches/server/{0168-Add-config-change-multiplier-critical-damage-value.patch => 0167-Add-config-change-multiplier-critical-damage-value.patch} (100%) rename patches/server/{0169-Option-to-disable-dragon-egg-teleporting.patch => 0168-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/server/{0170-Config-for-unverified-username-message.patch => 0169-Config-for-unverified-username-message.patch} (97%) rename patches/server/{0171-Make-anvil-cumulative-cost-configurable.patch => 0170-Make-anvil-cumulative-cost-configurable.patch} (95%) rename patches/server/{0172-Bee-can-work-when-raining-or-at-night.patch => 0171-Bee-can-work-when-raining-or-at-night.patch} (97%) rename patches/server/{0173-API-for-any-mob-to-burn-daylight.patch => 0172-API-for-any-mob-to-burn-daylight.patch} (99%) rename patches/server/{0174-Config-MobEffect-by-world.patch => 0173-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0175-Beacon-Activation-Range-Configurable.patch => 0174-Beacon-Activation-Range-Configurable.patch} (92%) rename patches/server/{0176-Make-lightning-rod-range-configurable.patch => 0175-Make-lightning-rod-range-configurable.patch} (96%) rename patches/server/{0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (100%) rename patches/server/{0178-Allow-player-join-full-server-by-permission.patch => 0177-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0179-Add-portal-permission-bypass.patch => 0178-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0180-Shulker-spawn-from-bullet-options.patch => 0179-Shulker-spawn-from-bullet-options.patch} (97%) rename patches/server/{0181-Eating-glow-berries-adds-glow-effect.patch => 0180-Eating-glow-berries-adds-glow-effect.patch} (79%) rename patches/server/{0182-Option-to-make-drowned-break-doors.patch => 0181-Option-to-make-drowned-break-doors.patch} (100%) rename patches/server/{0183-Configurable-hunger-starvation-damage.patch => 0182-Configurable-hunger-starvation-damage.patch} (100%) rename patches/server/{0184-Enhance-SysoutCatcher.patch => 0183-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0185-Add-uptime-command.patch => 0184-Add-uptime-command.patch} (98%) rename patches/server/{0186-Tool-actionable-options.patch => 0185-Tool-actionable-options.patch} (97%) rename patches/server/{0187-Store-placer-on-Block-when-placed.patch => 0186-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0188-Summoner-API.patch => 0187-Summoner-API.patch} (100%) rename patches/server/{0189-Customizable-sleeping-actionbar-messages.patch => 0188-Customizable-sleeping-actionbar-messages.patch} (96%) rename patches/server/{0190-option-to-disable-shulker-box-items-from-dropping-co.patch => 0189-option-to-disable-shulker-box-items-from-dropping-co.patch} (100%) rename patches/server/{0191-Big-dripleaf-tilt-delay.patch => 0190-Big-dripleaf-tilt-delay.patch} (100%) rename patches/server/{0192-Player-ridable-in-water-option.patch => 0191-Player-ridable-in-water-option.patch} (100%) rename patches/server/{0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (100%) rename patches/server/{0194-Add-compass-command.patch => 0193-Add-compass-command.patch} (99%) rename patches/server/{0195-Toggle-for-kinetic-damage.patch => 0194-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0196-Add-Option-for-disable-observer-clocks.patch => 0195-Add-Option-for-disable-observer-clocks.patch} (100%) rename patches/server/{0197-Customizeable-Zombie-Villager-curing-times.patch => 0196-Customizeable-Zombie-Villager-curing-times.patch} (100%) rename patches/server/{0198-Option-for-sponges-to-work-on-lava-and-mud.patch => 0197-Option-for-sponges-to-work-on-lava-and-mud.patch} (100%) rename patches/server/{0199-Toggle-for-Wither-s-spawn-sound.patch => 0198-Toggle-for-Wither-s-spawn-sound.patch} (100%) rename patches/server/{0200-Cactus-breaks-from-solid-neighbors-config.patch => 0199-Cactus-breaks-from-solid-neighbors-config.patch} (100%) rename patches/server/{0201-Config-to-remove-curse-of-binding-with-weakness.patch => 0200-Config-to-remove-curse-of-binding-with-weakness.patch} (100%) rename patches/server/{0202-Conduit-behavior-configuration.patch => 0201-Conduit-behavior-configuration.patch} (100%) rename patches/server/{0203-Cauldron-fill-chances.patch => 0202-Cauldron-fill-chances.patch} (100%) rename patches/server/{0204-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0203-Config-to-allow-mobs-to-pathfind-over-rails.patch} (62%) rename patches/server/{0205-Shulker-change-color-with-dye.patch => 0204-Shulker-change-color-with-dye.patch} (100%) rename patches/server/{0206-Extended-OfflinePlayer-API.patch => 0205-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0207-Added-the-ability-to-add-combustible-items.patch => 0206-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (97%) rename patches/server/{0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (53%) rename patches/server/{0210-Shift-right-click-to-use-exp-for-mending.patch => 0209-Shift-right-click-to-use-exp-for-mending.patch} (98%) rename patches/server/{0211-Dolphins-naturally-aggressive-to-players-chance.patch => 0210-Dolphins-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0212-Cows-naturally-aggressive-to-players-chance.patch => 0211-Cows-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0213-Option-for-beds-to-explode-on-villager-sleep.patch => 0212-Option-for-beds-to-explode-on-villager-sleep.patch} (100%) rename patches/server/{0214-Halloween-options-and-optimizations.patch => 0213-Halloween-options-and-optimizations.patch} (100%) rename patches/server/{0215-Config-for-grindstones.patch => 0214-Config-for-grindstones.patch} (100%) rename patches/server/{0216-UPnP-Port-Forwarding.patch => 0215-UPnP-Port-Forwarding.patch} (97%) rename patches/server/{0217-Campfire-option-for-lit-when-placed.patch => 0216-Campfire-option-for-lit-when-placed.patch} (100%) rename patches/server/{0218-options-to-extinguish-fire-blocks-with-snowballs.patch => 0217-options-to-extinguish-fire-blocks-with-snowballs.patch} (100%) rename patches/server/{0219-Add-option-to-disable-zombie-villagers-cure.patch => 0218-Add-option-to-disable-zombie-villagers-cure.patch} (100%) rename patches/server/{0220-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0219-Persistent-BlockEntity-Lore-and-DisplayName.patch} (100%) rename patches/server/{0221-Signs-allow-color-codes.patch => 0220-Signs-allow-color-codes.patch} (98%) rename patches/server/{0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (96%) rename patches/server/{0223-Mobs-always-drop-experience.patch => 0222-Mobs-always-drop-experience.patch} (98%) rename patches/server/{0224-Potion-NamespacedKey.patch => 0223-Potion-NamespacedKey.patch} (81%) rename patches/server/{0225-Grindstone-API.patch => 0224-Grindstone-API.patch} (100%) rename patches/server/{0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (100%) rename patches/server/{0227-Turtle-eggs-random-tick-crack-chance.patch => 0226-Turtle-eggs-random-tick-crack-chance.patch} (100%) rename patches/server/{0228-Mob-head-visibility-percent.patch => 0227-Mob-head-visibility-percent.patch} (98%) rename patches/server/{0229-Configurable-valid-characters-for-usernames.patch => 0228-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0230-Shears-can-have-looting-enchantment.patch => 0229-Shears-can-have-looting-enchantment.patch} (98%) rename patches/server/{0231-Stop-bees-from-dying-after-stinging.patch => 0230-Stop-bees-from-dying-after-stinging.patch} (100%) rename patches/server/{0232-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0233-Configurable-farmland-trample-height.patch => 0232-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0234-Configurable-player-pickup-exp-delay.patch => 0233-Configurable-player-pickup-exp-delay.patch} (100%) rename patches/server/{0235-Allow-void-trading.patch => 0234-Allow-void-trading.patch} (100%) rename patches/server/{0236-Configurable-phantom-size.patch => 0235-Configurable-phantom-size.patch} (100%) rename patches/server/{0237-Configurable-food-attributes.patch => 0236-Configurable-food-attributes.patch} (92%) rename patches/server/{0238-Max-joins-per-second.patch => 0237-Max-joins-per-second.patch} (93%) rename patches/server/{0239-Configurable-minimum-demand-for-trades.patch => 0238-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0240-Lobotomize-stuck-villagers.patch => 0239-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0241-Option-for-villager-display-trade-item.patch => 0240-Option-for-villager-display-trade-item.patch} (86%) rename patches/server/{0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (92%) rename patches/server/{0243-Config-for-mob-last-hurt-by-player-time.patch => 0242-Config-for-mob-last-hurt-by-player-time.patch} (100%) rename patches/server/{0244-Anvil-repair-damage-options.patch => 0243-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0246-Add-toggle-for-enchant-level-clamping.patch => 0245-Add-toggle-for-enchant-level-clamping.patch} (95%) rename patches/server/{0247-Skip-junit-tests-for-purpur-commands.patch => 0246-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0248-Implement-configurable-search-radius-for-villagers-t.patch => 0247-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0249-Stonecutter-damage.patch => 0248-Stonecutter-damage.patch} (88%) rename patches/server/{0250-Configurable-damage-settings-for-magma-blocks.patch => 0249-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0251-Add-config-for-snow-on-blue-ice.patch => 0250-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0252-Skeletons-eat-wither-roses.patch => 0251-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0253-Enchantment-Table-Persists-Lapis.patch => 0252-Enchantment-Table-Persists-Lapis.patch} (92%) rename patches/server/{0254-Spark-Profiler.patch => 0253-Spark-Profiler.patch} (100%) rename patches/server/{0255-Option-to-disable-kick-for-out-of-order-chat.patch => 0254-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0256-Config-for-sculk-shrieker-can_summon-state.patch => 0255-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0257-Config-to-not-let-coral-die.patch => 0256-Config-to-not-let-coral-die.patch} (93%) rename patches/server/{0258-Add-local-difficulty-api.patch => 0257-Add-local-difficulty-api.patch} (100%) rename patches/server/{0259-Add-toggle-for-RNG-manipulation.patch => 0258-Add-toggle-for-RNG-manipulation.patch} (87%) rename patches/server/{0260-Send-client-custom-name-of-BE.patch => 0259-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0261-Allow-custom-ChatDecorators.patch => 0260-Allow-custom-ChatDecorators.patch} (94%) rename patches/server/{0262-Remove-Timings.patch => 0261-Remove-Timings.patch} (98%) rename patches/server/{0263-Remove-Mojang-Profiler.patch => 0262-Remove-Mojang-Profiler.patch} (96%) rename patches/server/{0264-Add-more-logger-output-for-invalid-movement-kicks.patch => 0263-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0265-Add-Bee-API.patch => 0264-Add-Bee-API.patch} (100%) rename patches/server/{0266-Debug-Marker-API.patch => 0265-Debug-Marker-API.patch} (100%) rename patches/server/{0267-mob-spawning-option-to-ignore-creative-players.patch => 0266-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0268-Add-skeleton-bow-accuracy-option.patch => 0267-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0269-Allay-respect-item-NBT.patch => 0268-Allay-respect-item-NBT.patch} (100%) rename patches/server/{0270-Add-death-screen-API.patch => 0269-Add-death-screen-API.patch} (100%) rename patches/server/{0271-Make-pufferfish-config-relocatable.patch => 0270-Make-pufferfish-config-relocatable.patch} (93%) rename patches/server/{0272-Implement-ram-and-rambar-commands.patch => 0271-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0273-Add-item-packet-serialize-event.patch => 0272-Add-item-packet-serialize-event.patch} (95%) rename patches/server/{0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0273-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0275-Configurable-block-blast-resistance.patch => 0274-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0276-Configurable-block-fall-damage-modifiers.patch => 0275-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0277-Language-API.patch => 0276-Language-API.patch} (100%) rename patches/server/{0278-Milk-Keeps-Beneficial-Effects.patch => 0277-Milk-Keeps-Beneficial-Effects.patch} (97%) rename patches/server/{0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0278-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (85%) rename patches/server/{0280-Add-log-suppression-for-LibraryLoader.patch => 0279-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0282-Fire-Immunity-API.patch => 0281-Fire-Immunity-API.patch} (95%) rename patches/server/{0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (96%) rename patches/server/{0284-Added-got-ram-event.patch => 0283-Added-got-ram-event.patch} (100%) rename patches/server/{0285-Log-skipped-entity-s-position.patch => 0284-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0286-End-Crystal-Cramming.patch => 0285-End-Crystal-Cramming.patch} (100%) rename patches/server/{0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0288-Add-attribute-clamping-and-armor-limit-config.patch => 0287-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0289-Config-to-remove-explosion-radius-clamp.patch => 0288-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0290-bonemealable-sugarcane-cactus-and-netherwart.patch => 0289-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0291-Add-PreExplodeEvents.patch => 0290-Add-PreExplodeEvents.patch} (94%) rename patches/server/{0292-Improve-output-of-plugins-command.patch => 0291-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0293-Add-mending-multiplier.patch => 0292-Add-mending-multiplier.patch} (100%) rename patches/server/{0294-Make-GUI-Great-Again.patch => 0293-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0295-Stored-Bee-API.patch => 0294-Stored-Bee-API.patch} (100%) rename patches/server/{0296-Shears-can-defuse-TNT.patch => 0295-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0297-Explorer-Map-API.patch => 0296-Explorer-Map-API.patch} (100%) rename patches/server/{0298-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0297-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0300-Add-option-for-always-showing-item-in-player-death-m.patch => 0299-Add-option-for-always-showing-item-in-player-death-m.patch} (77%) rename patches/server/{0301-place-end-crystal-on-any-block.patch => 0300-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0302-Add-hover-lines-API.patch => 0301-Add-hover-lines-API.patch} (100%) rename patches/server/{0303-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0302-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0304-register-minecraft-debug-commands.patch => 0303-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0306-Configurable-villager-search-radius.patch => 0304-Configurable-villager-search-radius.patch} (75%) diff --git a/build.gradle.kts b/build.gradle.kts index eea9569d2..dd3c556fe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.13" + id("io.papermc.paperweight.patcher") version "1.5.15" } allprojects { @@ -58,7 +58,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.10.1:fat") - decompiler("net.minecraftforge:forgeflower:2.0.627.2") + decompiler("org.vineflower:vineflower:1.11.0-20240412.144930-14") paperclip("io.papermc:paperclip:3.0.3") } @@ -66,9 +66,10 @@ paperweight { serverProject = project(":purpur-server") remapRepo = paperMavenPublicUrl - decompileRepo = paperMavenPublicUrl + decompileRepo = "https://s01.oss.sonatype.org/content/repositories/snapshots/" usePaperUpstream(providers.gradleProperty("paperCommit")) { + withPaperPatcher { apiPatchDir = layout.projectDirectory.dir("patches/api") apiOutputDir = layout.projectDirectory.dir("Purpur-API") diff --git a/gradle.properties b/gradle.properties index 16f3daa9f..9c64c10dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 12071620558a64575ac641d9b93c120a66e5e3a7 +paperCommit = 4445d23544e0801fb6f658de98815ce0d8c04f58 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch index e59e4539b..e2da4b827 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0017-ItemStack-convenience-methods.patch @@ -50,7 +50,7 @@ index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09f + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 245a730a54c4b241a9a67eccceefafd2763bd238..414e350e486a23260675778800576738fc843ed8 100644 +index 7414b4fa690d393a8e9557cc1fd1ce12fa426940..9e3531e1bd9a67b602a09aca8af1191d10bc9e16 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; @@ -72,7 +72,7 @@ index 245a730a54c4b241a9a67eccceefafd2763bd238..414e350e486a23260675778800576738 /** * Represents a stack of items. -@@ -1033,4 +1045,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1061,4 +1073,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player); } // Paper end - expose itemstack tooltip lines diff --git a/patches/api/0051-Add-hover-lines-API.patch b/patches/api/0051-Add-hover-lines-API.patch index 3508ee4e8..59c4d2029 100644 --- a/patches/api/0051-Add-hover-lines-API.patch +++ b/patches/api/0051-Add-hover-lines-API.patch @@ -24,10 +24,10 @@ index f680545b6b59bf8d2ad154b0472dda4cba42a162..58a62ba0635f9158bf18043da89aba75 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 414e350e486a23260675778800576738fc843ed8..54dd0bd043a37f6519fc8a318856a4825d389669 100644 +index 9e3531e1bd9a67b602a09aca8af1191d10bc9e16..591759aef6c7c3333cbdab596c6619af9185c3c2 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -1666,5 +1666,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1694,5 +1694,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat } return random.nextInt(unbreaking + 1) > 0; } diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 0f5386a2d..8cabf9500 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1475,10 +1475,10 @@ index e028353e0261310afc42ca0454b723d9f1ffc131..2222625a515d9ae6c3e9c92fc4d4a5bf public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797e22ab1c2 100644 +index 0af9ed92824ccf30814eceb6a2c2e5c12661c991..67eeb39aede6908d2756e49821ca350ebe916902 100644 --- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -@@ -38,7 +38,7 @@ public class SignedMessageChain { +@@ -37,7 +37,7 @@ public class SignedMessageChain { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause) } else if (playerPublicKey.data().hasExpired()) { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey"), false, org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY); // Paper - kick event causes @@ -1488,7 +1488,7 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c8772c773f9933ed1d1debfe707af4373c458152..07319732c76473589774c90edf8a1f1ba4b26d04 100644 +index 27db614d46dffc2d10f18d79cc5a084f3421d86b..c1c97130adf4b7bcb5b2470fc12b79da1d837686 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop attribute.getAttribute().isClientSyncable()).collect(Collectors.toList()); } + @Nullable public AttributeInstance getInstance(Attribute attribute) { -- return this.attributes.computeIfAbsent(attribute, (attributex) -> { -- return this.supplier.createInstance(this::onAttributeModified, attributex); -- }); +- return this.attributes.computeIfAbsent(attribute, attributex -> this.supplier.createInstance(this::onAttributeModified, attributex)); + return this.attributes.computeIfAbsent(attribute, this.createInstance); // Pufferfish - cache lambda, as for some reason java allocates it anyways } @Nullable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java -index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe048d6e282 100644 +index 758f62416ca9c02351348ac0d41deeb4624abc0e..69130969c9a434ec2361e573c9a1ec9f462dfda2 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java -@@ -37,7 +37,11 @@ public class VillagerPanicTrigger extends Behavior { +@@ -36,7 +36,11 @@ public class VillagerPanicTrigger extends Behavior { @Override protected void tick(ServerLevel world, Villager entity, long time) { @@ -2216,12 +2214,12 @@ index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe0 + // Pufferfish end entity.spawnGolemIfNeeded(world, time, 3); } - + } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 676f5485a4ca9252e911213dcda8d51776b637b6..2d63ee8fef87264d4b61290effa6ba86a787aa61 100644 +index 38af5c7280366fd6ec077f3d914ea5f3ee77451a..d78e1f6191738d426968efc24e734f04b0fc7edb 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -53,9 +53,12 @@ public class GoalSelector { +@@ -52,9 +52,12 @@ public class GoalSelector { } // Paper start @@ -2237,27 +2235,27 @@ index 676f5485a4ca9252e911213dcda8d51776b637b6..2d63ee8fef87264d4b61290effa6ba86 public boolean hasTasks() { for (WrappedGoal task : this.availableGoals) { diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index 07519c817cc6de04a98198c43a0c2b02ba3141eb..ee66be6e5aa45ec8448b6d30785a6e71200b09e3 100644 +index de7c3654b5d134e380c0d7e8800beb6c10d8a22a..3e544a1b957e7a9bc2c5548baf7f6499a34151eb 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -@@ -120,6 +120,7 @@ public abstract class MoveToBlockGoal extends Goal { - for(int m = 0; m <= l; m = m > 0 ? -m : 1 - m) { - for(int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { +@@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal { + for (int m = 0; m <= l; m = m > 0 ? -m : 1 - m) { + for (int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { mutableBlockPos.setWithOffset(blockPos, m, k - 1, n); + if (!this.mob.level().hasChunkAt(mutableBlockPos)) continue; // Pufferfish - if this block isn't loaded, continue if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level(), mutableBlockPos)) { this.blockPos = mutableBlockPos; this.mob.movingTarget = mutableBlockPos == BlockPos.ZERO ? null : mutableBlockPos.immutable(); // Paper diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..931cbbe41905d7ed3fd46c53d3ddd06a6b9a7c8a 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..2848f0562de085c0c934455c12d785194b7a9dbf 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -75,9 +75,18 @@ public class TargetingConditions { +@@ -76,9 +76,18 @@ public class TargetingConditions { } - if (this.range > 0.0D) { -- double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D; -- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0D); // Paper - Fix MC-145656 + if (this.range > 0.0) { +- double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0; +- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0); // Paper - Fix MC-145656 + // Pufferfish start - check range before getting visibility + // d = invisibility percent, e = follow range adjusted for invisibility, f = distance double f = baseEntity.distanceToSqr(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ()); @@ -2334,11 +2332,11 @@ index b21e180641d17438997a80e5bcb0ec7998d24a2e..33c160994f70f71446d665e748791343 this.level().getProfiler().pop(); this.level().getProfiler().push("axolotlActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 295769d039f2a1e4f48912a60f9dbe267d8992c1..e88b058c0734e436ef24bab6364b206c13e5a9c2 100644 +index a03fb7aa9f4528f4885db88eaf480202d5f54750..1767fd2df8cb37e9c36fa3008b5131ff4bdad12c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -159,9 +159,11 @@ public class Frog extends Animal implements VariantHolder { - +@@ -183,9 +183,11 @@ public class Frog extends Animal implements VariantHolder { + } } + private int behaviorTick = 0; // Pufferfish @@ -2424,11 +2422,11 @@ index f33c03e81b7ff643741f56eea055e6af260de618..6563e625ebae47fc68e5010d36bd4b4d boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER); diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 01a2016ac82807d28ffe407b7dbb74bdbcde503e..9921b160fb21f72fbd28fe81ea66fbc3dc05f83f 100644 +index 050ffa4a23feba29fdf4c6a175cdff4e5009027d..1299f93d4f983e6715e447add65df91ef9e9090a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -128,9 +128,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - return (Brain) super.getBrain(); // Paper - decompile fix +@@ -155,9 +155,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + return (Brain)super.getBrain(); } + private int behaviorTick; // Pufferfish @@ -2748,32 +2746,38 @@ index da7489986848316fed029b71d1bc4e1248c9c9a8..661acdf4b1f33d150b0caf179e925d31 return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 4f9187d9d640618c40a2fa528f36b845017b4777..efca73d4de33028cf9df944f36e51b7b50f7a4c5 100644 +index b865115dc5a8c000521abf668251ab1bd8104505..57f3193ff761cbe45846a02a15d8da9c9e2e87ee 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -66,14 +66,20 @@ public final class Biome { +@@ -63,14 +63,19 @@ public final class Biome { private final BiomeGenerationSettings generationSettings; private final MobSpawnSettings mobSettings; private final BiomeSpecialEffects specialEffects; -- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> { +- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { +- Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { +- protected void rehash(int i) { +- } +- }; +- long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); +- return long2FloatLinkedOpenHashMap; +- })); + // Pufferfish start - use our cache -+ private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> { - return Util.make(() -> { -+ /* - Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { - protected void rehash(int i) { - } - }; - long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); - return long2FloatLinkedOpenHashMap; -+ -+ */ -+ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); -+ // Pufferfish end - }); - }); ++ private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { ++ /* ++ Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { ++ protected void rehash(int i) { ++ } ++ }; ++ long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); ++ return long2FloatLinkedOpenHashMap; ++ */ ++ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); ++ // Pufferfish end ++ })); -@@ -118,17 +124,15 @@ public final class Biome { + Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { + this.climateSettings = weather; +@@ -112,17 +117,15 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { long l = blockPos.asLong(); @@ -2971,12 +2975,12 @@ index cdb739df2a285032d25d84f4464f202a7a3fa578..6b9cd8543a5bfc2b936ba18f66ffd60f public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index f52ccd4f3e062af3c7cc6eaea5b074a3bbd21690..a5cd70b6ada2b44f64db0985483ee5eadc67003f 100644 +index dfd1246b735fe64c5beae83567a013861eb00822..fa64bf5ad13c278438039b663ea3134e72108411 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -94,12 +94,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc public boolean isEmpty() { - this.unpackLootTable((Player)null); + this.unpackLootTable(null); // Paper start - Perf: Optimize Hoppers - for (final ItemStack itemStack : this.getItems()) { - if (!itemStack.isEmpty()) { @@ -3057,10 +3061,10 @@ index 796bbef3544e06b8e7aac7e8ac5f740a2613f4bd..2422ca3ffc6ab7178cacf933b8013f85 // Paper start - optimise collisions diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b1034caaac4e 100644 +index 83a39f900551e39d5af6f17a339a386ddee4feef..0c8c534fc69172387f188af5282accfed7597ac7 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java +++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -@@ -8,7 +8,7 @@ import javax.annotation.Nullable; +@@ -9,7 +9,7 @@ import javax.annotation.Nullable; import net.minecraft.world.entity.Entity; public class EntityTickList { @@ -3159,7 +3163,7 @@ index 6d8ff6c06af5545634f255ed17dc1e489ece2548..6411aa4ff6bd4cabb25c426fa8f4a7ee return flag; } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java b/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java -index e43d07ccdd36f0c9f5b8e9c74cf0d87e17eec66a..8e441f7c2b2d911a0c0111aaa231fc6adae08730 100644 +index 37a0002bbe6539648db5219bb373e0404ae48dc0..ca0571d232e102c4b177a1ea44b96f5f0f440211 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java @@ -21,8 +21,10 @@ public class LootParams { @@ -3176,10 +3180,10 @@ index e43d07ccdd36f0c9f5b8e9c74cf0d87e17eec66a..8e441f7c2b2d911a0c0111aaa231fc6a } diff --git a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7496a5f25 100644 +index 1132658b063c6cd3feb1783ab4d5f5141ab75140..a971c3b079e76a16b0de24a827f71cde7944b7e1 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java +++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -@@ -19,47 +19,66 @@ public class EntityCollisionContext implements CollisionContext { +@@ -17,50 +17,69 @@ public class EntityCollisionContext implements CollisionContext { return defaultValue; } }; @@ -3210,16 +3214,23 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 this.entity = entity; } - /** @deprecated */ @Deprecated protected EntityCollisionContext(Entity entity) { -- this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluidState) -> { -- return false; -- }, entity); +- this( +- entity.isDescending(), +- entity.getY(), +- entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, +- entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, +- entity +- ); + // Pufferfish start - remove this -+ // this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluidState) -> { -+ // return false; -+ // }, entity); ++ /*this( ++ entity.isDescending(), ++ entity.getY(), ++ entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, ++ entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, ++ entity ++ );*/ + // Pufferfish end + this.entity = entity; } @@ -3256,8 +3267,8 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Override public boolean isAbove(VoxelShape shape, BlockPos pos, boolean defaultValue) { -- return this.entityBottom > (double)pos.getY() + shape.max(Direction.Axis.Y) - (double)1.0E-5F; -+ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > (double)pos.getY() + shape.max(Direction.Axis.Y) - (double)1.0E-5F; // Pufferfish +- return this.entityBottom > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; ++ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish } @Nullable diff --git a/patches/server/0006-Fix-decompile-errors.patch b/patches/server/0006-Fix-decompile-errors.patch index 69d3ae35d..18f759fcf 100644 --- a/patches/server/0006-Fix-decompile-errors.patch +++ b/patches/server/0006-Fix-decompile-errors.patch @@ -5,23 +5,37 @@ Subject: [PATCH] Fix decompile errors diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 89f0f68b3e2be64bcbf8b173a51d56ea3a3fb4ea..05e1c94268cf5c6897807cd7acced652856a09ea 100644 +index b0d26b0eadb2a43924629424a6c13198aace8f69..9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -@@ -94,7 +94,7 @@ public class BuildContexts> { +@@ -52,7 +52,7 @@ public class BuildContexts> { + } + + RedirectModifier redirectModifier = commandContext.getRedirectModifier(); +- if (redirectModifier instanceof CustomModifierExecutor customModifierExecutor) { ++ if (redirectModifier instanceof CustomModifierExecutor customModifierExecutor) { // Purpur - decompile error + customModifierExecutor.apply(baseSource, list, contextChain, chainModifiers, ExecutionControl.create(context, frame)); + return; + } +@@ -92,11 +92,11 @@ public class BuildContexts> { if (list.isEmpty()) { if (chainModifiers.isReturn()) { - context.queueNext(new CommandQueueEntry<>(frame, FallthroughTask.instance())); + context.queueNext(new CommandQueueEntry<>(frame, (EntryAction) FallthroughTask.instance())); // Purpur - decompile error } - } else { + CommandContext commandContext2 = contextChain.getTopContext(); +- if (commandContext2.getCommand() instanceof CustomCommandExecutor customCommandExecutor) { ++ if (commandContext2.getCommand() instanceof CustomCommandExecutor customCommandExecutor) { // Purpur - decompile error + ExecutionControl executionControl = ExecutionControl.create(context, frame); + + for (T executionCommandSource2 : list) { diff --git a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -index 0f43466df9b6a59722d5c311b9bd02f59ac75539..9d96a077e3306718a7aaa7ac62772beafc4b82cd 100644 +index b8fa8d5bb62a51281a8ec676066fb02ddeacbebf..682d6d8bd679106a6f07df31adb8dbc568c10d62 100644 --- a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java +++ b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -@@ -114,10 +114,10 @@ public class ArgumentTypeInfos { +@@ -116,10 +116,10 @@ public class ArgumentTypeInfos { register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension)); register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode)); register(registry, "time", TimeArgument.class, new TimeArgument.Info()); @@ -36,29 +50,11 @@ index 0f43466df9b6a59722d5c311b9bd02f59ac75539..9d96a077e3306718a7aaa7ac62772bea register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror)); register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation)); register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap)); -@@ -130,7 +130,7 @@ public class ArgumentTypeInfos { - } - - private static > Class fixClassType(Class clazz) { -- return clazz; -+ return (Class) clazz; // Purpur - decompile error - } - - public static boolean isClassRecognized(Class clazz) { -@@ -142,7 +142,7 @@ public class ArgumentTypeInfos { - if (argumentTypeInfo == null) { - throw new IllegalArgumentException(String.format(Locale.ROOT, "Unrecognized argument type %s (%s)", argumentType, argumentType.getClass())); - } else { -- return argumentTypeInfo; -+ return (ArgumentTypeInfo) argumentTypeInfo; // Purpur - decompile error - } - } - 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 d9016807bc21c38a5c38170e1335c79b39355bcb..03c065d0ad97d29f3586ba2bf3cd207b867ed634 100644 +index fee2269b241cbfb10bbbb76b404aa5ef3997dfe0..10ee43de05d9f4e0ab980ee5069fe59c0f137403 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -121,7 +121,7 @@ public class Painting extends HangingEntity implements VariantHolder getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - protected void updateActivity() { -diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index 0b8992a9aea781470ab3b1880cf041972a20089d..ab183a7d94a27d5235ff33ce7784c92d66d40b89 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -+++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -59,7 +59,7 @@ public class Breeze extends Monster { - - @Override - public Brain getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - @Override -diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index d02ee11066fc4f07ccb110b09b86d895ff90d4f2..e1be4a77fae0b9120781f460079269b85c993930 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -70,7 +70,7 @@ public class PiglinBrute extends AbstractPiglin { - - @Override - public Brain getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - @Override -diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index 9a2de546dc2af2ad4bf5d32ca6583f0e1f3f70d8..1c7bb504a576568bd275b4f1373208d37d1419e5 100644 ---- a/src/main/java/net/minecraft/world/level/block/Blocks.java -+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1215,7 +1215,7 @@ public class Blocks { - } - - private static Boolean ocelotOrParrot(BlockState state, BlockGetter world, BlockPos pos, EntityType type) { -- return (boolean)type == EntityType.OCELOT || type == EntityType.PARROT; -+ return type == EntityType.OCELOT || type == EntityType.PARROT; // Purpur - decompile error - } - - private static Block bed(DyeColor color) { diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 2067530fc..a6c522650 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39e8a1c4ea 100644 +index 70f9e737b3b9f80395afc3542aafe4a0c774c722..70fa9893c7af6387df9e5c33be21653e73222b36 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java -@@ -48,6 +48,12 @@ public class BlockPos extends Vec3i { +@@ -47,6 +47,12 @@ public class BlockPos extends Vec3i { private static final int X_OFFSET = 38; // Paper end - Optimize Bit Operations by inlining @@ -22,7 +22,7 @@ index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b2dd76b79660126cac3b995e9ca2f88dc70937ff..fcf2d5e56c025f236589c40f598e36a167b13a41 100644 +index 0405c868facdbe64537ef6be4d65e80cea929af0..276ecc5e497f92be0df386fc594311e630018191 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1712,6 +1712,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getSyncableAttributes() { - return this.attributes.values().stream().filter((attribute) -> { -- return attribute.getAttribute().isClientSyncable(); -+ return attribute.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute())); // Purpur - }).collect(Collectors.toList()); + } +@@ -41,7 +48,7 @@ public class AttributeMap { } + public Collection getSyncableAttributes() { +- return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable()).collect(Collectors.toList()); ++ return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute()))).collect(Collectors.toList()); // Purpur + } + + diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 0a13e076b42bc8c0e7d4962379c207dea89f0435..2d7afaa67c762107717486cb9dbbf6f8f967396c 100644 +index c92583b6d1527db32f4a644f30c8f8468e9e2fc2..b8f65dc8f0db4bbe5f9c223e4ba129738fbfd795 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -81,7 +81,89 @@ import org.slf4j.Logger; - - public class DefaultAttributes { - private static final Logger LOGGER = LogUtils.getLogger(); -- private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ALLAY, Allay.createAttributes().build()).put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAMEL, Camel.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.BREEZE, Breeze.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.FROG, Frog.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNIFFER, Sniffer.createAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TADPOLE, Tadpole.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WARDEN, Warden.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); -+ private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder() -+ .put(EntityType.ALLAY, Allay.createAttributes().build()) -+ .put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()) -+ .put(EntityType.AXOLOTL, Axolotl.createAttributes().build()) -+ .put(EntityType.BAT, Bat.createAttributes().build()) -+ .put(EntityType.BEE, Bee.createAttributes().build()) -+ .put(EntityType.BLAZE, Blaze.createAttributes().build()) -+ .put(EntityType.CAT, Cat.createAttributes().build()) -+ .put(EntityType.CAMEL, Camel.createAttributes().build()) -+ .put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()) -+ .put(EntityType.CHICKEN, Chicken.createAttributes().build()) -+ .put(EntityType.COD, AbstractFish.createAttributes().build()) -+ .put(EntityType.COW, Cow.createAttributes().build()) -+ .put(EntityType.CREEPER, Creeper.createAttributes().build()) -+ .put(EntityType.DOLPHIN, Dolphin.createAttributes().build()) -+ .put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.DROWNED, Zombie.createAttributes().build()) -+ .put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()) -+ .put(EntityType.ENDERMAN, EnderMan.createAttributes().build()) -+ .put(EntityType.ENDERMITE, Endermite.createAttributes().build()) -+ .put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()) -+ .put(EntityType.EVOKER, Evoker.createAttributes().build()) -+ .put(EntityType.BREEZE, Breeze.createAttributes().build()) -+ .put(EntityType.FOX, Fox.createAttributes().build()) -+ .put(EntityType.FROG, Frog.createAttributes().build()) -+ .put(EntityType.GHAST, Ghast.createAttributes().build()) -+ .put(EntityType.GIANT, Giant.createAttributes().build()) -+ .put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()) -+ .put(EntityType.GOAT, Goat.createAttributes().build()) -+ .put(EntityType.GUARDIAN, Guardian.createAttributes().build()) -+ .put(EntityType.HOGLIN, Hoglin.createAttributes().build()) -+ .put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()) -+ .put(EntityType.HUSK, Zombie.createAttributes().build()) -+ .put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()) -+ .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) -+ .put(EntityType.LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) -+ .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) -+ .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.OCELOT, Ocelot.createAttributes().build()) -+ .put(EntityType.PANDA, Panda.createAttributes().build()) -+ .put(EntityType.PARROT, Parrot.createAttributes().build()) +@@ -123,7 +123,7 @@ public class DefaultAttributes { + .put(EntityType.OCELOT, Ocelot.createAttributes().build()) + .put(EntityType.PANDA, Panda.createAttributes().build()) + .put(EntityType.PARROT, Parrot.createAttributes().build()) +- .put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()) + .put(EntityType.PHANTOM, net.minecraft.world.entity.monster.Phantom.createAttributes().build()) // Purpur -+ .put(EntityType.PIG, Pig.createAttributes().build()) -+ .put(EntityType.PIGLIN, Piglin.createAttributes().build()) -+ .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) -+ .put(EntityType.PILLAGER, Pillager.createAttributes().build()) -+ .put(EntityType.PLAYER, Player.createAttributes().build()) -+ .put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()) -+ .put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.RABBIT, Rabbit.createAttributes().build()) -+ .put(EntityType.RAVAGER, Ravager.createAttributes().build()) -+ .put(EntityType.SALMON, AbstractFish.createAttributes().build()) -+ .put(EntityType.SHEEP, Sheep.createAttributes().build()) -+ .put(EntityType.SHULKER, Shulker.createAttributes().build()) -+ .put(EntityType.SILVERFISH, Silverfish.createAttributes().build()) -+ .put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()) -+ .put(EntityType.SLIME, Monster.createMonsterAttributes().build()) -+ .put(EntityType.SNIFFER, Sniffer.createAttributes().build()) -+ .put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()) -+ .put(EntityType.SPIDER, Spider.createAttributes().build()) -+ .put(EntityType.SQUID, Squid.createAttributes().build()) -+ .put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.STRIDER, Strider.createAttributes().build()) -+ .put(EntityType.TADPOLE, Tadpole.createAttributes().build()) -+ .put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.TURTLE, Turtle.createAttributes().build()) -+ .put(EntityType.VEX, Vex.createAttributes().build()) -+ .put(EntityType.VILLAGER, Villager.createAttributes().build()) -+ .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) -+ .put(EntityType.WARDEN, Warden.createAttributes().build()) -+ .put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()) -+ .put(EntityType.WITCH, Witch.createAttributes().build()) -+ .put(EntityType.WITHER, WitherBoss.createAttributes().build()) -+ .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.WOLF, Wolf.createAttributes().build()) -+ .put(EntityType.ZOGLIN, Zoglin.createAttributes().build()) -+ .put(EntityType.ZOMBIE, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()) -+ .put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); - - public static AttributeSupplier getSupplier(EntityType type) { - return SUPPLIERS.get(type); + .put(EntityType.PIG, Pig.createAttributes().build()) + .put(EntityType.PIGLIN, Piglin.createAttributes().build()) + .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) diff --git a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java -index 03d77c6d4697d4934ca65e3329982f0efe089820..ce7e3e90993b76225dc820a21e04267e488f5f7b 100644 +index b70295a746b6993f1da0f8669567cd6a955573a6..c3049e6c623949b19fde04a3db8ff057a6d07955 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -505,7 +423,7 @@ index 03d77c6d4697d4934ca65e3329982f0efe089820..ce7e3e90993b76225dc820a21e04267e return this.operation == MoveControl.Operation.MOVE_TO; } diff --git a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java -index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e56f24563f 100644 +index fcb419bc334207216e7cec103fd3a0ac447a0ebe..b33da623d6537ff35930667272f45dcc9090502d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java @@ -3,7 +3,7 @@ package net.minecraft.world.entity.ai.control; @@ -524,8 +442,8 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5 - public void tick() { + public void vanillaTick() { // Purpur if (this.lookAtCooldown > 0) { - --this.lookAtCooldown; - this.getYRotD().ifPresent((yaw) -> { + this.lookAtCooldown--; + this.getYRotD().ifPresent(yaw -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, yaw + 20.0F, this.yMaxRotSpeed)); diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -623,28 +541,27 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f BlockPos blockposition = this.blockPosition(); BlockPos blockposition1 = blockposition.above(); diff --git a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a9852e10d 100644 +index 9d67c2394be00ed226a3076a3f01ba70423fc29c..b1df01bfc16f548821576c93f9616169314f89d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -@@ -94,7 +94,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -94,6 +94,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); -- this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 1.6D, 1.4D, EntitySelector.NO_SPECTATORS::test)); + this.goalSelector.addGoal(0, new PanicGoal(this, 1.25)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 1.6, 1.4, EntitySelector.NO_SPECTATORS::test)); this.goalSelector.addGoal(4, new AbstractFish.FishSwimGoal(this)); - } -@@ -107,7 +107,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -107,7 +108,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override public void travel(Vec3 movementInput) { if (this.isEffectiveAi() && this.isInWater()) { - this.moveRelative(0.01F, movementInput); + this.moveRelative(getRider() != null ? getSpeed() : 0.01F, movementInput); // Purpur this.move(MoverType.SELF, this.getDeltaMovement()); - this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); + this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (this.getTarget() == null) { -@@ -166,7 +166,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -167,7 +168,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { protected void playStepSound(BlockPos pos, BlockState state) { } @@ -653,7 +570,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a private final AbstractFish fish; FishMoveControl(AbstractFish owner) { -@@ -174,14 +174,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -175,14 +176,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { this.fish = owner; } @@ -669,7 +586,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a + @Override + public void vanillaTick() { // Purpur if (this.fish.isEyeInFluid(FluidTags.WATER)) { - this.fish.setDeltaMovement(this.fish.getDeltaMovement().add(0.0D, 0.005D, 0.0D)); + this.fish.setDeltaMovement(this.fish.getDeltaMovement().add(0.0, 0.005, 0.0)); } if (this.operation == MoveControl.Operation.MOVE_TO && !this.fish.getNavigation().isDone()) { @@ -1559,10 +1476,10 @@ index 24770540c51fe4831040d6b46b27636d25ebac40..ebfa162f172bdad7b17ce153fdee5087 this.goalSelector.addGoal(3, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2D, Ingredient.of(Items.CARROT_ON_A_STICK), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5a2ed28e9 100644 +index 17749ddf448ea4f04ed1e1a9c33123e1cd49a46e..c737eea79621d565b5bbd28e22fa0731c3ed6068 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -60,11 +60,40 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -59,11 +59,40 @@ public class PolarBear extends Animal implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -1603,25 +1520,26 @@ index 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5 @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -80,12 +109,14 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -79,12 +108,14 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); - this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); + this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new PolarBear.PolarBearHurtByTargetGoal()); this.targetSelector.addGoal(2, new PolarBear.PolarBearAttackPlayersGoal()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -202,6 +233,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -201,6 +232,12 @@ public class PolarBear extends Animal implements NeutralMob { + if (!this.level().isClientSide) { this.updatePersistentAnger((ServerLevel)this.level(), true); } - ++ + // Purpur start + if (isStanding() && --standTimer <= 0) { + setStanding(false); @@ -1630,7 +1548,7 @@ index 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5 } @Override -@@ -231,6 +267,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -230,6 +267,7 @@ public class PolarBear extends Animal implements NeutralMob { public void setStanding(boolean warning) { this.entityData.set(DATA_STANDING_ID, warning); @@ -1912,7 +1830,7 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 } 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 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146 100644 +index 051fb9f1e0d91b1cb1e2dec9a03f3b26fe64c82a..423c67f6d0faac7e46bdbe7f5bc3076a687fbb73 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -48,9 +48,32 @@ public class Squid extends WaterAnimal { @@ -1948,7 +1866,7 @@ index 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a8 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -298,6 +321,37 @@ public class Squid extends WaterAnimal { +@@ -292,6 +315,37 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -1987,10 +1905,10 @@ index 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a8 if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7fb90908f 100644 +index 5247f1134db2cbaf412cfe583b67cfe4d58dc967..fe546baadc2e238667386c494359ddf904dd41e5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -42,6 +42,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -65,6 +65,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder super(type, world); } @@ -2283,10 +2201,10 @@ index 84ae19bf9bddd2b6ee4737577d8836d59be028c2..7183cd107218d36962803facb63cd6f3 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb03d631b2 100644 +index 1767fd2df8cb37e9c36fa3008b5131ff4bdad12c..709a5b786b56b92e00e25fbc9cf7ac07f093c5a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -79,16 +79,65 @@ public class Frog extends Animal implements VariantHolder { +@@ -104,16 +104,65 @@ public class Frog extends Animal implements VariantHolder { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2353,7 +2271,7 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -163,7 +212,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -187,7 +236,7 @@ public class Frog extends Animal implements VariantHolder { @Override protected void customServerAiStep() { this.level().getProfiler().push("frogBrain"); @@ -2362,7 +2280,7 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); -@@ -349,7 +398,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -376,7 +425,7 @@ public class Frog extends Animal implements VariantHolder { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2510,7 +2428,7 @@ index 815eb15086976b8f9e03bf8182d9ed50aec14720..41777079871eef2bb4d319f28c8f441d this.addBehaviourGoals(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index e0dfee0e0ce091d5ae0ec740e939c2c50915c104..6a5fb18523545ccc788b09ab4fbee1b14a64bc63 100644 +index 8c14f9f2ad383f87c498126f135b460a241da410..5242059484fb5f407a2da2b0c01a8feeaf1c3a64 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -15,6 +15,13 @@ public class Donkey extends AbstractChestedHorse { @@ -2528,7 +2446,7 @@ index e0dfee0e0ce091d5ae0ec740e939c2c50915c104..6a5fb18523545ccc788b09ab4fbee1b1 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 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe0b88a7e6 100644 +index f3ba42437e50cd19ad12d00a39c3f92544137fbd..6503f68345d931ac73e8291add6ed108c10ceb60 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 @@ -40,6 +40,13 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -2544,7 +2462,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 6623674136b0f865d5b3d7a10d3bf05793b82f87..1c6be506804b9622c4d0094814939f894ca857df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -2698,7 +2616,7 @@ index 038de19633002e8f7c4b1ead7438cef0163456ce..c1d1321c75330231777adb4ff6e0ca60 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 2f7f1f01c5e99266e66f7b8324fc94d2130ea9a4..cc19e9cc90789a5170d1cf3e004a3a452aad8b20 100644 +index 0a6ad1ad18051dc6311a6c4dd97dddf70b012014..c1fd9363ef67dc2641a6ad37f4a20dd8ce5ec085 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -26,6 +26,18 @@ public class ZombieHorse extends AbstractHorse { @@ -2718,7 +2636,7 @@ index 2f7f1f01c5e99266e66f7b8324fc94d2130ea9a4..cc19e9cc90789a5170d1cf3e004a3a45 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } @@ -76,6 +88,7 @@ public class ZombieHorse extends AbstractHorse { @@ -2766,7 +2684,7 @@ index 0a5b953bd8c0c7f181da4090b950e9e6524b6d61..7fb2c28b567c6c338a68bdc29d24cb65 double d0 = this.moveControl.getSpeedModifier(); diff --git a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java b/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java -index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e0791c89f 100644 +index aa5416157abd155ffadf94f61b77fa36d694699f..1dd1bd40607e6da09abb0315097588aed550c0c5 100644 --- a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java +++ b/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java @@ -24,6 +24,13 @@ public class EnderDragonPart extends Entity { @@ -3138,7 +3056,7 @@ index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..9d259d7e2aa3e44e350eb5927314cfce this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43dbae23272 100644 +index 2d4399a4dba754704c873f088fb4fc1a7fc56ef1..929074db505e0838a9b133228f81cad87bdab5fb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -32,6 +32,7 @@ public class Blaze extends Monster { @@ -3191,22 +3109,22 @@ index 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43d protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Blaze.BlazeAttackGoal(this)); - this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0D)); - this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); + this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0)); + this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0, 0.0F)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } public static AttributeSupplier.Builder createAttributes() { -- return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0D).add(Attributes.MOVEMENT_SPEED, (double)0.23F).add(Attributes.FOLLOW_RANGE, 48.0D); -+ return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0D).add(Attributes.MOVEMENT_SPEED, (double)0.23F).add(Attributes.FOLLOW_RANGE, 48.0D).add(Attributes.FLYING_SPEED, 0.6D); // Purpur +- return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0).add(Attributes.MOVEMENT_SPEED, 0.23F).add(Attributes.FOLLOW_RANGE, 48.0); ++ return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0).add(Attributes.MOVEMENT_SPEED, 0.23F).add(Attributes.FOLLOW_RANGE, 48.0).add(Attributes.FLYING_SPEED, 0.6D); // Purpur } @Override -@@ -106,6 +143,14 @@ public class Blaze extends Monster { +@@ -116,6 +153,13 @@ public class Blaze extends Monster { @Override protected void customServerAiStep() { @@ -3217,8 +3135,7 @@ index 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43d + return; + } + // Purpur end -+ - --this.nextHeightOffsetChangeTick; + this.nextHeightOffsetChangeTick--; if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java @@ -3664,7 +3581,7 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e if (this.floatDuration-- <= 0) { this.floatDuration += this.ghast.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 793c72bb7b86e404926085629121d6cad19a2740..198e3219e8f44eaea8ff1914c6c20efda172ff70 100644 +index a329395dd8ff2d5428de19018111373806fc8796..9f8c47bcaace9bd4cb276d0dc252f3d0f259a3af 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -15,6 +15,29 @@ public class Giant extends Monster { @@ -3862,7 +3779,7 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910c this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf1929fccca6f 100644 +index 2ae1e5d2b16322136983d6703b770bfc3602b6eb..6c4422adf858595a740f6f8758db18859dc33004 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -25,6 +25,28 @@ public class MagmaCube extends Slime { @@ -3892,7 +3809,7 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } @@ -70,11 +92,12 @@ public class MagmaCube extends Slime { } @@ -3901,8 +3818,8 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192 - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public Vec3 vec3 = this.getDeltaMovement(); - float f = (float)this.getSize() * 0.1F; - this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + f), vec3.z); + float f = this.getSize() * 0.1F; + this.setDeltaMovement(vec3.x, this.getJumpPower() + f, vec3.z); this.hasImpulse = true; + this.actualJump = false; // Purpur } @@ -4422,7 +4339,7 @@ index 7618364e5373fe17cfe45a5a4ee9ab25e591581c..dd1a6fc505ce2214903dbe703bcabe7d this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index 8185cef34b9300561a00f9e62b98f1aa818a3f5a..abd2c1accaa9b03fefab2d8c7f9132540ea9065e 100644 +index 207a649d737adff440bd3f7cba15b0dbca338a35..44006bcb7d70661a6990e3fc4375dd6da34517e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -21,6 +21,23 @@ public class Stray extends AbstractSkeleton { @@ -4606,10 +4523,10 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf Vec3 vec3d1 = Vex.this.getDeltaMovement(); 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 a6af5ac9d09834940d3dd4c80b16450b90484edb..e5d3bf2e8934d97760eaf165a0ac930d51a3c884 100644 +index 0ee020848cdfd0c069f1e8d3a9516a339d82467c..6301985e0906a06f41030f7a90bc862907caf9c5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -58,14 +58,33 @@ public class Vindicator extends AbstractIllager { +@@ -56,14 +56,33 @@ public class Vindicator extends AbstractIllager { super(type, world); } @@ -4638,9 +4555,9 @@ index a6af5ac9d09834940d3dd4c80b16450b90484edb..e5d3bf2e8934d97760eaf165a0ac930d this.goalSelector.addGoal(1, new Vindicator.VindicatorBreakDoorGoal(this)); this.goalSelector.addGoal(2, new AbstractIllager.RaiderOpenDoorGoal(this)); this.goalSelector.addGoal(3, new Raider.HoldGroundAttackGoal(this, 10.0F)); - this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); + this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, false)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Raider.class).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -4713,10 +4630,10 @@ index 20a65c11ededcd7170704b70118da6200151fbab..4235684e533e744bb1eb90a5cc69001e protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86dddf8c5ab 100644 +index 728f3dff42678ed48c8921ea0e960f48724a9183..f34803f4bebf2eafba483628b20784c2134002fa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -69,6 +69,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -82,6 +82,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4740,7 +4657,7 @@ index 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86d @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -201,6 +218,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -242,6 +259,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("zoglinBrain"); @@ -4840,10 +4757,10 @@ index fbabbd0808304f5d0d12f987d00c9e43a89fb1c9..2121de85765d535effb3ef4e0c4a8732 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 9921b160fb21f72fbd28fe81ea66fbc3dc05f83f..1d54077a7ebb463270a03bb17c342ced8874f4c2 100644 +index 1299f93d4f983e6715e447add65df91ef9e9090a..42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -69,6 +69,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -92,6 +92,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4867,7 +4784,7 @@ index 9921b160fb21f72fbd28fe81ea66fbc3dc05f83f..1d54077a7ebb463270a03bb17c342ced @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -132,7 +149,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -159,7 +176,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("hoglinBrain"); @@ -4914,10 +4831,10 @@ index 83d83e3f84bb6bd58761671c6cd4c8683545ff4c..015bb57c73c7b38622329fc3001b6369 this.level().getProfiler().pop(); PiglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024a4162b68 100644 +index 1afd5245267866c498d4b0d90ca55cda2ede8ca9..0ec07be03e871caf5a30748f540cac8ce50f1f4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -41,6 +41,23 @@ public class PiglinBrute extends AbstractPiglin { +@@ -63,6 +63,23 @@ public class PiglinBrute extends AbstractPiglin { this.xpReward = 20; } @@ -4939,9 +4856,9 @@ index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } -@@ -86,6 +103,7 @@ public class PiglinBrute extends AbstractPiglin { +@@ -114,6 +131,7 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBruteBrain"); diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 86296e9bb..9c9f762d1 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 315254c0cb42a2610b24846cf76972d25d9ed843..d011f1ecc9bb81231c68c5710bd65bc1c44ccaad 100644 +index 75d1990cc33b06652ba0cdf5ee631594cf259d31..9ced09b01af013cd2e4e64e106dee147ae369dec 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; @@ -18,7 +18,7 @@ index 315254c0cb42a2610b24846cf76972d25d9ed843..d011f1ecc9bb81231c68c5710bd65bc1 private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6bdbdac169 100644 +index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd804b5f978 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -36,6 +36,11 @@ public class GlowSquid extends Squid { @@ -34,7 +34,7 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4621dd94e9346bdd2eeca1d17869ff99aede0077..781eefa21c958c28c35d2d9559d89da236ce9387 100644 +index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fcb1e4f1ff 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -299,10 +299,10 @@ index ebfa162f172bdad7b17ce153fdee508748620fc0..fdf5651c7877313437ecd32914823d00 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 2b6efb46035c5695928643780bfbd5b5a2ed28e9..70b45c622a459ace397d4d54cd99e8ae7fc1ce65 100644 +index c737eea79621d565b5bbd28e22fa0731c3ed6068..5e6941abe1372ea4cba893de36ab20d2a3a42a21 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -94,6 +94,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -93,6 +93,11 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end @@ -395,7 +395,7 @@ index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146..f9db04ee35928d76dc504808a2acfca85295a6e6 100644 +index 423c67f6d0faac7e46bdbe7f5bc3076a687fbb73..43bd8c55368d0bb1dca3a16ea4e0b1d6452be0cd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { @@ -411,10 +411,10 @@ index 0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146..f9db04ee35928d76dc504808a2acfca8 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df7bd60bbc 100644 +index fe546baadc2e238667386c494359ddf904dd41e5..3d40df730780fcc91c3a352c7572e60458fc5bb0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -54,6 +54,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -77,6 +77,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder } // Purpur end @@ -427,7 +427,7 @@ index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 4707f0d1c78d6080201c313717ef912d4805873d..511de848cb9cfed304fa59cb38205db4b71dd8eb 100644 +index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f37210daf929a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -103,6 +103,11 @@ public class Turtle extends Animal { @@ -561,7 +561,7 @@ index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55 } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 6a5fb18523545ccc788b09ab4fbee1b14a64bc63..365273173e37e74470a1cf511334ea8cb25f8302 100644 +index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d5eea896f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -22,6 +22,21 @@ public class Donkey extends AbstractChestedHorse { @@ -587,7 +587,7 @@ index 6a5fb18523545ccc788b09ab4fbee1b14a64bc63..365273173e37e74470a1cf511334ea8c 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 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464ebd8430b5 100644 +index 6503f68345d931ac73e8291add6ed108c10ceb60..5183ac5534b77230f04734264eadbb8d3f0ff7ef 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 @@ -47,6 +47,21 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -611,7 +611,7 @@ index 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464e + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 1c6be506804b9622c4d0094814939f894ca857df..34d87ab749a62c5d897b7bc66b116a801324b6a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -717,7 +717,7 @@ index c1d1321c75330231777adb4ff6e0ca604f3fab80..85e32d35cdfb7dd11b3c28146b9b71ea public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index cc19e9cc90789a5170d1cf3e004a3a452aad8b20..4835950272c2a95cbcbfe3423bb83997ec6ee2c1 100644 +index c1fd9363ef67dc2641a6ad37f4a20dd8ce5ec085..52eb412401d6843778ab8c4530e8bb3123a83a0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -38,6 +38,21 @@ public class ZombieHorse extends AbstractHorse { @@ -740,7 +740,7 @@ index cc19e9cc90789a5170d1cf3e004a3a452aad8b20..4835950272c2a95cbcbfe3423bb83997 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 7fb2c28b567c6c338a68bdc29d24cb652a4a15bf..074835d3e315eb78d318e81c5fd04e5e786e9127 100644 @@ -800,7 +800,7 @@ index 8fbfd134005c0813406fecbce8a918cd0376d03e..51ccbf3bd77bbcf77833b39fadc6c01f } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 63049b0b4a4ae09e5925129dc363e43dbae23272..04226492a5655e4a3a9716590e2af7fc79560ad9 100644 +index 929074db505e0838a9b133228f81cad87bdab5fb..7b55851008f711a5968fcdf94c0ad18bcd6cf9ee 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -74,6 +74,11 @@ public class Blaze extends Monster { @@ -949,7 +949,7 @@ index 3f886ffb0aa8591e4ca8324301ae9a8eeac57ab4..edd3b7a855165eb090edb9ad95d36cdb protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 198e3219e8f44eaea8ff1914c6c20efda172ff70..2a30499fd6f4a1340f6911f0f7f079bcbe8576a3 100644 +index 9f8c47bcaace9bd4cb276d0dc252f3d0f259a3af..d3876553949821323953b7113c7bd4f83f71a18c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -38,6 +38,13 @@ public class Giant extends Monster { @@ -1022,7 +1022,7 @@ index 4d50d10016a3b574d67bdfec5aee910cede8ffc3..c00530db0eff302c14dd9c52d1d988cb protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index aad51022eac584fbc058c2b25e2bf1929fccca6f..b472309f97b24f1d7b97d8b6d464c479c2d602d5 100644 +index 6c4422adf858595a740f6f8758db18859dc33004..8cdce384f6d191231012788f27753f0f03753460 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -47,6 +47,26 @@ public class MagmaCube extends Slime { @@ -1050,7 +1050,7 @@ index aad51022eac584fbc058c2b25e2bf1929fccca6f..b472309f97b24f1d7b97d8b6d464c479 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java index 98ced015ceb4f68364ff5ee6f7ee1a69251dbb04..6819acda60e783ee57dd8b9b5d27bc1e105425c3 100644 @@ -1241,7 +1241,7 @@ index dd1a6fc505ce2214903dbe703bcabe7d264fbe90..3f67ab84485737291aec531441d88b74 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index abd2c1accaa9b03fefab2d8c7f9132540ea9065e..77d4d37cffe959031296614751961ca7c7400c31 100644 +index 44006bcb7d70661a6990e3fc4375dd6da34517e0..e1327ea96fe394b1c27dbe88c49596256e4e61d3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -38,6 +38,11 @@ public class Stray extends AbstractSkeleton { @@ -1289,10 +1289,10 @@ index b676f6c814d63e950af192a56ab5a4bf5f14a7d6..0dae7c87a9f61a7d8e493537e0aada78 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 e5d3bf2e8934d97760eaf165a0ac930d51a3c884..706458eeab0cea2fe0cdfe39717f639aa5d85608 100644 +index 6301985e0906a06f41030f7a90bc862907caf9c5..c5f21eeec60e77167970ed68eec0348912a62e0e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -75,6 +75,11 @@ public class Vindicator extends AbstractIllager { +@@ -73,6 +73,11 @@ public class Vindicator extends AbstractIllager { } // Purpur end @@ -1337,10 +1337,10 @@ index 4235684e533e744bb1eb90a5cc69001e43782bc2..afad65b86e762187d0779cfee2b0b108 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index dc29e875c1e184c1c4553c127bb8c86dddf8c5ab..1d862dd019b2d024f61cfc8956430d18d94b1ebf 100644 +index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa457420395 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -86,6 +86,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -99,6 +99,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { } // Purpur end @@ -1424,10 +1424,10 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 1d54077a7ebb463270a03bb17c342ced8874f4c2..9748b32692b14bffde1506e88149939c4ed25900 100644 +index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627c3c95bc1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -86,6 +86,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -109,6 +109,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end @@ -1456,10 +1456,10 @@ index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913fd3b413d1 100644 +index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52bc836901c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -58,6 +58,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -80,6 +80,11 @@ public class PiglinBrute extends AbstractPiglin { } // Purpur end @@ -1469,7 +1469,7 @@ index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913f + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652a8bcb0a8 100644 diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0010-Barrels-and-enderchests-6-rows.patch index cccb1f1c7..d0d27b999 100644 --- a/patches/server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0010-Barrels-and-enderchests-6-rows.patch @@ -108,44 +108,54 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index ddca14f1224327a738415fb8b37398d8df0aa9c8..fe3236295790b9e250486835176cae810160c33a 100644 +index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86ddbb3f7f6 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -92,6 +92,34 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -92,7 +92,7 @@ public class EnderChestBlock extends AbstractChestBlock i EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; playerEnderChestContainer.setActiveChest(enderChestBlockEntity); - player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> { -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows) { -+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) { -+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); -+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { -+ player.sixRowEnderchestSlotCount = 54; -+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) { -+ player.sixRowEnderchestSlotCount = 45; -+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) { -+ player.sixRowEnderchestSlotCount = 36; -+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) { -+ player.sixRowEnderchestSlotCount = 27; -+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) { -+ player.sixRowEnderchestSlotCount = 18; -+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) { -+ player.sixRowEnderchestSlotCount = 9; -+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer); -+ } -+ } -+ player.sixRowEnderchestSlotCount = -1; -+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); -+ } -+ // Purpur end - return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); - }, CONTAINER_TITLE)); + player.openMenu( +- new SimpleMenuProvider((syncId, inventory, playerx) -> ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) ++ new SimpleMenuProvider((syncId, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(syncId, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur + ); player.awardStat(Stats.OPEN_ENDERCHEST); + PiglinAi.angerNearbyPiglins(player, true); +@@ -103,6 +103,35 @@ public class EnderChestBlock extends AbstractChestBlock i + } + } + ++ // Purpur start ++ private ChestMenu getEnderChestSixRows(int syncId, net.minecraft.world.entity.player.Inventory inventory, Player player, PlayerEnderChestContainer playerEnderChestContainer) { ++ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) { ++ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); ++ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { ++ player.sixRowEnderchestSlotCount = 54; ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) { ++ player.sixRowEnderchestSlotCount = 45; ++ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) { ++ player.sixRowEnderchestSlotCount = 36; ++ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) { ++ player.sixRowEnderchestSlotCount = 27; ++ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) { ++ player.sixRowEnderchestSlotCount = 18; ++ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) { ++ player.sixRowEnderchestSlotCount = 9; ++ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer); ++ } ++ } ++ player.sixRowEnderchestSlotCount = -1; ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); ++ } ++ // Purpur end ++ + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new EnderChestBlockEntity(pos, state); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2d989a3b5 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java diff --git a/patches/server/0011-Llama-API.patch b/patches/server/0011-Llama-API.patch index 7039475bf..9a6f7cb1b 100644 --- a/patches/server/0011-Llama-API.patch +++ b/patches/server/0011-Llama-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Llama API diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab156812b8 100644 +index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827a0113225 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -14,7 +14,7 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab public boolean canUse() { + if (!this.llama.shouldJoinCaravan) return false; // Purpur if (!this.llama.isLeashed() && !this.llama.inCaravan()) { - List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { + List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> { EntityType entityType = entity.getType(); @@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -23,9 +23,9 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab + if (!this.llama.shouldJoinCaravan) return false; // Purpur if (this.llama.inCaravan() && this.llama.getCaravanHead().isAlive() && this.firstIsLeashed(this.llama, 0)) { double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); - if (d > 676.0D) { + if (d > 676.0) { 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 8c8c135e9bc707ae8e2aad249302109023f6fea3..7b329fa3af99742d83eca7825e2da3b6e55431ee 100644 +index 34d87ab749a62c5d897b7bc66b116a801324b6a7..b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660 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 @@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder -Date: Thu, 26 Mar 2020 19:46:44 -0500 +Date: Fri, 12 Apr 2024 15:40:12 -0700 Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db039a7f9c 100644 +index 5e6941abe1372ea4cba893de36ab20d2a3a42a21..5db17e4fc120e32e66a3a5c6313471ce5b090346 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -98,6 +98,27 @@ public class PolarBear extends Animal implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.polarBearMaxHealth); } @@ -36,7 +36,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -107,7 +128,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -106,7 +127,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -45,7 +45,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db } @Override -@@ -117,6 +138,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -116,6 +137,12 @@ public class PolarBear extends Animal implements NeutralMob { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); @@ -55,11 +55,11 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db + this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, net.minecraft.world.item.crafting.Ingredient.of(level().purpurConfig.polarBearBreedableItem), false)); + } + // Purpur end - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); - this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); + this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 532e25d00128c62c6eae4d0076dc0a3bd16c5b4e..0d6f0e69093594fffcdb616d319be1b416909a64 100644 +index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562e724361a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -960,6 +960,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Cat-spawning-options.patch b/patches/server/0033-Cat-spawning-options.patch index 3ca10d95e..dd5a15479 100644 --- a/patches/server/0033-Cat-spawning-options.patch +++ b/patches/server/0033-Cat-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b6631689f1b8 100644 +index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d152251cce431 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -30,7 +30,7 @@ public class CatSpawner implements CustomSpawner { +@@ -28,7 +28,7 @@ public class CatSpawner implements CustomSpawner { if (this.nextTick > 0) { return 0; } else { @@ -17,41 +17,36 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 Player player = world.getRandomPlayer(); if (player == null) { return 0; -@@ -63,11 +63,15 @@ public class CatSpawner implements CustomSpawner { - } +@@ -62,8 +62,12 @@ public class CatSpawner implements CustomSpawner { private int spawnInVillage(ServerLevel world, BlockPos pos) { -- int i = 48; + int i = 48; +- if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { +- List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(48.0, 8.0, 48.0)); + // Purpur start + int range = world.purpurConfig.catSpawnVillageScanRange; + if (range <= 0) return 0; -+ - if (world.getPoiManager().getCountInRange((entry) -> { - return entry.is(PoiTypes.HOME); -- }, pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -- List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(48.0D, 8.0D, 48.0D)); -+ }, pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -+ List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range)); -+ // Purpur end ++ if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { ++ List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); ++ // Purpur end if (list.size() < 5) { return this.spawnCat(pos, world); } -@@ -77,8 +81,11 @@ public class CatSpawner implements CustomSpawner { - } +@@ -74,7 +78,11 @@ public class CatSpawner implements CustomSpawner { private int spawnInHut(ServerLevel world, BlockPos pos) { -- int i = 16; -- List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(16.0D, 8.0D, 16.0D)); + int i = 16; +- List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(16.0, 8.0, 16.0)); + // Purpur start + int range = world.purpurConfig.catSpawnSwampHutScanRange; + if (range <= 0) return 0; -+ List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range)); ++ List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); + // Purpur end return list.size() < 1 ? this.spawnCat(pos, world) : 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba7f378b9b0c791dd77862439f310a6653cccf30..6102535823eab8862c23919f20a8062f9f750eb6 100644 +index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -272,6 +272,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0051-Implement-infinite-liquids.patch b/patches/server/0051-Implement-infinite-liquids.patch index 2f4d03016..a2c5974bd 100644 --- a/patches/server/0051-Implement-infinite-liquids.patch +++ b/patches/server/0051-Implement-infinite-liquids.patch @@ -49,10 +49,10 @@ index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff protected boolean canConvertToSource(Level world) { return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -index cde93efaecd42b9081405638af3ba91cb5e184c9..c664fd77dd865037293a3e86699fd1fa6b703882 100644 +index ba34aea9db5c3af56f3c7e84424ec91988a2370e..7987279e17db64587aa6d126b46359ccd06f109d 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -@@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid { +@@ -74,6 +74,13 @@ public abstract class WaterFluid extends FlowingFluid { return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch index 77dbb304e..e20c9a2b9 100644 --- a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch @@ -5,7 +5,7 @@ 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 7fe6f44d25790cd222b700cf5ce1d5f36d89e650..95baff79c07f1fdb1f2c2799527c0d245790cd60 100644 +index a01d19ab227621ffa36e9c1bb840f452a856eaa8..10a0f2b4968600f088677103b0bfbe5f69aa4428 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -558,6 +558,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -20,7 +20,7 @@ index 7fe6f44d25790cd222b700cf5ce1d5f36d89e650..95baff79c07f1fdb1f2c2799527c0d24 return this.hardCollides; } 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 41261b72bfa5157139a5384b6a0b66b719ec02b9..8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94 100644 +index f5e1aa316a90bf2cd9c997b76830096d4fbbee42..c37b3486dcc75c5c78d605afeff2e3f723940636 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 { @@ -36,10 +36,10 @@ index 41261b72bfa5157139a5384b6a0b66b719ec02b9..8abc8a28ae74dc78f53b9fb38fb31b47 public boolean isPickable() { return false; 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 23dc37ff1f92951817864963bf93220d5aae91bb..af563ffb67c43b50555951fe1b5e4320d429a7f1 100644 +index 995fbfa225efe40274c20608b9b30b8afa847698..c70f04cdee1e8ba6f8a15c9e38edbe0023b5ab96 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 -@@ -112,6 +112,7 @@ public class EntityStorage implements EntityPersistentStorage { +@@ -111,6 +111,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 diff --git a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch index 04a64d90b..21a17932f 100644 --- a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch @@ -39,10 +39,10 @@ index 1ad126d992d95062a3db08374db7a927f23a0cac..38e097807c5034c077a10d3af08bf348 return this.tag == null ? 0 : this.tag.getInt("Damage"); } 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 ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647678009fa 100644 +index 0d89e2f944e7017cfdac96f8c91f4568e481ff02..496c47eb3b13ba620fde1a2bc96f886c5b01e1de 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -278,6 +278,29 @@ public class EnchantmentHelper { +@@ -266,6 +266,29 @@ public class EnchantmentHelper { return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0; } @@ -70,8 +70,8 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647 + // Purpur end + @Nullable - public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { - return getRandomItemWith(enchantment, entity, (stack) -> { + public static Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { + return getRandomItemWith(enchantment, entity, stack -> true); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index 85b3adc4f..d18374a3c 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -18,7 +18,7 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53cc } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4c61c1dd393ac13da2f0f2b2c07db3070a172e02..87990fd0cb3637779c9750fcc76890dd92873ddd 100644 +index f541b9e78f365518761fd8d3460277d457d769c0..ea07433bc4ab7ee032cf4eef5190ab932079c84f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); - } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) { + } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur - float f = this.squid.getRandom().nextFloat() * ((float)Math.PI * 2F); + float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2); 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 6950c4f5b1b0fd203c9b7adf92d13a321a8c5af1..de43787965c6d45d398be47988fba31dc12e7032 100644 +index 462af0111df5e245bf705f46585924e57a7217cc..7fe8d50f7cf314477d3877826deaed07feabb4b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -902,10 +902,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch index 27391656c..de636690f 100644 --- a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Allow infinite and mending enchantments together diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 518d85a13c37a2f7d32ca0718323181048559986..2c4ce164ab3011f372ff1719c8d4a3331d8db55f 100644 +index 04c39359585d909dedbdfd78f6cbdc06b926607a..01796071135d27e0b8801f585a6d96b8f3a31f6c 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java @@ -19,6 +19,6 @@ public class ArrowInfiniteEnchantment extends Enchantment { @Override public boolean checkCompatibility(Enchantment other) { -- return other instanceof MendingEnchantment ? false : super.checkCompatibility(other); -+ return other instanceof MendingEnchantment ? org.purpurmc.purpur.PurpurConfig.allowInfinityMending : super.checkCompatibility(other); +- return !(other instanceof MendingEnchantment) && super.checkCompatibility(other); ++ return !(other instanceof MendingEnchantment) && super.checkCompatibility(other) || other instanceof MendingEnchantment && org.purpurmc.purpur.PurpurConfig.allowInfinityMending; // Purpur } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 7a3f7aef3..a01051acb 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -220,10 +220,10 @@ index 77147698154dfa6221a979ba170671d60da048ff..d858d4c94fb17d14367672813b506aea protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 0377d40198b88512b1f204a31367c2db039a7f9c..6eefdf7de7edee63b14bffc60557e9779312270c 100644 +index 5db17e4fc120e32e66a3a5c6313471ce5b090346..545e0bfcd602752ad514443917f3015a09a4adcc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -120,6 +120,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -119,6 +119,11 @@ public class PolarBear extends Animal implements NeutralMob { } } @@ -268,7 +268,7 @@ index 1d69558cccc6add5f02f1ff070c985bd5ec406c0..df7deec204ebf99afdbfe49f9a113857 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 511de848cb9cfed304fa59cb38205db4b71dd8eb..eb1af0926c1c8990602ba4f98cec45d6a0a839aa 100644 +index 31ed37796a4c88ecf514f298631f37210daf929a..ccb1ed3f9c3a15489a715e684c0f15d2e67b556f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -108,6 +108,11 @@ public class Turtle extends Animal { @@ -331,10 +331,10 @@ index 74ca2442008b0dea9f9762bbec8d6de1390f2582..baca84088350c82569fb7969136c65bb @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 156fd7b01853f4ad50235646a15893bb03d631b2..3be70e054c658d34c4aa598ff70c63fa2cff7982 100644 +index 709a5b786b56b92e00e25fbc9cf7ac07f093c5a9..907cdc32c30291f5668c806b874da0fbe0754738 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -138,6 +138,10 @@ public class Frog extends Animal implements VariantHolder { +@@ -163,6 +163,10 @@ public class Frog extends Animal implements VariantHolder { } // Purpur end @@ -362,7 +362,7 @@ index 961f808caa60aba70075572161bcb91cd7201008..0282498c7375a73b6982efb02f3cf321 protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 365273173e37e74470a1cf511334ea8cb25f8302..6932d0eafbeca9de80728c6b0ae42340d2297ad0 100644 +index f623586530e9e7783653b95c8c30d07d5eea896f..5b0b7c6bcd01d86552f1967489c5538780b69525 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -37,6 +37,11 @@ public class Donkey extends AbstractChestedHorse { @@ -378,7 +378,7 @@ index 365273173e37e74470a1cf511334ea8cb25f8302..6932d0eafbeca9de80728c6b0ae42340 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 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa15909c8a4ff 100644 +index 5183ac5534b77230f04734264eadbb8d3f0ff7ef..9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4 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 @@ -62,6 +62,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -392,7 +392,7 @@ index 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa159 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660..e11fc274f893d501235422839301a5128268199d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -458,7 +458,7 @@ index 85e32d35cdfb7dd11b3c28146b9b71eae2b5c685..0a6cf9f0f16882c8042a333852699129 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 4835950272c2a95cbcbfe3423bb83997ec6ee2c1..aaec706b7eaa6afdf7959e6dd53cc39344bb97df 100644 +index 52eb412401d6843778ab8c4530e8bb3123a83a0b..625fc14d6ea6049968c99931c412b36cbec92be1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -53,6 +53,11 @@ public class ZombieHorse extends AbstractHorse { @@ -471,7 +471,7 @@ index 4835950272c2a95cbcbfe3423bb83997ec6ee2c1..aaec706b7eaa6afdf7959e6dd53cc393 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 074835d3e315eb78d318e81c5fd04e5e786e9127..4d1071546f523c63b9c981e90a09393e9e4400fa 100644 @@ -506,10 +506,10 @@ index 9b853fd05a3a851cb08d7f849b51f2b220780982..10136a5062d154456c962e7d1a99c2de BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 9748b32692b14bffde1506e88149939c4ed25900..fae14f6ab139e7d7a0e8625488c472f0d0c1a1e2 100644 +index a45df0aeae94f408a24f55bc15c71627c3c95bc1..89b108a248509a72ddd81fdaf70053931f487368 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -91,6 +91,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -114,6 +114,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.hoglinMaxHealth); } diff --git a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch index 52c243b50..b7a86d3ec 100644 --- a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -19,7 +19,7 @@ index 8cb248a185d880bf82ea4746341fe3db5dc89459..aca5e7a2b0eab93c613b03834509366f } 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 80303f9466b8c7097151be313afc9a383693d18a..e5b7598a5613a8281a991e42af5b950bcc2995ca 100644 +index c34701f95580e4cf45fe086115563127432a28c5..2363d9eaad655389c7b7d67d545ef8025f550431 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -268,7 +268,13 @@ public class ItemFrame extends HangingEntity { @@ -38,11 +38,11 @@ index 80303f9466b8c7097151be313afc9a383693d18a..e5b7598a5613a8281a991e42af5b950b 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 03c065d0ad97d29f3586ba2bf3cd207b867ed634..62cdc36a21c0203ed98d2946a1efdf549a5ca3ea 100644 +index 10ee43de05d9f4e0ab980ee5069fe59c0f137403..af07901daaf6a0e5cd7e4b1e07fb491566807932 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -159,7 +159,13 @@ public class Painting extends HangingEntity implements VariantHolder { +@@ -61,6 +61,12 @@ public class TradeWithVillager extends Behavior { throwHalfStack(entity, ImmutableSet.of(Items.WHEAT), villager); } @@ -90,10 +90,10 @@ index 3af715e2f3f3949af614a8fcebbc4a835d48ca49..ade1e411ea1f3b4c9a417265e77b0d68 throwHalfStack(entity, this.trades, villager); } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -index cd7a90ec1073b2b452ca70decefe6a594445003b..47672e48c1cae73cffe532d622b296343fc12ef0 100644 +index d2917f9b215919890f28b513601863ccaced17c7..58338e240079f2de1669e8c2ce839451511feafd 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -@@ -30,8 +30,13 @@ public class VillagerGoalPackages { +@@ -49,8 +49,13 @@ public class VillagerGoalPackages { } public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speed) { @@ -109,7 +109,7 @@ index cd7a90ec1073b2b452ca70decefe6a594445003b..47672e48c1cae73cffe532d622b29634 } else { workAtPoi = new WorkAtPoi(); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java -index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3219d2f13 100644 +index a0e0692d17760f440fe81d52887284c787e562db..ab9bebc07b5228dbc0d3ba4b0f7d1bbe41814c9b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java @@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor { @@ -161,18 +161,18 @@ index 976388612d64cd137b18870119928cbd45dfd2a4..430e660f74ee523d0bb98e21784f3215 }); } diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3fcb1a907 100644 +index 1316f4475802e17039800cc6128e1b065328beb7..d02e2d1aceac651e06a3a3698b7ac64dd30d4b12 100644 --- a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java +++ b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -@@ -26,7 +26,7 @@ public record VillagerProfession(String name, Predicate> heldJob +@@ -31,7 +31,7 @@ public record VillagerProfession( public static final VillagerProfession ARMORER = register("armorer", PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER); public static final VillagerProfession BUTCHER = register("butcher", PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER); public static final VillagerProfession CARTOGRAPHER = register("cartographer", PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER); - public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC); + public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur - public static final VillagerProfession FARMER = register("farmer", PoiTypes.FARMER, ImmutableSet.of(Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS, Items.BONE_MEAL), ImmutableSet.of(Blocks.FARMLAND), SoundEvents.VILLAGER_WORK_FARMER); - public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); - public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); + public static final VillagerProfession FARMER = register( + "farmer", + PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index c034b4686a1f5c67daef7ece163b92f54c6813d4..aebeb25fcb6b9a72ad52d249f8df794c3f5cce11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 99% rename from patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch index 8c2093783..3c69b3f74 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 02be3c960bc89464b589a557d4269fce8fb88766..0461debc992ad7812a28ea73f3e18d5c0c22f700 100644 +index 708b01fa5a86e736fcb110d1a5c0efafde600964..787a2d1b8c887e17f9f9565c292c585e996ca1d2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch deleted file mode 100644 index 3aa798929..000000000 --- a/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 6 Jan 2021 02:19:29 -0600 -Subject: [PATCH] Fix rotating UP/DOWN CW and CCW - - -diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index 392406722b0a040c1d41fdc1154d75d39f6e9c86..b805e57d5a67d77d226cd8154e970050e2e8ef4a 100644 ---- a/src/main/java/net/minecraft/core/Direction.java -+++ b/src/main/java/net/minecraft/core/Direction.java -@@ -253,6 +253,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = SOUTH; - break; -+ // Purpur start -+ case UP: -+ return UP; -+ case DOWN: -+ return DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get Y-rotated facing of " + this); - } -@@ -365,6 +371,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = NORTH; - break; -+ // Purpur start -+ case UP: -+ return UP; -+ case DOWN: -+ return DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get CCW facing of " + this); - } diff --git a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 94% rename from patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch index aec5797be..2fa0f4ba4 100644 --- a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -9,7 +9,7 @@ Normally, the sounds will only play when the block directly above is air. With this patch enabled, players can place any block above the Note Block and it will still work. diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index ff16075fbfe664c73a46bc4b002450867974114e..604053c7b5b2b7f2f1666baa3e0ce5acf3b37e46 100644 +index a541dc3a6e373b30fff0abf5305e77854c190f10..ac88cb949808752a340637ffcb9d7256b7d09478 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java @@ -94,7 +94,7 @@ public class NoteBlock extends Block { @@ -22,7 +22,7 @@ index ff16075fbfe664c73a46bc4b002450867974114e..604053c7b5b2b7f2f1666baa3e0ce5ac // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ee8dfb7d6efea66293cfd8059b8a84a77999fb2..647b58652a87d1d1b4b022853052ea19afa80152 100644 +index 6fbc12411573bbc4794319d41655a1e18ab62768..81b64e25046f212d48a729726758464bb9e42e7f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch similarity index 98% rename from patches/server/0124-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0123-Add-EntityTeleportHinderedEvent.patch index 7b66353a3..df326836f 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 8be3d696f6401189406032dd8d45dc747f546df5..4997f120aa9877c199fbcaa0c2f65226 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 74599d29538b7072464d3bb16b6356da09513d21..61348dfaab2fe3da35ae3195b7224e4b239dddd8 100644 +index 85d154f18e240cac77e023b4b5983ad7a95912b5..cac42202295b16de0466216f64be4fdf30929a7e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -253,6 +253,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,7 +89,7 @@ index 74599d29538b7072464d3bb16b6356da09513d21..61348dfaab2fe3da35ae3195b7224e4b } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bcf3393ad12a70eea0e1b24f69fac15b08af32fb..f74e632f6be8ab2c7bdf9f5ba2ad2a2a0ef4d14e 100644 +index 5cb6572563bad1ef5ed755f94c5d0a854867406f..aad02ebc0df97e6e7024add8fce149b54124a58b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1356,6 +1356,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0125-Farmland-trampling-changes.patch b/patches/server/0124-Farmland-trampling-changes.patch similarity index 94% rename from patches/server/0125-Farmland-trampling-changes.patch rename to patches/server/0124-Farmland-trampling-changes.patch index 66bbf3c24..a1838aeae 100644 --- a/patches/server/0125-Farmland-trampling-changes.patch +++ b/patches/server/0124-Farmland-trampling-changes.patch @@ -12,7 +12,7 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d..5c93cf7f97ecf4fba2c905b293ca7d21d1424f30 100644 +index e9ab88a5c68565f2245b3397edcffb0544a29fea..00a6aa924e47e18ae80b57e9fe1d38e2de15dd72 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -125,12 +125,20 @@ public class FarmBlock extends Block { @@ -37,7 +37,7 @@ index bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d..5c93cf7f97ecf4fba2c905b293ca7d21 if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68a3f2be0b4d99041dcdb9e37c0e1dbcb9c1ae87..87daca07c8f22475921fb8ee968e3d5bfbb0a41c 100644 +index 9f2e762af41f422cef9937896427332d06d545e9..67b147b5d725f354149cc715102ec8fc879452e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -457,10 +457,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0125-Movement-options-for-armor-stands.patch similarity index 98% rename from patches/server/0126-Movement-options-for-armor-stands.patch rename to patches/server/0125-Movement-options-for-armor-stands.patch index 5436c6ebf..490fc8d94 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0125-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ca0719307e4d50b3dcfe13195f1c1e680b00350c..7380008f1bd25eb459e5875f753015593135486f 100644 +index 047c4111d247cea4f203df1a8b11ca5913d513c1..53a695f5425717a47f47ca4585b9b79847ab4a47 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1885,7 +1885,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0126-Fix-stuck-in-portals.patch similarity index 94% rename from patches/server/0127-Fix-stuck-in-portals.patch rename to patches/server/0126-Fix-stuck-in-portals.patch index 3282b813c..5cd17834b 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0126-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a30732576b86bcf9c56e7d0ced8eb8490af13515..e76d1a202bea3dd94cbdbdfca9b052ca1db9142f 100644 +index 8c7333578d0fa28a1ebdd11e768e51a85bed725e..b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index a30732576b86bcf9c56e7d0ced8eb8490af13515..e76d1a202bea3dd94cbdbdfca9b052ca // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7380008f1bd25eb459e5875f753015593135486f..79f6b204668a508d2afd305f520c413f9f5fa8f1 100644 +index 53a695f5425717a47f47ca4585b9b79847ab4a47..09d131178fb6428ba65cd4f08a5badb8693be626 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3164,12 +3164,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch similarity index 98% rename from patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch index 57d318bda..4b99e223d 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e294a75d19c 100644 +index 1330c4a4d9ff347e62a284eb8b71c107d87baf83..d5bcc6e678aec21da855eea805a58a965ef5edee 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -46,6 +46,11 @@ public class GlowSquid extends Squid { @@ -254,10 +254,10 @@ index d858d4c94fb17d14367672813b506aea9e2e4ee1..f32cc2884696db956e10d350f9737602 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 6eefdf7de7edee63b14bffc60557e9779312270c..e03c84575360a65425d7ec375ea9bc17e33bdddb 100644 +index 545e0bfcd602752ad514443917f3015a09a4adcc..a1747c6495286dfa13543d698d00d4cf410f74c1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -125,6 +125,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -124,6 +124,11 @@ public class PolarBear extends Animal implements NeutralMob { return this.level().purpurConfig.polarBearBreedingTicks; } @@ -347,7 +347,7 @@ index 1d70a108293a61b7813b70cc9ce600a3e7b167d5..d46ab4d56e4c34b4dbe7a3df0785ab87 @Override 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 3166987e324c37a07b8c6b8cc78443a1022b9670..fb6fd5e00053ae8bae1f225ffd57fac787fdc2d5 100644 +index 65d0e602a9cab5d51d1a27f690524ddad72bd2a5..ad2a3e593d2376556ca44ebf4539efe7382e1483 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -90,6 +90,11 @@ public class Squid extends WaterAnimal { @@ -363,10 +363,10 @@ index 3166987e324c37a07b8c6b8cc78443a1022b9670..fb6fd5e00053ae8bae1f225ffd57fac7 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c9e336aa3 100644 +index 3d40df730780fcc91c3a352c7572e60458fc5bb0..9c860b3091c991b0c1447860311097a5fc1df685 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -59,6 +59,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -82,6 +82,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.tropicalFishMaxHealth); } @@ -379,7 +379,7 @@ index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index eb1af0926c1c8990602ba4f98cec45d6a0a839aa..a8102248bf5dc1b5c7659c42239b8d418e842aac 100644 +index ccb1ed3f9c3a15489a715e684c0f15d2e67b556f..315006bdb344bb52a077c49a96c7712a33fbb0eb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -113,6 +113,11 @@ public class Turtle extends Animal { @@ -443,7 +443,7 @@ index 0282498c7375a73b6982efb02f3cf3215f4211b0..5b3126168e9406f6cbd0607b6b7cc2de protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 6932d0eafbeca9de80728c6b0ae42340d2297ad0..af4bac165cbc39fb6959983a1116a6fb65af0ecb 100644 +index 5b0b7c6bcd01d86552f1967489c5538780b69525..92fccfde550f4a01f860e3bcfcf953d3e6ae02e3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -42,6 +42,11 @@ public class Donkey extends AbstractChestedHorse { @@ -459,7 +459,7 @@ index 6932d0eafbeca9de80728c6b0ae42340d2297ad0..af4bac165cbc39fb6959983a1116a6fb 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 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02b7124560 100644 +index 9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4..13c2fe236661c42b5b45e2870d0cb59a890196cd 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 @@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -473,7 +473,7 @@ index 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 e11fc274f893d501235422839301a5128268199d..fb2b0ebd9314ab7fc911e842767bd60b1db92b96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -539,7 +539,7 @@ index 0a6cf9f0f16882c8042a333852699129402f75f2..a3c80184abcc2d884b692b90d267ab33 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba4a797d48 100644 +index 625fc14d6ea6049968c99931c412b36cbec92be1..78c6077f3909e29a7f51f22d4f6bdecd7144f598 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -58,6 +58,11 @@ public class ZombieHorse extends AbstractHorse { @@ -552,7 +552,7 @@ index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java index 39cf974313c7c0bdcd6599c6c8bec450efe0277a..0ce3acdc0bc72bba3b59d480e7e4135b3d794fca 100644 @@ -587,7 +587,7 @@ index 3cc47b0e05621c913a3e8d04c653bafab4a86744..db5a8b93b9cefca4566d3abc2b4c55d4 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 04226492a5655e4a3a9716590e2af7fc79560ad9..eae0511698f383e11a0083c2b845479755f114f7 100644 +index 7b55851008f711a5968fcdf94c0ad18bcd6cf9ee..e8427b486efdea67079a40e2e001c0a3401711b2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -33,7 +33,7 @@ public class Blaze extends Monster { @@ -599,7 +599,7 @@ index 04226492a5655e4a3a9716590e2af7fc79560ad9..eae0511698f383e11a0083c2b8454797 this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); -@@ -143,7 +143,7 @@ public class Blaze extends Monster { +@@ -153,7 +153,7 @@ public class Blaze extends Monster { @Override public boolean isSensitiveToWater() { @@ -743,7 +743,7 @@ index edd3b7a855165eb090edb9ad95d36cdb649d231e..fa74eb7ee34f3f9b0026778bc0d37e97 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index d014731fe352246299253bf005e23673abe091bc..ecaccb4697bf2acaa6dc9034486fcf97c184aa71 100644 +index 9b0c7681b30338141ba888ca5a66076cf856d946..c54c364e5c680982a8c4c0285a7dd5289d2546fa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -75,6 +75,11 @@ public class Giant extends Monster { @@ -807,7 +807,7 @@ index c00530db0eff302c14dd9c52d1d988cbdd93e5a1..43d4cea02ae94a8842cd4c1370d1b80e protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e7482221f1f 100644 +index 8cdce384f6d191231012788f27753f0f03753460..f3925c70fc9f1fd0764058b1f2b1f050394c20ce 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -67,6 +67,11 @@ public class MagmaCube extends Slime { @@ -820,7 +820,7 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java index 2bd1fce22cf01a441f75f918e036598e8fb3ee04..637b229817f9f2c3ad224f300b56a6bee4c8a341 100644 @@ -951,7 +951,7 @@ index 3f67ab84485737291aec531441d88b74f7f7522c..d3f1d7b2a5721933b0a8d697f1f6456d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index 77d4d37cffe959031296614751961ca7c7400c31..b4d8a37343f801731bc7041f3391c1a70c2c9d01 100644 +index e1327ea96fe394b1c27dbe88c49596256e4e61d3..509c7d79340673e213910ea74a5237332792a3b4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -43,6 +43,11 @@ public class Stray extends AbstractSkeleton { @@ -1005,10 +1005,10 @@ index 0dae7c87a9f61a7d8e493537e0aada78370bb334..fae7e1e780d0429341adf21afd57ab23 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 653959246bc3ede46419fd2afbd238bc33a4047e..97087016883c8b5517d06755de19c672cc3f03bd 100644 +index f1acdeb3a851c0d622c5ba8ab760a70a6f97f90e..1042f0804ba1b89680d625354a2de184b91da437 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -80,6 +80,11 @@ public class Vindicator extends AbstractIllager { +@@ -78,6 +78,11 @@ public class Vindicator extends AbstractIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.vindicatorMaxHealth); } @@ -1053,10 +1053,10 @@ index afad65b86e762187d0779cfee2b0b1089066d53f..986183cab6c7d48a4716440dcc764bdd protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 1d862dd019b2d024f61cfc8956430d18d94b1ebf..8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a 100644 +index 62d0c4dcb2992b665e473726a09d3fa457420395..763b28965418f2146a64c1ecde41ac536502936a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -91,6 +91,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -104,6 +104,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zoglinMaxHealth); } @@ -1117,10 +1117,10 @@ index e73fb1027acd592c7e028e1797042fe38c6c04a3..e6b653c75a4c3306e06bfcadb4c4b53b public boolean jockeyOnlyBaby() { return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index fae14f6ab139e7d7a0e8625488c472f0d0c1a1e2..7a167887c40eccea4c216eb906a4a69006f72114 100644 +index 89b108a248509a72ddd81fdaf70053931f487368..5a42325d4acd32d1e8bd2f8dff1b43f3ef160535 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -119,6 +119,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinBreedingTicks; } @@ -1149,10 +1149,10 @@ index 03b58860ecb72976ecce99f368d16942557236b9..20ecfcbe948d02bb61b8f673f5330d2f public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e3622e3b8 100644 +index dc70d4819fbc2aa5b6a026f2aff2f52bc836901c..532b14a6330a72e06b47ababee012762b8f76884 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -63,6 +63,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -85,6 +85,11 @@ public class PiglinBrute extends AbstractPiglin { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinBruteMaxHealth); } @@ -1162,7 +1162,7 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 430e660f74ee523d0bb98e21784f32158495de7a..870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5 100644 diff --git a/patches/server/0129-Config-to-always-tame-in-Creative.patch b/patches/server/0128-Config-to-always-tame-in-Creative.patch similarity index 93% rename from patches/server/0129-Config-to-always-tame-in-Creative.patch rename to patches/server/0128-Config-to-always-tame-in-Creative.patch index 922b23c8c..ec2bd79b1 100644 --- a/patches/server/0129-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0128-Config-to-always-tame-in-Creative.patch @@ -20,7 +20,7 @@ index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..a3074ec9b430c9d0a0ef33fe353db643 return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6753eed21 100644 +index a4b3d724f30ccf0eddfb41d6997d0aa9b1847b7a..d9b19f74b377721ed78cd0ea24d25e412cef1398 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -471,7 +471,7 @@ public class Cat extends TamableAnimal implements VariantHolder { @@ -33,7 +33,7 @@ index 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6 this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 1fd962ef8bd53cd29c58509952e9d47a9d7e2020..a23d9adec5ef24f11129dff2d0da3544037898fb 100644 +index a6189e785af61d1cbed2022d68312d9fa69f68a8..242f30ed7855cd7b66c20df4aa424155dcd0e3a6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -336,7 +336,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 9c99b2e365aacb8309f29acb9025faccd2c676b3..5c9d49b40a940df724101bef339a9ac5a31fd025 100644 +index 7056c8ca7a87748f14142c6af274aae492f29f1c..d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -99,6 +99,11 @@ public class CombatTracker { +@@ -97,6 +97,11 @@ public class CombatTracker { Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable(string + ".link")).withStyle(INTENTIONAL_GAME_DESIGN_STYLE); return Component.translatable(string + ".message", this.mob.getDisplayName(), component); } else { diff --git a/patches/server/0133-One-Punch-Man.patch b/patches/server/0132-One-Punch-Man.patch similarity index 96% rename from patches/server/0133-One-Punch-Man.patch rename to patches/server/0132-One-Punch-Man.patch index 6f387ee32..cf260c8e5 100644 --- a/patches/server/0133-One-Punch-Man.patch +++ b/patches/server/0132-One-Punch-Man.patch @@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0461debc992ad7812a28ea73f3e18d5c0c22f700..f1a8918afe7e13fa0ba61566d3ad1b364a6e71dc 100644 +index 787a2d1b8c887e17f9f9565c292c585e996ca1d2..e4592de07e66e2eb89b5555d747253203c84c608 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2356,6 +2356,20 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 92% rename from patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch index 316190c6c..424d5ed7e 100644 --- a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 487e4ab76e255e10369f7968d73d41956e99ae66..8f3d2257a5be732883e18c821844d1ebb5a72f7d 100644 +index b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0..6df13e5920a9191751ada925c272e2dba30396cb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1428,7 +1428,7 @@ public class ServerPlayer extends Player { @@ -18,7 +18,7 @@ index 487e4ab76e255e10369f7968d73d41956e99ae66..8f3d2257a5be732883e18c821844d1eb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4c1e27efbc121f120f68a554cd5bf37443923e1..f2dc663616d7c78cf448ab3e3e8758e1e6716d2b 100644 +index c129a628a409d02e29ca565eaaa0a664ffb9cfb9..08429712b69283fe2f88ebe09e79cbe604d3d7d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -353,6 +353,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Add-back-player-spawned-endermite-API.patch b/patches/server/0135-Add-back-player-spawned-endermite-API.patch similarity index 97% rename from patches/server/0136-Add-back-player-spawned-endermite-API.patch rename to patches/server/0135-Add-back-player-spawned-endermite-API.patch index 9f58851c8..7ed289a00 100644 --- a/patches/server/0136-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0135-Add-back-player-spawned-endermite-API.patch @@ -47,7 +47,7 @@ index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a3 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index b004f072d2a67ad9fb39dd6fbd3a30c94016202f..326d1db39e3d3cd46cb5a584e2a7b82dd46ff8fa 100644 +index b61d659dc48f795c7f2d62044c245e342cd322e5..d9761d8fe746e925a7a32dfc15eb8045c6150fe5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -75,6 +75,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { diff --git a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch index c3a9201ec..0b382ffab 100644 --- a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 013fd016d384f1bf94b875bc71139e0ea4e12d21..cf9eb1ac36a5c9d3c73b981e1649bb23c7bfaf39 100644 +index 065e7c0d1cd1d3bbf72b03dd73dd9e567aec642b..df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,7 +18,7 @@ index 013fd016d384f1bf94b875bc71139e0ea4e12d21..cf9eb1ac36a5c9d3c73b981e1649bb23 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f2dc663616d7c78cf448ab3e3e8758e1e6716d2b..f64597083c7505d27b57a0fb31d52ee347151e8a 100644 +index 08429712b69283fe2f88ebe09e79cbe604d3d7d9..9fd2e59124b9e0165d9dc3941af0470de2ae544c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -997,6 +997,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 93% rename from patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index ab5da3984..27e8d0d51 100644 --- a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 3fbe607e763910f7520604d3b8b8207086ba7f90..627cbec30c15fa4d11689cb85add6ad61d58b47a 100644 +index df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728..7621237df388ee10ef962b0c4e795c9de88762d0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,7 +20,7 @@ index 3fbe607e763910f7520604d3b8b8207086ba7f90..627cbec30c15fa4d11689cb85add6ad6 } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d1dd1c3572365e2054b0848548fe736d4f21d55..414838cf7fe3796e8d829609ac126e5b9c4afd50 100644 +index 9fd2e59124b9e0165d9dc3941af0470de2ae544c..968de6c1a1c2fbed623778613ce6d45b54b98f8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -999,6 +999,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Tick-fluids-config.patch b/patches/server/0138-Tick-fluids-config.patch similarity index 97% rename from patches/server/0139-Tick-fluids-config.patch rename to patches/server/0138-Tick-fluids-config.patch index f1ca89396..c07809762 100644 --- a/patches/server/0139-Tick-fluids-config.patch +++ b/patches/server/0138-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index 9b3dcf1a4d4cece92a629506d341f6bfe79d13d0..0ed39daf88a98f7fa887fb45d4f7c034 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 414838cf7fe3796e8d829609ac126e5b9c4afd50..0b60f77cfbe2247586d51999ac94f4f5cb011847 100644 +index 968de6c1a1c2fbed623778613ce6d45b54b98f8e..d4703bb2846d74025cfff1aa63e8cc01c6bceb2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -129,6 +129,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Config-to-disable-Llama-caravans.patch b/patches/server/0139-Config-to-disable-Llama-caravans.patch similarity index 90% rename from patches/server/0140-Config-to-disable-Llama-caravans.patch rename to patches/server/0139-Config-to-disable-Llama-caravans.patch index 9ef0233af..a9f999fac 100644 --- a/patches/server/0140-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0139-Config-to-disable-Llama-caravans.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to disable Llama caravans Disables the mechanic where llamas follow leashed llamas. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82ec88a7235 100644 +index 50622e300950b017b41a6f85643c8827a0113225..1a8ae9a692ea0727ad79c6061a11054ee496fa20 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -16,10 +16,10 @@ index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82e - if (!this.llama.shouldJoinCaravan) return false; // Purpur + if (!this.llama.level().purpurConfig.llamaJoinCaravans || !this.llama.shouldJoinCaravan) return false; // Purpur if (!this.llama.isLeashed() && !this.llama.inCaravan()) { - List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { + List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 58175824dc315134b03b9dabfcae04e192af0b86..8d57bf9bbd1f61e6f1509c8b5cf01756ef145571 100644 +index fb2b0ebd9314ab7fc911e842767bd60b1db92b96..30493e675d6308d65a4d4fa3fea601b6d7e4fa76 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 @@ -519,7 +519,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment2 = enchantment.value(); @@ -17,14 +17,14 @@ index 37d9c354af887c474094b1a364782007a5f2035d..ec86231077f6a1e03068507555539c5b throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment2.getMaxLevel()); } else { int i = 0; -@@ -58,7 +58,7 @@ public class EnchantCommand { - LivingEntity livingEntity = (LivingEntity)entity; +@@ -81,7 +81,7 @@ public class EnchantCommand { ItemStack itemStack = livingEntity.getMainHandItem(); if (!itemStack.isEmpty()) { -- if (enchantment2.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) { -+ if ((enchantment2.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur + if (enchantment2.canEnchant(itemStack) +- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) { ++ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur itemStack.enchant(enchantment2, level); - ++i; + i++; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java index fc71e25bb657581db5b79623c4ea6adc5f9e2b12..3f13c6fb479db34c0c4d1e0f9241919f2e62cd53 100644 diff --git a/patches/server/0153-Configurable-sponge-absorption.patch b/patches/server/0152-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0153-Configurable-sponge-absorption.patch rename to patches/server/0152-Configurable-sponge-absorption.patch diff --git a/patches/server/0154-Projectile-offset-config.patch b/patches/server/0153-Projectile-offset-config.patch similarity index 97% rename from patches/server/0154-Projectile-offset-config.patch rename to patches/server/0153-Projectile-offset-config.patch index 2dd4919d3..ae3f02b03 100644 --- a/patches/server/0154-Projectile-offset-config.patch +++ b/patches/server/0153-Projectile-offset-config.patch @@ -18,7 +18,7 @@ index 33df0ca406dc8321b76b393f317bbd1c8ebe6366..220513d3fd5645322886522ea4f6b8c5 entityarrow.setCritArrow(true); } diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index fdf9972bb9374789b063d191d9d419cca5975b23..b112845e94d354bbadff67673ea0b4939672bd3e 100644 +index f9a9bc27670bb7ec82a609f202edbde6b5a4fd46..05d3a7c077df1b92819655790230cd22028f6893 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -64,7 +64,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { @@ -83,7 +83,7 @@ index f47f793c62a919fb65c081ddb82d597a978d3b20..3bbb44ae3da68afbd6012df68dee277a com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(thrownPotion)) { diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 75cf58919ac787b389286b41a9f0b5a945e71649..3f922008f928ed077e9ddfd4384ed7bbf7cb293d 100644 +index c2218c2dd46641ebb4c9278fa0d6015122b1905c..7030d94ba14ecacc1e5cd6d6432b1bcb59c8b646 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -77,7 +77,7 @@ public class TridentItem extends Item implements Vanishable { @@ -96,7 +96,7 @@ index 75cf58919ac787b389286b41a9f0b5a945e71649..3f922008f928ed077e9ddfd4384ed7bb entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1de0fbb72819f6de3897d9c165e2f07c3b9a5280..88dd3e74675886789abc29b65bd2931a50c0a9c1 100644 +index f51f9b485bb5b84d92afb84ebef3a41af9e22b09..090a7dbc0b9188df189286c2034a874b0782be65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -422,6 +422,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0155-Config-for-powered-rail-activation-distance.patch b/patches/server/0154-Config-for-powered-rail-activation-distance.patch similarity index 94% rename from patches/server/0155-Config-for-powered-rail-activation-distance.patch rename to patches/server/0154-Config-for-powered-rail-activation-distance.patch index f1bd34c95..3af01e202 100644 --- a/patches/server/0155-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0154-Config-for-powered-rail-activation-distance.patch @@ -18,7 +18,7 @@ index b84c48902ef24fdae17578a304e6c93dc20c5dce..e03125281767845564c48c98c3e6b6bb } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bdac4ecd881b9469a319275f9c0f074ccffe48c2..70f29c7adf3118c63bec2d12c01a6d59c6fffa82 100644 +index 090a7dbc0b9188df189286c2034a874b0782be65..4fc7d6e06343aa9afa20bee24cb80653000dd54c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -615,6 +615,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0156-Piglin-portal-spawn-modifier.patch b/patches/server/0155-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/server/0156-Piglin-portal-spawn-modifier.patch rename to patches/server/0155-Piglin-portal-spawn-modifier.patch index 813648a27..2d7fe4792 100644 --- a/patches/server/0156-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0155-Piglin-portal-spawn-modifier.patch @@ -18,7 +18,7 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index c51ac562d642061ce60db66ae9a86eecd9d85ecb..673dd5cc5c83eb606aa5684b8ae14b82e0346a35 100644 +index 613df7b174ba4cb87314a631ebc7dfeda8ede58f..f7b724696151b73343feac1ce406fca9377f2508 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -60,7 +60,7 @@ public class NetherPortalBlock extends Block { @@ -31,7 +31,7 @@ index c51ac562d642061ce60db66ae9a86eecd9d85ecb..673dd5cc5c83eb606aa5684b8ae14b82 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70f29c7adf3118c63bec2d12c01a6d59c6fffa82..18143874afd0fb7b6fdc7f1471368bced0dc39d5 100644 +index 4fc7d6e06343aa9afa20bee24cb80653000dd54c..50373f138db63443dee0ca28781ae0a0cc65fa24 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1647,6 +1647,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Config-to-change-max-number-of-bees.patch b/patches/server/0156-Config-to-change-max-number-of-bees.patch similarity index 96% rename from patches/server/0157-Config-to-change-max-number-of-bees.patch rename to patches/server/0156-Config-to-change-max-number-of-bees.patch index cd579d08f..3cfaa7a2f 100644 --- a/patches/server/0157-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0156-Config-to-change-max-number-of-bees.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 55b0e2bf98a285cdcd30e40d94192b7a1802efd8..b37b7f58d59616cd409bbab701659c8e8879ccc7 100644 +index d445ed0895293dd45c36226051f5809be8587ebe..2b12596ee7ea1a40120c60c6f43e9e42cc6dfae9 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -47,7 +47,7 @@ public class BeehiveBlockEntity extends BlockEntity { diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0157-Config-for-wither-explosion-radius.patch similarity index 96% rename from patches/server/0158-Config-for-wither-explosion-radius.patch rename to patches/server/0157-Config-for-wither-explosion-radius.patch index afe90ba0c..498db5917 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0157-Config-for-wither-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for wither explosion radius 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 8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94..beaa7e817fb923b9cb1a9df63ddce3fe9e087061 100644 +index c37b3486dcc75c5c78d605afeff2e3f723940636..b4a38621b58e16b2bf48b3d45d85130e8883b477 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -99,7 +99,7 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/patches/server/0159-Gamemode-extra-permissions.patch b/patches/server/0158-Gamemode-extra-permissions.patch similarity index 95% rename from patches/server/0159-Gamemode-extra-permissions.patch rename to patches/server/0158-Gamemode-extra-permissions.patch index b89c41997..d5cad804d 100644 --- a/patches/server/0159-Gamemode-extra-permissions.patch +++ b/patches/server/0158-Gamemode-extra-permissions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 2944b64e3dd5d413ccc12330118eb5248888e21f..288e3cf7d522232aeb40090537a55a2cf06d92e2 100644 +index b0d96ae08959cdca9177eb875faa99f4a8e92632..546ff84046856ecfe0f2a07d3ba3f886f8df4dca 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -230,6 +230,19 @@ public class CommandSourceStack implements ExecutionCommandSource context, Collection targets, GameType gameMode) { @@ -50,7 +50,7 @@ index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec + // Purpur end int i = 0; - for(ServerPlayer serverPlayer : targets) { + for (ServerPlayer serverPlayer : targets) { diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java index dd95b3bfe59f2bb635afe92317288efcd2986326..11f43f44f359ce57d3a8f3322e58b9f5dfdaf00a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java diff --git a/patches/server/0160-Configurable-piston-push-limit.patch b/patches/server/0159-Configurable-piston-push-limit.patch similarity index 76% rename from patches/server/0160-Configurable-piston-push-limit.patch rename to patches/server/0159-Configurable-piston-push-limit.patch index 5460f27ce..baabbe202 100644 --- a/patches/server/0160-Configurable-piston-push-limit.patch +++ b/patches/server/0159-Configurable-piston-push-limit.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable piston push limit diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java -index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87dbb4cef178 100644 +index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032b2dd69cd 100644 --- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -86,7 +86,7 @@ public class PistonStructureResolver { +@@ -81,7 +81,7 @@ public class PistonStructureResolver { return true; } else { int i = 1; @@ -16,17 +16,17 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db + if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur return false; } else { - while(isSticky(blockState)) { -@@ -98,7 +98,7 @@ public class PistonStructureResolver { + while (isSticky(blockState)) { +@@ -95,7 +95,7 @@ public class PistonStructureResolver { + break; } - ++i; -- if (i + this.toPush.size() > 12) { -+ if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur +- if (++i + this.toPush.size() > 12) { ++ if (++i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur return false; } } -@@ -142,7 +142,7 @@ public class PistonStructureResolver { +@@ -140,7 +140,7 @@ public class PistonStructureResolver { return true; } @@ -36,7 +36,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa3d2dbea60d7d40e30d7c8205c97f3a44b6f948..eeba42faac3cf16be92054bd3f04eb761e257656 100644 +index 8b7c68d7d7ae77ba216a004724d088956a1dfce4..500b14f0b27b0c1ba29bdb499f30726c48e6fa20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0161-Configurable-broadcast-settings.patch b/patches/server/0160-Configurable-broadcast-settings.patch similarity index 94% rename from patches/server/0161-Configurable-broadcast-settings.patch rename to patches/server/0160-Configurable-broadcast-settings.patch index 7f20f9dda..d331d7e27 100644 --- a/patches/server/0161-Configurable-broadcast-settings.patch +++ b/patches/server/0160-Configurable-broadcast-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14cfb8c7c6f 100644 +index e3e2e69e4ed2fb97c17481c88965f7f2997304ac..ba8a8575af92541cef2e116743d51cd68d1e794a 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -250,6 +250,7 @@ public class PlayerAdvancements { @@ -17,7 +17,7 @@ index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14c // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8f3d2257a5be732883e18c821844d1ebb5a72f7d..386a74f8a6f61fb745a1e36d8955d26bfc2ad78a 100644 +index 6df13e5920a9191751ada925c272e2dba30396cb..13f39b219615b8091284f4ac56d76a505956a556 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1012,6 +1012,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0162-Configurable-mob-blindness.patch b/patches/server/0161-Configurable-mob-blindness.patch similarity index 97% rename from patches/server/0162-Configurable-mob-blindness.patch rename to patches/server/0161-Configurable-mob-blindness.patch index bf91f0b75..ce59b9d7d 100644 --- a/patches/server/0162-Configurable-mob-blindness.patch +++ b/patches/server/0161-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fa289f634d4a674d6cb5d9633ae6d1997a02fd59..926962fc5631faa4672c8dd2fdb72b9ef6947292 100644 +index 83be9f0a75371046f7c4e1e8b064a7c7534c74f6..ef830481a816c743aa3b0feee5c0f2cf51fea7fa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1045,6 +1045,17 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0163-Hide-hidden-players-from-entity-selector.patch b/patches/server/0162-Hide-hidden-players-from-entity-selector.patch similarity index 98% rename from patches/server/0163-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0162-Hide-hidden-players-from-entity-selector.patch index 60e62c866..3d97accb1 100644 --- a/patches/server/0163-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0162-Hide-hidden-players-from-entity-selector.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Hide hidden players from entity selector diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java -index 73c15a0c56a103ba4e62f0a51af8d42566b07245..d630c5a1aed706265d1e077da540c0bf723b838d 100644 +index 676a1499747b071515479130875157263d3a8352..fc1bba350030c076405711716e9830f8ae7f3953 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -200,10 +200,10 @@ public class EntitySelector { diff --git a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 100% rename from patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch diff --git a/patches/server/0165-Iron-golem-calm-anger-options.patch b/patches/server/0164-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/server/0165-Iron-golem-calm-anger-options.patch rename to patches/server/0164-Iron-golem-calm-anger-options.patch index 371e6b3e2..61b47fba9 100644 --- a/patches/server/0165-Iron-golem-calm-anger-options.patch +++ b/patches/server/0164-Iron-golem-calm-anger-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Iron golem calm anger options diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a935169b186 100644 +index 669132fb78d3fd72f73d4c20370f0213879baeaa..75a44fdb1228233ac2abe1d33bde8d978a8a994b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -25,7 +25,7 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59cb375fce3f2917d86617854a18dfa55766daf4..9d03449e5d939e8dfa0ce57d89688da8bc36ee4d 100644 +index 8694ba3aea41f83d16d0a761b922b6b248e5942f..d0127081efd973efd40a9ec5fc0d94092021c688 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1386,6 +1386,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0166-Breedable-parrots.patch b/patches/server/0165-Breedable-parrots.patch similarity index 95% rename from patches/server/0166-Breedable-parrots.patch rename to patches/server/0165-Breedable-parrots.patch index 831eba192..fb5057fc4 100644 --- a/patches/server/0166-Breedable-parrots.patch +++ b/patches/server/0165-Breedable-parrots.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index a23d9adec5ef24f11129dff2d0da3544037898fb..a3304ce24c08e4250df81a2d09098b8cbbc604bd 100644 +index 242f30ed7855cd7b66c20df4aa424155dcd0e3a6..c69a096b6bd7700191f88a3c03c8d018ca9d4201 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -228,6 +228,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f7e482ac8dec8a8c6ae9965acbc41a2af00aebe1..e9bdb223886f1c2e91324c01ea0203b7c319ec48 100644 +index 53c20b7e1e8d27b4a13e18ae8fa437e83b208c78..2cac12d2b788b0962b719a83b43dc23177b76ac6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0174-Config-MobEffect-by-world.patch b/patches/server/0173-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0174-Config-MobEffect-by-world.patch rename to patches/server/0173-Config-MobEffect-by-world.patch index e03dc8ed8..5f4391dd6 100644 --- a/patches/server/0174-Config-MobEffect-by-world.patch +++ b/patches/server/0173-Config-MobEffect-by-world.patch @@ -59,7 +59,7 @@ index b994ae09621934df2cdd6a83a7d8ecb44649fb16..c2b812c992db1ac9cd391da902c8d819 ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); diff --git a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java -index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae3a0b9ddf 100644 +index cc45fd864185a7842c465e26304b36f7c744bb93..434390a6b88eac7bd41ad6b05d223c78571885fb 100644 --- a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java @@ -10,7 +10,7 @@ class WitherMobEffect extends MobEffect { diff --git a/patches/server/0175-Beacon-Activation-Range-Configurable.patch b/patches/server/0174-Beacon-Activation-Range-Configurable.patch similarity index 92% rename from patches/server/0175-Beacon-Activation-Range-Configurable.patch rename to patches/server/0174-Beacon-Activation-Range-Configurable.patch index 1f4bd453d..62c4d09e4 100644 --- a/patches/server/0175-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0174-Beacon-Activation-Range-Configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Beacon Activation Range Configurable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229448ca3bf 100644 +index 4b81b0180dfc96fc6a88646838a886ca5b5d301b..4a0bca08585fae3620da108f6a4cc07e500e5e03 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -88,6 +88,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -26,7 +26,7 @@ index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d9ed4a7d89e259beb6bf05dc624a15588adc099..fca69da24c29c9215529e5a203d7ab282ec4b7f7 100644 +index 515c15d6d8f87a1aa677db0cdf7605bbd2421fe0..991e8491c5bc254eb2ba0cbdcd06cb410d286fbb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -504,6 +504,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Make-lightning-rod-range-configurable.patch b/patches/server/0175-Make-lightning-rod-range-configurable.patch similarity index 96% rename from patches/server/0176-Make-lightning-rod-range-configurable.patch rename to patches/server/0175-Make-lightning-rod-range-configurable.patch index 5376e85ef..37655644b 100644 --- a/patches/server/0176-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0175-Make-lightning-rod-range-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b9ed172cee34ef2e140c362b9ac7030c8231b97a..aef2bd930125b3fbd9f564db86a575ddfbd7d894 100644 +index 74f9b208b822ef3c53113004b40366e44fdb8201..d3340055cf5c79b1f7430dc64516118bbb707086 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1192,7 +1192,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 100% rename from patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch diff --git a/patches/server/0178-Allow-player-join-full-server-by-permission.patch b/patches/server/0177-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0178-Allow-player-join-full-server-by-permission.patch rename to patches/server/0177-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0178-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0179-Add-portal-permission-bypass.patch rename to patches/server/0178-Add-portal-permission-bypass.patch diff --git a/patches/server/0180-Shulker-spawn-from-bullet-options.patch b/patches/server/0179-Shulker-spawn-from-bullet-options.patch similarity index 97% rename from patches/server/0180-Shulker-spawn-from-bullet-options.patch rename to patches/server/0179-Shulker-spawn-from-bullet-options.patch index 0bb22c50a..9b83cc979 100644 --- a/patches/server/0180-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0179-Shulker-spawn-from-bullet-options.patch @@ -53,10 +53,10 @@ index 31284660a9718503a1ce474c56d993de3126a1ea..df944e733ca589d407af3709e0ff025f @Nullable diff --git a/src/main/java/net/minecraft/world/item/DyeColor.java b/src/main/java/net/minecraft/world/item/DyeColor.java -index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033ef73bb83 100644 +index c7e36bd598090b7d9f818ac1f6b39e13e64e8bf7..e2a960e2dc5414c731feeb5444792d6b26487c9f 100644 --- a/src/main/java/net/minecraft/world/item/DyeColor.java +++ b/src/main/java/net/minecraft/world/item/DyeColor.java -@@ -103,4 +103,10 @@ public enum DyeColor implements StringRepresentable { +@@ -101,4 +101,10 @@ public enum DyeColor implements StringRepresentable { public String getSerializedName() { return this.name; } diff --git a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0180-Eating-glow-berries-adds-glow-effect.patch similarity index 79% rename from patches/server/0181-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0180-Eating-glow-berries-adds-glow-effect.patch index 01b2cccb3..ab0b85ffa 100644 --- a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0180-Eating-glow-berries-adds-glow-effect.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0..e83ea53da012f3dcaa1f53bf6082a17a69e6ee13 100644 +index c157e7f6fa28f713fcfb699daa329abed0b32cd5..bb2103a488964f25335393fa91e8ae5749eca333 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1224,7 +1224,7 @@ public class Items { - public static final Item LANTERN = registerBlock(Blocks.LANTERN); - public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN); - public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).food(Foods.SWEET_BERRIES))); -- public static final Item GLOW_BERRIES = registerItem("glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES))); -+ public static final Item GLOW_BERRIES = registerItem("glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES))); // Purpur +@@ -1535,7 +1535,7 @@ public class Items { + "sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, new Item.Properties().food(Foods.SWEET_BERRIES)) + ); + public static final Item GLOW_BERRIES = registerItem( +- "glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) ++ "glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) // Purpur + ); public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE); public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); - public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index cc612f8328abfa27d784181c5aebbcd9e0b10c05..b21d288f62f473cd9d1057d3d2a452f16b0291d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0182-Option-to-make-drowned-break-doors.patch b/patches/server/0181-Option-to-make-drowned-break-doors.patch similarity index 100% rename from patches/server/0182-Option-to-make-drowned-break-doors.patch rename to patches/server/0181-Option-to-make-drowned-break-doors.patch diff --git a/patches/server/0183-Configurable-hunger-starvation-damage.patch b/patches/server/0182-Configurable-hunger-starvation-damage.patch similarity index 100% rename from patches/server/0183-Configurable-hunger-starvation-damage.patch rename to patches/server/0182-Configurable-hunger-starvation-damage.patch diff --git a/patches/server/0184-Enhance-SysoutCatcher.patch b/patches/server/0183-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0184-Enhance-SysoutCatcher.patch rename to patches/server/0183-Enhance-SysoutCatcher.patch diff --git a/patches/server/0185-Add-uptime-command.patch b/patches/server/0184-Add-uptime-command.patch similarity index 98% rename from patches/server/0185-Add-uptime-command.patch rename to patches/server/0184-Add-uptime-command.patch index 73f3d37d3..7b2b009f4 100644 --- a/patches/server/0185-Add-uptime-command.patch +++ b/patches/server/0184-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 9c335df92b0a6c7705c9def89ba5c320d2c8ed03..c2b8a653b01aa3e0856afa3e96555f5e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 69af88f3ed690cbb751d367171c4cf6aa0ee2fca..1381e16fcac730eaecfc621a0c602bbf15d744f3 100644 +index 9d6424c79b10e76685de55a9d0d05653ac3e3c5f..0e9cf9f9ad81363cdeacd3da3a776aaad39045f9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - p.broadcastBreakEvent(context.getHand()); - }); + itemStack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(context.getHand())); } - return InteractionResult.sidedSuccess(level.isClientSide); @@ -69,10 +67,12 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..2918b1aca8fae6a319881a631dc727b6 world.levelEvent(player, 3005, pos, 0); return optional2; } else { -- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(state.getBlock())).map((block) -> { -- return block.withPropertiesOf(state); -- }); -+ Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); // Purpur +- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(state.getBlock())) +- .map(block -> block.withPropertiesOf(state)); ++ // Purpur start ++ Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); ++ // .map(block -> block.withPropertiesOf(state)); ++ // Purpur end if (optional3.isPresent()) { - world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); + world.playSound(HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(state.getBlock()) ? player : null, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound @@ -80,10 +80,10 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..2918b1aca8fae6a319881a631dc727b6 return optional3; } else { diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java -index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a925bf00bd4 100644 +index 704cbc775c9f7663c57c431e8a7651d7684ccc34..26a73f3982db764c4793326b41a541dffc416559 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java -@@ -34,15 +34,23 @@ public class HoeItem extends DiggerItem { +@@ -45,15 +45,23 @@ public class HoeItem extends DiggerItem { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos blockPos = context.getClickedPos(); @@ -114,7 +114,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a92 if (!level.isClientSide) { consumer.accept(context); if (player != null) { -@@ -52,7 +60,7 @@ public class HoeItem extends DiggerItem { +@@ -61,7 +69,7 @@ public class HoeItem extends DiggerItem { } } @@ -124,10 +124,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a92 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java -index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e5e838f30 100644 +index 9aba0211f37501bbd19b583d22fa83eae32390d9..f44e28bf44b9d39267d21eaf6a025b5f28f3cd72 100644 --- a/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java -@@ -37,9 +37,12 @@ public class ShovelItem extends DiggerItem { +@@ -46,9 +46,12 @@ public class ShovelItem extends DiggerItem { BlockState blockState2 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState3 = null; Runnable afterAction = null; // Paper @@ -143,7 +143,7 @@ index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e } else if (blockState.getBlock() instanceof CampfireBlock && blockState.getValue(CampfireBlock.LIT)) { afterAction = () -> { // Paper if (!level.isClientSide()) { -@@ -68,7 +71,7 @@ public class ShovelItem extends DiggerItem { +@@ -75,7 +78,7 @@ public class ShovelItem extends DiggerItem { } } diff --git a/patches/server/0187-Store-placer-on-Block-when-placed.patch b/patches/server/0186-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0187-Store-placer-on-Block-when-placed.patch rename to patches/server/0186-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0188-Summoner-API.patch b/patches/server/0187-Summoner-API.patch similarity index 100% rename from patches/server/0188-Summoner-API.patch rename to patches/server/0187-Summoner-API.patch diff --git a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch b/patches/server/0188-Customizable-sleeping-actionbar-messages.patch similarity index 96% rename from patches/server/0189-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0188-Customizable-sleeping-actionbar-messages.patch index 10b73d6ff..96ed98310 100644 --- a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0188-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index aef2bd930125b3fbd9f564db86a575ddfbd7d894..9394aa9e300721b335238f143500528e93ce8385 100644 +index d3340055cf5c79b1f7430dc64516118bbb707086..4a08c804c3e31a80ee9b663a44fd60142709c9c6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1241,11 +1241,27 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -38,7 +38,7 @@ index aef2bd930125b3fbd9f564db86a575ddfbd7d894..9394aa9e300721b335238f143500528e } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c679111a4420ee55b191ad768444123d41d250fb..bc153d1f14483ecaf648918f269e81a11151e392 100644 +index 13f39b219615b8091284f4ac56d76a505956a556..65e549ebad6f89640000f27356f1de434c5925c8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1469,7 +1469,19 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 100% rename from patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch diff --git a/patches/server/0191-Big-dripleaf-tilt-delay.patch b/patches/server/0190-Big-dripleaf-tilt-delay.patch similarity index 100% rename from patches/server/0191-Big-dripleaf-tilt-delay.patch rename to patches/server/0190-Big-dripleaf-tilt-delay.patch diff --git a/patches/server/0192-Player-ridable-in-water-option.patch b/patches/server/0191-Player-ridable-in-water-option.patch similarity index 100% rename from patches/server/0192-Player-ridable-in-water-option.patch rename to patches/server/0191-Player-ridable-in-water-option.patch diff --git a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 100% rename from patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch diff --git a/patches/server/0194-Add-compass-command.patch b/patches/server/0193-Add-compass-command.patch similarity index 99% rename from patches/server/0194-Add-compass-command.patch rename to patches/server/0193-Add-compass-command.patch index 115abcb9c..1a1e8fe53 100644 --- a/patches/server/0194-Add-compass-command.patch +++ b/patches/server/0193-Add-compass-command.patch @@ -17,7 +17,7 @@ index c2b8a653b01aa3e0856afa3e96555f5e8f0e81bd..0026235782aeb5e663faa3aaf1104063 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index bc153d1f14483ecaf648918f269e81a11151e392..8601df7eefe25b2a6f5cc3a2dbda35695b1e0202 100644 +index 65e549ebad6f89640000f27356f1de434c5925c8..0ba6ecf578e731a9705a384944aed482f829b58d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -283,6 +283,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0195-Toggle-for-kinetic-damage.patch b/patches/server/0194-Toggle-for-kinetic-damage.patch similarity index 95% rename from patches/server/0195-Toggle-for-kinetic-damage.patch rename to patches/server/0194-Toggle-for-kinetic-damage.patch index 1a57741df..b53e2fa7b 100644 --- a/patches/server/0195-Toggle-for-kinetic-damage.patch +++ b/patches/server/0194-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4af345c848040fabdde82b4f0493ba796a7fef1f..9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45 100644 +index cd87e7c52b75c6ba40343557ba12c7891da88e07..3a1b8a94642339a96d8f7391714fae1648dc5149 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2954,6 +2954,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0196-Add-Option-for-disable-observer-clocks.patch b/patches/server/0195-Add-Option-for-disable-observer-clocks.patch similarity index 100% rename from patches/server/0196-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0195-Add-Option-for-disable-observer-clocks.patch diff --git a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch similarity index 100% rename from patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch diff --git a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 100% rename from patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch diff --git a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch similarity index 100% rename from patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch diff --git a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch similarity index 100% rename from patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch diff --git a/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 100% rename from patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch diff --git a/patches/server/0202-Conduit-behavior-configuration.patch b/patches/server/0201-Conduit-behavior-configuration.patch similarity index 100% rename from patches/server/0202-Conduit-behavior-configuration.patch rename to patches/server/0201-Conduit-behavior-configuration.patch diff --git a/patches/server/0203-Cauldron-fill-chances.patch b/patches/server/0202-Cauldron-fill-chances.patch similarity index 100% rename from patches/server/0203-Cauldron-fill-chances.patch rename to patches/server/0202-Cauldron-fill-chances.patch diff --git a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 62% rename from patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch index 463befe5b..d1b5f2afd 100644 --- a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 70c7c735fdd0c1b66243915622e47eab8a57e7cc..0dc05919dfbbf73230505fcdc25d949b1602801c 100644 +index 7e62873eea85e33f81c943e70292ccb71a3dd276..b7f9793900d365f91d6e30dd22881a30e4250ac8 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -241,7 +241,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - } - - if (blockPathTypes != BlockPathTypes.WALKABLE && (!this.isAmphibious() || blockPathTypes != BlockPathTypes.WATER)) { -- if ((node == null || node.costMalus < 0.0F) && maxYStep > 0 && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL && blockPathTypes != BlockPathTypes.TRAPDOOR && blockPathTypes != BlockPathTypes.POWDER_SNOW) { -+ if ((node == null || node.costMalus < 0.0F) && maxYStep > 0 && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) && blockPathTypes != BlockPathTypes.TRAPDOOR && blockPathTypes != BlockPathTypes.POWDER_SNOW) { // Purpur +@@ -259,7 +259,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { + if ((node == null || node.costMalus < 0.0F) + && maxYStep > 0 + && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) +- && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL ++ && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) // Purpur + && blockPathTypes != BlockPathTypes.TRAPDOOR + && blockPathTypes != BlockPathTypes.POWDER_SNOW) { node = this.findAcceptedNode(x, y + 1, z, maxYStep - 1, prevFeetY, direction, nodeType); - if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { - double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0205-Shulker-change-color-with-dye.patch b/patches/server/0204-Shulker-change-color-with-dye.patch similarity index 100% rename from patches/server/0205-Shulker-change-color-with-dye.patch rename to patches/server/0204-Shulker-change-color-with-dye.patch diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0205-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0206-Extended-OfflinePlayer-API.patch rename to patches/server/0205-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch b/patches/server/0206-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0207-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0206-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 97% rename from patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index e6fb6236b..a0072961c 100644 --- a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9394aa9e300721b335238f143500528e93ce8385..f141031f668898b8cc0ac1970b9026da6be4a466 100644 +index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db108f3bad 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1401,6 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 53% rename from patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index acd8f5dcd..d4aac716f 100644 --- a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -index 3ecc92439fc85d224ff52f41c5e34079e042a5e6..2336fea8c65d64a77a1afa4b8b976fb0d7da00eb 100644 +index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1bf2f2d95 100644 --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java @@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @@ -30,20 +30,25 @@ index 3ecc92439fc85d224ff52f41c5e34079e042a5e6..2336fea8c65d64a77a1afa4b8b976fb0 } diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a8f74a009 100644 +index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7ebc6f398 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1145,8 +1145,8 @@ public class Blocks { - public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); - public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); - public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM).pushReaction(PushReaction.DESTROY))); -- public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); -- public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); -+ public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur -+ public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur - public static final Block MOSS_CARPET = register("moss_carpet", new CarpetBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS_CARPET).pushReaction(PushReaction.DESTROY))); - public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); - public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); +@@ -7380,6 +7380,7 @@ public class Blocks { + BlockBehaviour.Properties.of() + .mapColor(MapColor.PLANT) + .forceSolidOff() ++ .randomTicks() // Purpur + .instabreak() + .sound(SoundType.AZALEA) + .noOcclusion() +@@ -7392,6 +7393,7 @@ public class Blocks { + BlockBehaviour.Properties.of() + .mapColor(MapColor.PLANT) + .forceSolidOff() ++ .randomTicks() // Purpur + .instabreak() + .sound(SoundType.FLOWERING_AZALEA) + .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 6151c7d3bf9de065227c200b62dd03f7dba3f504..951a4fcdc1f47189ea7f36fc232faaf06310db59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch similarity index 98% rename from patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch index c23df70a7..b2e254f30 100644 --- a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index affe433994ec5c5cd6cecd3989a5daa90db3b203..72ac438ec1a6628c861bdab9626c77666d4ba2b6 100644 +index ccd830286153405206110334cf58323315c02b7e..1cefa3b6bdd62ae7bf30da872012fc150905f5ae 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 100% rename from patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch diff --git a/patches/server/0214-Halloween-options-and-optimizations.patch b/patches/server/0213-Halloween-options-and-optimizations.patch similarity index 100% rename from patches/server/0214-Halloween-options-and-optimizations.patch rename to patches/server/0213-Halloween-options-and-optimizations.patch diff --git a/patches/server/0215-Config-for-grindstones.patch b/patches/server/0214-Config-for-grindstones.patch similarity index 100% rename from patches/server/0215-Config-for-grindstones.patch rename to patches/server/0214-Config-for-grindstones.patch diff --git a/patches/server/0216-UPnP-Port-Forwarding.patch b/patches/server/0215-UPnP-Port-Forwarding.patch similarity index 97% rename from patches/server/0216-UPnP-Port-Forwarding.patch rename to patches/server/0215-UPnP-Port-Forwarding.patch index 3c7e89aad..31bc35e97 100644 --- a/patches/server/0216-UPnP-Port-Forwarding.patch +++ b/patches/server/0215-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1381e16fcac730eaecfc621a0c602bbf15d744f3..4a0e56f4fb6903ea5f4974052d9d55447a6254ea 100644 +index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f694a188c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index af4bac165cbc39fb6959983a1116a6fb65af0ecb..72ad12175325091397459e06743875cce6df8d94 100644 +index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83b6cb2fa5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse { @@ -453,7 +453,7 @@ index af4bac165cbc39fb6959983a1116a6fb65af0ecb..72ad12175325091397459e06743875cc 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 f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1d7e13270 100644 +index 13c2fe236661c42b5b45e2870d0cb59a890196cd..a77ffe2bd6ecce5433a72f96ba43c2a9401a1378 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 @@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -467,7 +467,7 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -533,7 +533,7 @@ index a3c80184abcc2d884b692b90d267ab33a5406349..c80324d79b74fc620568347289f4e396 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293d99c7e36 100644 +index 78c6077f3909e29a7f51f22d4f6bdecd7144f598..9493fa681327aa42751955029e5acac846d9a2a8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -63,6 +63,11 @@ public class ZombieHorse extends AbstractHorse { @@ -546,7 +546,7 @@ index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } 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 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce205f7844e 100644 @@ -565,7 +565,7 @@ index 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce2 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index eae0511698f383e11a0083c2b845479755f114f7..a8b58469fd8a1ed4ec0ce443cf05557903527bd7 100644 +index e8427b486efdea67079a40e2e001c0a3401711b2..efc25f256134f812d0a7ccd63ecdda899cba14dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -79,6 +79,11 @@ public class Blaze extends Monster { @@ -709,7 +709,7 @@ index fa74eb7ee34f3f9b0026778bc0d37e977fc41d70..640f0c378a18cf0a820ad544bb3b172b protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index ecaccb4697bf2acaa6dc9034486fcf97c184aa71..d13eed85d5399cd6991b3ad90f05a5805a3a2678 100644 +index c54c364e5c680982a8c4c0285a7dd5289d2546fa..20d6fd08cc7b5964f74b7dd99ee117ac30273426 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -80,6 +80,11 @@ public class Giant extends Monster { @@ -773,7 +773,7 @@ index 43d4cea02ae94a8842cd4c1370d1b80e45d2b13c..a8b3431c67442c5440b063426a1adc42 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91f3ffb276 100644 +index f3925c70fc9f1fd0764058b1f2b1f050394c20ce..aae0bc60befb0504ee39bdd363f81686927483d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -72,6 +72,11 @@ public class MagmaCube extends Slime { @@ -786,7 +786,7 @@ index e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java index bcb1912ea218fbb4b849ab84a7025202100b82c3..8591fb95aa3079d7722f445ce1b1743c1f02b9bc 100644 @@ -917,7 +917,7 @@ index d3f1d7b2a5721933b0a8d697f1f6456d96ff7b76..b44ffeb4cc0ef63fdd25683f60c5a20f protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index b4d8a37343f801731bc7041f3391c1a70c2c9d01..e01c91385935b71bb9aa7259b95cb963140e8c94 100644 +index 509c7d79340673e213910ea74a5237332792a3b4..18c0cf991c2e8418d7fdd4c8dbd7487a301e890d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -48,6 +48,11 @@ public class Stray extends AbstractSkeleton { @@ -965,10 +965,10 @@ index fae7e1e780d0429341adf21afd57ab230b06a0a7..834abf1160034543fe3e89fa1c8d4bb5 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 97087016883c8b5517d06755de19c672cc3f03bd..ee9d5933f74584452a1b27a392e7d36dac5b9bc9 100644 +index 1042f0804ba1b89680d625354a2de184b91da437..960b5e2c290f82501384f79d4653f47bedf926fb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -85,6 +85,11 @@ public class Vindicator extends AbstractIllager { +@@ -83,6 +83,11 @@ public class Vindicator extends AbstractIllager { return this.level().purpurConfig.vindicatorTakeDamageFromWater; } @@ -1013,10 +1013,10 @@ index 986183cab6c7d48a4716440dcc764bdd88373720..e97cb4e166c2e9ac6d93ed5b15350758 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a..15fd1af0773ba1254a429240444f48e68e29ee74 100644 +index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a0a578318 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -96,6 +96,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -109,6 +109,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { return this.level().purpurConfig.zoglinTakeDamageFromWater; } @@ -1077,10 +1077,10 @@ index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a80 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 7a167887c40eccea4c216eb906a4a69006f72114..510ee1aee1dd106b5129c375ebb59c7950b8b989 100644 +index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -124,6 +124,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinTakeDamageFromWater; } @@ -1109,10 +1109,10 @@ index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72b public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc810797ec440f 100644 +index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d34631b4c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -68,6 +68,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -90,6 +90,11 @@ public class PiglinBrute extends AbstractPiglin { return this.level().purpurConfig.piglinBruteTakeDamageFromWater; } @@ -1122,7 +1122,7 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa0783d03d5d 100644 diff --git a/patches/server/0224-Potion-NamespacedKey.patch b/patches/server/0223-Potion-NamespacedKey.patch similarity index 81% rename from patches/server/0224-Potion-NamespacedKey.patch rename to patches/server/0223-Potion-NamespacedKey.patch index a78e2657b..b8daf5666 100644 --- a/patches/server/0224-Potion-NamespacedKey.patch +++ b/patches/server/0223-Potion-NamespacedKey.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591e630e3e7 100644 +index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45918b57c2 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java @@ -36,6 +36,7 @@ public class MobEffectInstance implements Comparable { @@ -16,37 +16,31 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 private final Optional factorData; public MobEffectInstance(MobEffect type) { -@@ -54,17 +55,36 @@ public class MobEffectInstance implements Comparable { +@@ -54,8 +55,14 @@ public class MobEffectInstance implements Comparable { this(type, duration, amplifier, ambient, visible, visible); } + // Purpur start -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean visible, @Nullable org.bukkit.NamespacedKey key) { -+ this(type, duration, amplifier, ambient, visible, visible, key); ++ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { ++ this(type, duration, amplifier, ambient, showParticles, showIcon, null, key, type.createFactorData()); + } + // Purpur end + public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { -- this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData()); -+ // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), (org.bukkit.NamespacedKey)null); -+ } -+ -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { -+ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), key); -+ // Purpur end +- this(type, duration, amplifier, ambient, showParticles, showIcon, null, type.createFactorData()); ++ this(type, duration, amplifier, ambient, showParticles, showIcon, null, null, type.createFactorData()); // Purpur } - public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData) { -+ // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, hiddenEffect, factorCalculationData, (org.bukkit.NamespacedKey) null); -+ } -+ -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData, @Nullable org.bukkit.NamespacedKey key) { -+ // Purpur end + public MobEffectInstance( +@@ -66,6 +73,7 @@ public class MobEffectInstance implements Comparable { + boolean showParticles, + boolean showIcon, + @Nullable MobEffectInstance hiddenEffect, ++ @Nullable org.bukkit.NamespacedKey key, // Purpur + Optional factorCalculationData + ) { this.effect = type; - this.duration = duration; - this.amplifier = amplifier; +@@ -74,6 +82,7 @@ public class MobEffectInstance implements Comparable { this.ambient = ambient; this.visible = showParticles; this.showIcon = showIcon; @@ -54,7 +48,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 this.hiddenEffect = hiddenEffect; this.factorData = factorCalculationData; } -@@ -85,6 +105,7 @@ public class MobEffectInstance implements Comparable { +@@ -94,6 +103,7 @@ public class MobEffectInstance implements Comparable { this.ambient = that.ambient; this.visible = that.visible; this.showIcon = that.showIcon; @@ -62,7 +56,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 } public boolean update(MobEffectInstance that) { -@@ -129,6 +150,13 @@ public class MobEffectInstance implements Comparable { +@@ -138,6 +148,13 @@ public class MobEffectInstance implements Comparable { bl = true; } @@ -76,7 +70,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 return bl; } -@@ -172,6 +200,17 @@ public class MobEffectInstance implements Comparable { +@@ -181,6 +198,17 @@ public class MobEffectInstance implements Comparable { return this.showIcon; } @@ -94,7 +88,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 public boolean tick(LivingEntity entity, Runnable overwriteCallback) { if (this.hasRemainingDuration()) { int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; -@@ -232,6 +271,12 @@ public class MobEffectInstance implements Comparable { +@@ -237,6 +265,12 @@ public class MobEffectInstance implements Comparable { string = string + ", Show Icon: false"; } @@ -107,16 +101,15 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 return string; } -@@ -247,7 +292,7 @@ public class MobEffectInstance implements Comparable { - return false; - } else { - MobEffectInstance mobEffectInstance = (MobEffectInstance)object; -- return this.duration == mobEffectInstance.duration && this.amplifier == mobEffectInstance.amplifier && this.ambient == mobEffectInstance.ambient && this.effect.equals(mobEffectInstance.effect); -+ return this.duration == mobEffectInstance.duration && this.amplifier == mobEffectInstance.amplifier && this.ambient == mobEffectInstance.ambient && this.effect.equals(mobEffectInstance.effect) && this.key == mobEffectInstance.key; // Purpur - add key - } +@@ -251,6 +285,7 @@ public class MobEffectInstance implements Comparable { + && this.duration == mobEffectInstance.duration + && this.amplifier == mobEffectInstance.amplifier + && this.ambient == mobEffectInstance.ambient ++ && this.key == mobEffectInstance.key // Purpur - add key + && this.effect.equals(mobEffectInstance.effect); } -@@ -272,6 +317,11 @@ public class MobEffectInstance implements Comparable { +@@ -275,6 +310,11 @@ public class MobEffectInstance implements Comparable { nbt.putBoolean("ambient", this.isAmbient()); nbt.putBoolean("show_particles", this.isVisible()); nbt.putBoolean("show_icon", this.showIcon()); @@ -128,7 +121,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 if (this.hiddenEffect != null) { CompoundTag compoundTag = new CompoundTag(); this.hiddenEffect.save(compoundTag); -@@ -306,6 +356,13 @@ public class MobEffectInstance implements Comparable { +@@ -311,6 +351,13 @@ public class MobEffectInstance implements Comparable { bl3 = nbt.getBoolean("show_icon"); } @@ -142,12 +135,12 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 MobEffectInstance mobEffectInstance = null; if (nbt.contains("hidden_effect", 10)) { mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect")); -@@ -318,7 +375,7 @@ public class MobEffectInstance implements Comparable { +@@ -325,7 +372,7 @@ public class MobEffectInstance implements Comparable { optional = Optional.empty(); } - return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional); -+ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional, key); // Purpur - add key ++ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, key, optional); // Purpur - add key } @Override diff --git a/patches/server/0225-Grindstone-API.patch b/patches/server/0224-Grindstone-API.patch similarity index 100% rename from patches/server/0225-Grindstone-API.patch rename to patches/server/0224-Grindstone-API.patch diff --git a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0228-Mob-head-visibility-percent.patch b/patches/server/0227-Mob-head-visibility-percent.patch similarity index 98% rename from patches/server/0228-Mob-head-visibility-percent.patch rename to patches/server/0227-Mob-head-visibility-percent.patch index 21b0e8bef..8693603bf 100644 --- a/patches/server/0228-Mob-head-visibility-percent.patch +++ b/patches/server/0227-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45..99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8 100644 +index 3a1b8a94642339a96d8f7391714fae1648dc5149..21019c1484a281e6cbcaf1c3e462efa106fee5eb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1049,9 +1049,20 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0229-Configurable-valid-characters-for-usernames.patch b/patches/server/0228-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0229-Configurable-valid-characters-for-usernames.patch rename to patches/server/0228-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0230-Shears-can-have-looting-enchantment.patch b/patches/server/0229-Shears-can-have-looting-enchantment.patch similarity index 98% rename from patches/server/0230-Shears-can-have-looting-enchantment.patch rename to patches/server/0229-Shears-can-have-looting-enchantment.patch index 7cce01f0a..b047a28aa 100644 --- a/patches/server/0230-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0229-Shears-can-have-looting-enchantment.patch @@ -126,10 +126,10 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607 } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -index 859435f747ceef860cb4e9e825a7353ea3b90798..fc2c35f57436371cb0111aedfd289ac95d506d07 100644 +index cc83aa539f8538fbaed8a3e52d9d9d8901e4793d..4f8d8665cb90b746dc59913ec270839c4e5dba91 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -@@ -128,6 +128,12 @@ public enum EnchantmentCategory { +@@ -120,6 +120,12 @@ public enum EnchantmentCategory { public boolean canEnchant(Item item) { return item instanceof BowItem || item instanceof CrossbowItem; } @@ -162,7 +162,7 @@ index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f46379 public int getMinCost(int level) { return 15 + (level - 1) * 9; diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index 5045e9d133f1675c2498f9bdd46797da8d2924e0..015ea2ecac493c88f45d6ad66c2ef346252b4ec8 100644 +index c1be4eb145e1a7e7749d24958bfed5c8268f1131..40d385c7865726545bb66f9a1856ed4e73e60202 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -72,6 +72,7 @@ public class CraftEnchantment extends Enchantment implements Handleable> statusEffects) { diff --git a/src/main/java/net/minecraft/world/food/Foods.java b/src/main/java/net/minecraft/world/food/Foods.java -index b16d9e2eaa589f19c563ee70b1a56d67dbcdecb0..71beab673f04cd051c46ea37f8c847316885d38d 100644 +index 4569cf30b33167a415256a8542820557ad38f89e..9c65eefa855f3622b6c9ae2a698cf332ba225c7f 100644 --- a/src/main/java/net/minecraft/world/food/Foods.java +++ b/src/main/java/net/minecraft/world/food/Foods.java -@@ -4,6 +4,9 @@ import net.minecraft.world.effect.MobEffectInstance; +@@ -4,6 +4,8 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; public class Foods { + public static final java.util.Map ALL_PROPERTIES = new java.util.HashMap<>(); // Purpur + public static final java.util.Map DEFAULT_PROPERTIES = new java.util.HashMap<>(); // Purpur -+ - public static final FoodProperties APPLE = (new FoodProperties.Builder()).nutrition(4).saturationMod(0.3F).build(); - public static final FoodProperties BAKED_POTATO = (new FoodProperties.Builder()).nutrition(5).saturationMod(0.6F).build(); - public static final FoodProperties BEEF = (new FoodProperties.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); + public static final FoodProperties APPLE = new FoodProperties.Builder().nutrition(4).saturationMod(0.3F).build(); + public static final FoodProperties BAKED_POTATO = new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + public static final FoodProperties BEEF = new FoodProperties.Builder().nutrition(3).saturationMod(0.3F).meat().build(); diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index e83ea53da012f3dcaa1f53bf6082a17a69e6ee13..cf68dca4096556b0c2594c76fcf113419e56dae0 100644 +index bb2103a488964f25335393fa91e8ae5749eca333..249c887af68f56739c3609bad2405ba2cbe11762 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1367,6 +1367,13 @@ public class Items { +@@ -1715,6 +1715,13 @@ public class Items { ((BlockItem)item).registerBlocks(Item.BY_BLOCK, item); } diff --git a/patches/server/0238-Max-joins-per-second.patch b/patches/server/0237-Max-joins-per-second.patch similarity index 93% rename from patches/server/0238-Max-joins-per-second.patch rename to patches/server/0237-Max-joins-per-second.patch index 96b02d210..f80e8148a 100644 --- a/patches/server/0238-Max-joins-per-second.patch +++ b/patches/server/0237-Max-joins-per-second.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..b41cab778f446434b788946ea9d3e02c152e570e 100644 +index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e908560335 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -569,11 +569,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -570,11 +570,20 @@ public class Connection extends SimpleChannelInboundHandler> { private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world diff --git a/patches/server/0239-Configurable-minimum-demand-for-trades.patch b/patches/server/0238-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0239-Configurable-minimum-demand-for-trades.patch rename to patches/server/0238-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0240-Lobotomize-stuck-villagers.patch b/patches/server/0239-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0240-Lobotomize-stuck-villagers.patch rename to patches/server/0239-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0241-Option-for-villager-display-trade-item.patch b/patches/server/0240-Option-for-villager-display-trade-item.patch similarity index 86% rename from patches/server/0241-Option-for-villager-display-trade-item.patch rename to patches/server/0240-Option-for-villager-display-trade-item.patch index 69a2d99dd..e06a0c9ae 100644 --- a/patches/server/0241-Option-for-villager-display-trade-item.patch +++ b/patches/server/0240-Option-for-villager-display-trade-item.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Option for villager display trade item diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903996ecaf6 100644 +index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45ce06ded55 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -42,6 +42,7 @@ public class ShowTradesToPlayer extends Behavior { +@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { @Override public boolean canStillUse(ServerLevel world, Villager entity, long time) { + if (!entity.level().purpurConfig.villagerDisplayTradeItem) return false; // Purpur - return this.checkExtraStartConditions(world, entity) && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); - } - + return this.checkExtraStartConditions(world, entity) + && this.lookTime > 0 + && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 0135c477ca5e8401177083bcd41573d7e24ec850..a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 92% rename from patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index e2a05ba7e..0b5fcda87 100644 --- a/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 9b897cf53f4bb5d366e6ac88dbed93c59d8fe541..fc61f93e04e5bc893b89c746deb2b89c5be0d602 100644 +index 75884a9e69a28404752c1a2cf854335bb78cac01..1fd69e6ab765236b1a09e2791188d1eb7f12ecbb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -77,6 +77,6 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -78,6 +78,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end - Make water animal spawn height configurable diff --git a/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0244-Anvil-repair-damage-options.patch b/patches/server/0243-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0244-Anvil-repair-damage-options.patch rename to patches/server/0243-Anvil-repair-damage-options.patch index 3b98f2c86..1b5dc7e93 100644 --- a/patches/server/0244-Anvil-repair-damage-options.patch +++ b/patches/server/0243-Anvil-repair-damage-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76a538d903 100644 +index 18d2ff1baa2db0b97f2565eac006fbc4e81022fa..58d29c89e8e54fac143982c40c9aecc855b6cfd5 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java @@ -62,6 +62,54 @@ public class AnvilBlock extends FallingBlock { diff --git a/patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0245-Add-toggle-for-enchant-level-clamping.patch similarity index 95% rename from patches/server/0246-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0245-Add-toggle-for-enchant-level-clamping.patch index c2fcb9ec6..ab2a68da0 100644 --- a/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0245-Add-toggle-for-enchant-level-clamping.patch @@ -18,10 +18,10 @@ index 829d84f48c7149ec1ba0b71b0f43ef19fed99380..f6664447c45b1d6f3371af7bed8b1175 } 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 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235ef3623822 100644 +index 496c47eb3b13ba620fde1a2bc96f886c5b01e1de..06ca2cd5ae2a25205a37c783753ef7d56e72df94 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -46,7 +46,7 @@ public class EnchantmentHelper { +@@ -47,7 +47,7 @@ public class EnchantmentHelper { } public static int getEnchantmentLevel(CompoundTag nbt) { diff --git a/patches/server/0247-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0246-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0247-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0246-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0249-Stonecutter-damage.patch b/patches/server/0248-Stonecutter-damage.patch similarity index 88% rename from patches/server/0249-Stonecutter-damage.patch rename to patches/server/0248-Stonecutter-damage.patch index a418d32e2..6d36c0321 100644 --- a/patches/server/0249-Stonecutter-damage.patch +++ b/patches/server/0248-Stonecutter-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba9275cec93d9 100644 +index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b359f833064 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -102,6 +102,8 @@ public class CombatTracker { +@@ -100,6 +100,8 @@ public class CombatTracker { // Purpur start if (damageSource.isScissors()) { return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); @@ -83,7 +83,7 @@ index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3 public DamageSource inFire() { diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b2fdd6520 100644 +index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6af6987aa8 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java @@ -99,4 +99,14 @@ public class StonecutterBlock extends Block { @@ -102,10 +102,10 @@ index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881feb9dd4a89 100644 +index b7f9793900d365f91d6e30dd22881a30e4250ac8..a0527e9f9c84353d2f4e56bf2f5341fd99daad94 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -471,7 +471,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -475,7 +475,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.BLOCKED; } else { // Paper end - Do not load chunks during pathfinding @@ -114,15 +114,15 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe return BlockPathTypes.DANGER_OTHER; } -@@ -504,7 +504,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - } else if (!blockState.is(BlockTags.TRAPDOORS) && !blockState.is(Blocks.LILY_PAD) && !blockState.is(Blocks.BIG_DRIPLEAF)) { - if (blockState.is(Blocks.POWDER_SNOW)) { - return BlockPathTypes.POWDER_SNOW; -- } else if (!blockState.is(Blocks.CACTUS) && !blockState.is(Blocks.SWEET_BERRY_BUSH)) { -+ } else if (!blockState.is(Blocks.CACTUS) && !blockState.is(Blocks.SWEET_BERRY_BUSH) && !blockState.is(Blocks.STONECUTTER)) { // Purpur - if (blockState.is(Blocks.HONEY_BLOCK)) { - return BlockPathTypes.STICKY_HONEY; - } else if (blockState.is(Blocks.COCOA)) { +@@ -509,7 +509,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { + return BlockPathTypes.TRAPDOOR; + } else if (blockState.is(Blocks.POWDER_SNOW)) { + return BlockPathTypes.POWDER_SNOW; +- } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) { ++ } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur + return BlockPathTypes.DAMAGE_OTHER; + } else if (blockState.is(Blocks.HONEY_BLOCK)) { + return BlockPathTypes.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0b913fe09 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0251-Add-config-for-snow-on-blue-ice.patch b/patches/server/0250-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0251-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0250-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0252-Skeletons-eat-wither-roses.patch b/patches/server/0251-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0252-Skeletons-eat-wither-roses.patch rename to patches/server/0251-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0253-Enchantment-Table-Persists-Lapis.patch b/patches/server/0252-Enchantment-Table-Persists-Lapis.patch similarity index 92% rename from patches/server/0253-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0252-Enchantment-Table-Persists-Lapis.patch index e53ec1480..506dc5fc1 100644 --- a/patches/server/0253-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0252-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990e4a720e4 100644 +index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b38115209 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -40,6 +40,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -62,7 +62,7 @@ index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990 int j; for (j = 0; j < 3; ++j) { -@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -351,6 +384,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { @@ -71,7 +71,7 @@ index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990 }); } diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770da38d6971 100644 +index af3a8d5f4d80b22d67092bb0c2af5da31b2e3bce..7d5233a96dfa9fca2255e8e44b02179313087ef6 100644 --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java @@ -30,6 +30,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; @@ -83,7 +83,7 @@ index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770d public class EnchantmentTableBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(EnchantmentTableBlock::new); -@@ -128,4 +130,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { +@@ -137,4 +139,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -103,7 +103,7 @@ index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770d + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java -index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e8bc8455d 100644 +index a912a1ccd3816a9c398946a8724bd3c882f4e9c3..af936b9a2daff9974c2f6ca3c8f5541db94cb40d 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java @@ -24,6 +24,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable @@ -119,17 +119,17 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e nbt.putString("CustomName", Component.Serializer.toJson(this.name)); } + nbt.putInt("Purpur.Lapis", this.lapis); // Purpur - } -@@ -44,6 +46,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable + @Override +@@ -43,6 +45,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable if (nbt.contains("CustomName", 8)) { this.name = io.papermc.paper.util.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException } + this.lapis = nbt.getInt("Purpur.Lapis"); // Purpur - } + public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantmentTableBlockEntity blockEntity) { @@ -117,4 +120,14 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable public Component getCustomName() { return this.name; diff --git a/patches/server/0254-Spark-Profiler.patch b/patches/server/0253-Spark-Profiler.patch similarity index 100% rename from patches/server/0254-Spark-Profiler.patch rename to patches/server/0253-Spark-Profiler.patch diff --git a/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch index 738ca141f..9d3f78cc2 100644 --- a/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 72ac438ec1a6628c861bdab9626c77666d4ba2b6..9107cc4860f81460f3424aeac4ca026b891ab47f 100644 +index 1cefa3b6bdd62ae7bf30da872012fc150905f5ae..db42bf7c5604f32b9b06accb4bbc004ed264a3c2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0257-Config-to-not-let-coral-die.patch b/patches/server/0256-Config-to-not-let-coral-die.patch similarity index 93% rename from patches/server/0257-Config-to-not-let-coral-die.patch rename to patches/server/0256-Config-to-not-let-coral-die.patch index 6e5d7b438..f57e87cf2 100644 --- a/patches/server/0257-Config-to-not-let-coral-die.patch +++ b/patches/server/0256-Config-to-not-let-coral-die.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to not let coral die diff --git a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index 2a65c7b859b1126dbac9819a01ca2652e20498a9..3192edee23b899107b17e354ddfb3159ac2ef429 100644 +index ffcb4849d83e0f02adbb106f4543bb4898678267..700108e84cf3836a0542c5e04856a9fe254794e9 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat +@@ -38,6 +38,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat } protected static boolean scanForWater(BlockState state, BlockGetter world, BlockPos pos) { diff --git a/patches/server/0258-Add-local-difficulty-api.patch b/patches/server/0257-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0258-Add-local-difficulty-api.patch rename to patches/server/0257-Add-local-difficulty-api.patch diff --git a/patches/server/0259-Add-toggle-for-RNG-manipulation.patch b/patches/server/0258-Add-toggle-for-RNG-manipulation.patch similarity index 87% rename from patches/server/0259-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0258-Add-toggle-for-RNG-manipulation.patch index 516260ad9..538ac6444 100644 --- a/patches/server/0259-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0258-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7f69afbb8f6dd510f5715145b78d8ec97249783a..62fc774c91b12b100b982b1ff8fbb2495a5551ee 100644 +index 2cac12d2b788b0962b719a83b43dc23177b76ac6..ec6187bc3f445acb86e69161ab1b82248b6e99e0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -597,7 +597,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -20,15 +20,15 @@ index 7f69afbb8f6dd510f5715145b78d8ec97249783a..62fc774c91b12b100b982b1ff8fbb249 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); 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 2ec8a55650beff50676759617896da2db09dddc0..cba0823bfd10a3e7fd3a7548b9cc11a77ce07ce7 100644 +index a6b24a042bd75555895d5404b155154c1d994d57..4c607abf5e6235b2f325cf9eff1676f565d251f5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -44,7 +44,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); -- //this.random.setSeed((long)this.getId()); // Paper - Share random for entities to make them more random -+ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed((long) this.getId()); // Paper - Share random for entities to make them more random // Purpur +- //this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random ++ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random // Purpur this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/patches/server/0260-Send-client-custom-name-of-BE.patch b/patches/server/0259-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0260-Send-client-custom-name-of-BE.patch rename to patches/server/0259-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0261-Allow-custom-ChatDecorators.patch b/patches/server/0260-Allow-custom-ChatDecorators.patch similarity index 94% rename from patches/server/0261-Allow-custom-ChatDecorators.patch rename to patches/server/0260-Allow-custom-ChatDecorators.patch index 8c3d080d5..09fd7fd7e 100644 --- a/patches/server/0261-Allow-custom-ChatDecorators.patch +++ b/patches/server/0260-Allow-custom-ChatDecorators.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f7b3dd47d16c3d0e0f374ff31bb8acd1127326cf..00c17b658c8fff133868d2a260dffa8d1171f964 100644 +index 1e017c7c33fd70803312efdd61e090cb8aaf2254..98c49c3844edfb52d5b1ff32fa5e49d46fa8a20c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2859,6 +2859,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements BehaviorContro +@@ -59,9 +59,9 @@ public abstract class Behavior implements BehaviorContro this.status = Behavior.Status.RUNNING; int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration); - this.endTimestamp = time + (long)i; + this.endTimestamp = time + i; - this.timing.startTiming(); // Paper - behavior timings + //this.timing.startTiming(); // Paper - behavior timings // Purpur this.start(world, entity, time); @@ -698,7 +698,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..4f3a1c2bfaec6787c8fc62c7df13c512 return true; } else { return false; -@@ -72,13 +72,13 @@ public abstract class Behavior implements BehaviorContro +@@ -73,13 +73,13 @@ public abstract class Behavior implements BehaviorContro @Override public final void tickOrStop(ServerLevel world, E entity, long time) { @@ -711,14 +711,14 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..4f3a1c2bfaec6787c8fc62c7df13c512 } - this.timing.stopTiming(); // Paper - behavior timings + //this.timing.stopTiming(); // Paper - behavior timings // Purpur - } + protected void tick(ServerLevel world, E entity, long time) { diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c10fdf4dda 100644 +index de2dfaf3cb41bafd48fa4699096a0a7304cd3201..f5ee1a4cc4aa85d14008900efb48204917259b09 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -46,10 +46,10 @@ public abstract class Sensor { +@@ -53,10 +53,10 @@ public abstract class Sensor { if (--this.timeToTick <= 0L) { // Paper start - configurable sensor tick rate and timings this.timeToTick = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.sensor.get(entity.getType(), this.configKey), this.scanRate); @@ -729,8 +729,8 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 - this.timing.stopTiming(); // Paper - sensor timings + //this.timing.stopTiming(); // Paper - sensor timings // Purpur } - } + diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java index 02b2cd49c2db6ba1688f6862e2c791947cec2fcf..c5bd99e63925ec27b89b3ca00583b5c8a8a74628 100644 --- a/src/main/java/net/minecraft/world/level/Level.java diff --git a/patches/server/0263-Remove-Mojang-Profiler.patch b/patches/server/0262-Remove-Mojang-Profiler.patch similarity index 96% rename from patches/server/0263-Remove-Mojang-Profiler.patch rename to patches/server/0262-Remove-Mojang-Profiler.patch index b4d6e3f6e..75986b086 100644 --- a/patches/server/0263-Remove-Mojang-Profiler.patch +++ b/patches/server/0262-Remove-Mojang-Profiler.patch @@ -39,22 +39,19 @@ index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6 } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 05e1c94268cf5c6897807cd7acced652856a09ea..16ff9771fa57b17a50e0930b95a86da8e9d170c0 100644 +index 9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d..e7cc8105fff9cb952eabfd006e0a4e4638091019 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -@@ -43,9 +43,9 @@ public class BuildContexts> { +@@ -42,7 +42,7 @@ public class BuildContexts> { ChainModifiers chainModifiers = flags; List list = sources; if (contextChain.getStage() != Stage.EXECUTE) { -- context.profiler().push(() -> { -+ /*context.profiler().push(() -> { // Purpur - return "prepare " + this.commandInput; -- }); -+ });*/ // Purpur +- context.profiler().push(() -> "prepare " + this.commandInput); ++ //context.profiler().push(() -> "prepare " + this.commandInput); // Purpur try { - for(int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { -@@ -88,7 +88,7 @@ public class BuildContexts> { + for (int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { +@@ -86,7 +86,7 @@ public class BuildContexts> { } } } finally { @@ -64,18 +61,15 @@ index 05e1c94268cf5c6897807cd7acced652856a09ea..16ff9771fa57b17a50e0930b95a86da8 } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -index 821dc4aeaf48460000682604fba51b340b9738e7..9882e89abcce1bf0b484424dd0a25bd3bbb841b4 100644 +index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea7f00751b 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -@@ -23,9 +23,9 @@ public class ExecuteCommand> implements Unbo +@@ -23,7 +23,7 @@ public class ExecuteCommand> implements Unbo @Override public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { -- executionContext.profiler().push(() -> { -+ /*executionContext.profiler().push(() -> { // Purpur - return "execute " + this.commandInput; -- }); -+ });*/ // Purpur +- executionContext.profiler().push(() -> "execute " + this.commandInput); ++ //executionContext.profiler().push(() -> "execute " + this.commandInput); // Purpur try { executionContext.incrementCost(); @@ -86,10 +80,10 @@ index 821dc4aeaf48460000682604fba51b340b9738e7..9882e89abcce1bf0b484424dd0a25bd3 - executionContext.profiler().pop(); + //executionContext.profiler().pop(); // Purpur } - } + } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 67a5317645f3a259ee30de886d13774c0467ae2f..006f9de7ee2d2c4bae253a08aa41c9cff66d1e94 100644 +index ff08e054d3ea168011a9f7f01e106721449d5e21..5a736a99e97003506cedc697d7b33105d6fe40be 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -341,13 +341,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop reload(PreparableReloadListener.PreparationBarrier synchronizer, ResourceManager manager, ProfilerFiller prepareProfiler, ProfilerFiller applyProfiler, Executor prepareExecutor, Executor applyExecutor) { +@@ -16,11 +16,11 @@ public interface ResourceManagerReloadListener extends PreparableReloadListener + Executor applyExecutor + ) { return synchronizer.wait(Unit.INSTANCE).thenRunAsync(() -> { - applyProfiler.startTick(); - applyProfiler.push("listener"); @@ -911,7 +905,7 @@ index 9ddbfcf80d9a381dace78a62880f85a4d767e0eb..7383c7d3820dce06108eaafd236a7c6c } diff --git a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d952b422d78 100644 +index ce3c3a29152ae6cc91d30c807eb5ffc7105dc485..aefc896b5e85f96f9014697debf75952e4b97874 100644 --- a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java +++ b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java @@ -55,7 +55,7 @@ public class ActiveProfiler implements ProfileCollector { @@ -931,7 +925,7 @@ index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d95 + //this.pop(); // Purpur this.started = false; if (!this.path.isEmpty()) { - LOGGER.error("Profiler tick ended before path was fully popped (remainder: '{}'). Mismatched push/pop?", LogUtils.defer(() -> { + LOGGER.error( @@ -93,7 +93,7 @@ public class ActiveProfiler implements ProfileCollector { @Override @@ -961,7 +955,7 @@ index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d95 private ActiveProfiler.PathEntry getCurrentEntry() { diff --git a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b477b2adc7a 100644 +index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60c6ff9818 100644 --- a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java +++ b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java @@ -6,32 +6,44 @@ import net.minecraft.util.profiling.metrics.MetricCategory; @@ -1010,7 +1004,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 + @io.papermc.paper.annotation.DoNotUse // Purpur void incrementCounter(Supplier markerGetter, int num); - static ProfilerFiller tee(final ProfilerFiller a, final ProfilerFiller b) { + static ProfilerFiller tee(ProfilerFiller a, ProfilerFiller b) { @@ -41,62 +53,62 @@ public interface ProfilerFiller { return b == InactiveProfiler.INSTANCE ? a : new ProfilerFiller() { @Override @@ -1095,7 +1089,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b197a0eb12b48f980301a1ee4b583af109c37052..8733183208926bc30ecec8329a4080230bc2afab 100644 +index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2b7b546d0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1437,10 +1431,10 @@ index 380834677c93a23879a9e53173fa835ebd22f584..1d1688fafc438a5957096118790d44fb } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce750a7cd7 100644 +index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578fec9b10da 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -105,8 +105,8 @@ public class GoalSelector { +@@ -104,8 +104,8 @@ public class GoalSelector { } public void tick() { @@ -1449,9 +1443,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur + //profilerFiller.push("goalCleanup"); // Purpur - for(WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -123,8 +123,8 @@ public class GoalSelector { + for (WrappedGoal wrappedGoal : this.availableGoals) { + if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { // Paper - Perf: optimize goal types by removing streams +@@ -122,8 +122,8 @@ public class GoalSelector { } } @@ -1460,9 +1454,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //profilerFiller.pop(); // Purpur + //profilerFiller.push("goalUpdate"); // Purpur - for(WrappedGoal wrappedGoal2 : this.availableGoals) { + for (WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -144,13 +144,13 @@ public class GoalSelector { +@@ -143,13 +143,13 @@ public class GoalSelector { } } @@ -1477,9 +1471,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur + //profilerFiller.push("goalTick"); // Purpur - for(WrappedGoal wrappedGoal : this.availableGoals) { + for (WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -158,7 +158,7 @@ public class GoalSelector { +@@ -157,7 +157,7 @@ public class GoalSelector { } } @@ -1489,17 +1483,17 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce public Set getAvailableGoals() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index a04fb58c29b462e20ed0b702cef478e3985b7cd2..43699f94dd0fd97513242fcdbc4ec4d0dc260f8e 100644 +index dafacdb43de86d328194dcfef284286fceb3754f..8a6d716706bfcd551125ac1e69dfec6989196e82 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -@@ -173,12 +173,12 @@ public abstract class PathNavigation { +@@ -172,12 +172,12 @@ public abstract class PathNavigation { } } // Paper end - EntityPathfindEvent - this.level.getProfiler().push("pathfind"); + //this.level.getProfiler().push("pathfind"); // Purpur BlockPos blockPos = useHeadPos ? this.mob.blockPosition().above() : this.mob.blockPosition(); - int i = (int)(followRange + (float)range); + int i = (int)(followRange + range); PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i)); Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier); - this.level.getProfiler().pop(); @@ -1591,10 +1585,10 @@ index baca84088350c82569fb7969136c65bbc4c52f5b..8616a8c09a21f576a07daaa93ebf64e0 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 3be70e054c658d34c4aa598ff70c63fa2cff7982..d6340d0a1308bafd3ba176562bf08dcadec02b34 100644 +index 907cdc32c30291f5668c806b874da0fbe0754738..37f1d3c656997906cef57d9dbefc226d04fc65fe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -215,13 +215,13 @@ public class Frog extends Animal implements VariantHolder { +@@ -239,13 +239,13 @@ public class Frog extends Animal implements VariantHolder { private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { @@ -1675,10 +1669,10 @@ index 4d1071546f523c63b9c981e90a09393e9e4400fa..5e7d76dcdc170b809ab82f6e2259c9b4 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fdd487556f 100644 +index c1125279b80bad8d7b6b273e709c412a0a578318..abafb15ab1294e11810798795bd103fb8bd5f64a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -232,10 +232,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -273,10 +273,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { @@ -1692,10 +1686,10 @@ index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fd } diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index ab183a7d94a27d5235ff33ce7784c92d66d40b89..3001c8f246e4ee4bfeae0d3ad9e0c2afb309f629 100644 +index 6b410d03e1fbba233a0cb2b9d1bfab6d0311230e..a1fd6f9cf367c8eb8c3def24262908778c3a4cbc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -200,10 +200,10 @@ public class Breeze extends Monster { +@@ -202,10 +202,10 @@ public class Breeze extends Monster { @Override protected void customServerAiStep() { @@ -1710,10 +1704,10 @@ index ab183a7d94a27d5235ff33ce7784c92d66d40b89..3001c8f246e4ee4bfeae0d3ad9e0c2af } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 510ee1aee1dd106b5129c375ebb59c7950b8b989..5c160d6aa4e3d51c1161f82e92e5e8c1e809a574 100644 +index 4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8..cfa7ec9b5b3125cb80b591e80f8d42815c25f568 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -168,10 +168,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -195,10 +195,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { private int behaviorTick; // Pufferfish @Override protected void customServerAiStep() { @@ -1725,7 +1719,7 @@ index 510ee1aee1dd106b5129c375ebb59c7950b8b989..5c160d6aa4e3d51c1161f82e92e5e8c1 + //this.level().getProfiler().pop(); // Purpur HoglinAi.updateActivity(this); if (this.isConverting()) { - ++this.timeInOverworld; + this.timeInOverworld++; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971bdbd8451 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -1744,10 +1738,10 @@ index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971 super.customServerAiStep(); } diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bdd34da516 100644 +index 5ae1b1de412aeacbbc5e04299e94351d34631b4c..40f6af92d1fc58a6115fc16b02d296aef897b607 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -117,10 +117,10 @@ public class PiglinBrute extends AbstractPiglin { +@@ -145,10 +145,10 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { @@ -1936,7 +1930,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5aa7065b93 100644 +index c4d6b145d54aaf415dd4b08811c024255092e1b8..7bdcbfa4fcefb7d8230756a55b774e3834290e64 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java @@ -53,8 +53,8 @@ public class PathFinder { @@ -1950,7 +1944,7 @@ index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5a // Set set = positions.keySet(); startNode.g = 0.0F; startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection -@@ -123,7 +123,7 @@ public class PathFinder { +@@ -122,7 +122,7 @@ public class PathFinder { if (best == null || comparator.compare(path, best) < 0) best = path; } @@ -1960,10 +1954,10 @@ index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5a // Paper end - Perf: remove streams and optimize collection } diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -index 1d7c663fa0e550bd0cfb9a4b83ccd7e2968666f0..0043c0087896a6df6910b0500da37d84b287c901 100644 +index d411753b50544c2a949eb71e86fc7aa811cf9f71..fb8f0168aa878708e2910fa651140ce49eaf0475 100644 --- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java +++ b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -@@ -86,20 +86,20 @@ public class LevelTicks implements LevelTickAccess { +@@ -81,20 +81,20 @@ public class LevelTicks implements LevelTickAccess { } public void tick(long time, int maxTicks, BiConsumer ticker) { diff --git a/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch index 233fda9e8..877965d2c 100644 --- a/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c48e18e4aa72eae5d1a87a86b8a9c982838b5d47..921e04a0280dde21ee5af79188052294d30a0bbc 100644 +index 54c5eb489e27524c58e1dbc589f5f545d6d46fdd..8a935e5dec455250dbb967275648f51042288f48 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0265-Add-Bee-API.patch b/patches/server/0264-Add-Bee-API.patch similarity index 100% rename from patches/server/0265-Add-Bee-API.patch rename to patches/server/0264-Add-Bee-API.patch diff --git a/patches/server/0266-Debug-Marker-API.patch b/patches/server/0265-Debug-Marker-API.patch similarity index 100% rename from patches/server/0266-Debug-Marker-API.patch rename to patches/server/0265-Debug-Marker-API.patch diff --git a/patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0268-Add-skeleton-bow-accuracy-option.patch b/patches/server/0267-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0268-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0267-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0269-Allay-respect-item-NBT.patch b/patches/server/0268-Allay-respect-item-NBT.patch similarity index 100% rename from patches/server/0269-Allay-respect-item-NBT.patch rename to patches/server/0268-Allay-respect-item-NBT.patch diff --git a/patches/server/0270-Add-death-screen-API.patch b/patches/server/0269-Add-death-screen-API.patch similarity index 100% rename from patches/server/0270-Add-death-screen-API.patch rename to patches/server/0269-Add-death-screen-API.patch diff --git a/patches/server/0271-Make-pufferfish-config-relocatable.patch b/patches/server/0270-Make-pufferfish-config-relocatable.patch similarity index 93% rename from patches/server/0271-Make-pufferfish-config-relocatable.patch rename to patches/server/0270-Make-pufferfish-config-relocatable.patch index 5497a44be..e3a3ff88f 100644 --- a/patches/server/0271-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0270-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 5e01bfdad663656168604fc878a993dd910bf45b..3fea9b69f4cfc94e7f01d4e3ca4ce7506a8e5d5c 100644 +index 8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d..7178a742e5a9d65e6438ae338541848684f1f480 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -38,7 +38,7 @@ index 6a9bd431e9c2e1fc1e51d394eaccba864bbeac89..85b861e21d8798a883ecbd0a09cc25f8 gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 0c3be815e4f81b0d51273413e9d0fb1a7db3f03f..146f229b8e8888e2c0256c007c71c675c27e71a5 100644 +index 1dd676ad37c68e3fce71306d7e05cb2c377a32b4..409c0e81571e23c9d535b541c61538424259d60a 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -180,6 +180,12 @@ public class Main { diff --git a/patches/server/0272-Implement-ram-and-rambar-commands.patch b/patches/server/0271-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0272-Implement-ram-and-rambar-commands.patch rename to patches/server/0271-Implement-ram-and-rambar-commands.patch index f18d87e83..ab9ceaac5 100644 --- a/patches/server/0272-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0271-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 48a4f26eec06777b4ae165db6566c1f6198527fd..b6cc108c2d4361e6f415cfc3ff8c7699 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 46c9cfa78fff65c24137792826c7f68483a39876..36b7686fdfeaab13cb1be9610ddc76fc70f6f6e5 100644 +index d78c2348160795fcc9ff23b448e7d3c48f34c272..305b90d10a499e9731f5178433fb10207e428091 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -284,6 +284,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0273-Add-item-packet-serialize-event.patch b/patches/server/0272-Add-item-packet-serialize-event.patch similarity index 95% rename from patches/server/0273-Add-item-packet-serialize-event.patch rename to patches/server/0272-Add-item-packet-serialize-event.patch index 2068e5598..9a7f225ca 100644 --- a/patches/server/0273-Add-item-packet-serialize-event.patch +++ b/patches/server/0272-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..bdcfd80f937c34956911373905d66424 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 05cbad6c6637cb5250a91239612a5388006a728a..e34bada9626702c8b7eeb7dfd77b08cb8f50c640 100644 +index 5a736a99e97003506cedc697d7b33105d6fe40be..a1876ec72ff38f465662aded3608c588be34ca2d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1731,6 +1731,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop extends Go +@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go } this.mob.lookAt(livingEntity, 30.0F, 30.0F); diff --git a/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0279-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0280-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0279-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 96% rename from patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch index ae5c8ae9e..bbbbc0811 100644 --- a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to allow creeper to encircle target when fusing. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java -index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e05649f72a6df 100644 +index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2ff1154ee3 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java @@ -54,6 +54,14 @@ public class SwellGoal extends Goal { diff --git a/patches/server/0282-Fire-Immunity-API.patch b/patches/server/0281-Fire-Immunity-API.patch similarity index 95% rename from patches/server/0282-Fire-Immunity-API.patch rename to patches/server/0281-Fire-Immunity-API.patch index 6defcefbd..d96bf9aab 100644 --- a/patches/server/0282-Fire-Immunity-API.patch +++ b/patches/server/0281-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0014046304fbb66925144ecccd0c0aa1c901c485..0f87b47758a543a5a0afa872f90d3db4dc9da4e0 100644 +index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e991807b91df78 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -427,6 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -50,7 +50,7 @@ index 0014046304fbb66925144ecccd0c0aa1c901c485..0f87b47758a543a5a0afa872f90d3db4 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 897f9f5d25c674f167530810c0b94bca83c3c3cc..50364ab478ae5ec016fc2318483920e2e849b8ba 100644 +index b6ecb58718b7de7ba9c90236f3dc11715652daa9..7121de7f623b4a57937a9c60c8fc0f4307e538dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 96% rename from patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index cf8111369..6384b858d 100644 --- a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0f87b47758a543a5a0afa872f90d3db4dc9da4e0..9131d7693551c0cdecdb63f67b510fd5c766503c 100644 +index a2f5027910b4d690eff73aaab7e991807b91df78..f2c6b52fe7fbb05afa0074684cd195f6ae598f1f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -936,6 +936,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0284-Added-got-ram-event.patch b/patches/server/0283-Added-got-ram-event.patch similarity index 100% rename from patches/server/0284-Added-got-ram-event.patch rename to patches/server/0283-Added-got-ram-event.patch diff --git a/patches/server/0285-Log-skipped-entity-s-position.patch b/patches/server/0284-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0285-Log-skipped-entity-s-position.patch rename to patches/server/0284-Log-skipped-entity-s-position.patch diff --git a/patches/server/0286-End-Crystal-Cramming.patch b/patches/server/0285-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0286-End-Crystal-Cramming.patch rename to patches/server/0285-End-Crystal-Cramming.patch diff --git a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0288-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0289-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0288-Config-to-remove-explosion-radius-clamp.patch index 77d4cab9b..471a6ae75 100644 --- a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0288-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b0884758d00efb1e3b4b47a539de2a819aab978a..ad2eff33b2df9f004b2859d876e3e95962503bd6 100644 +index 5dcfb077fc58a92f32425aaafb82d6b41d488e13..9b5da37a532595541eaac0a4607aff9045a20ff3 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -97,7 +97,7 @@ public class Explosion { diff --git a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0291-Add-PreExplodeEvents.patch b/patches/server/0290-Add-PreExplodeEvents.patch similarity index 94% rename from patches/server/0291-Add-PreExplodeEvents.patch rename to patches/server/0290-Add-PreExplodeEvents.patch index f0d94d365..cde070b54 100644 --- a/patches/server/0291-Add-PreExplodeEvents.patch +++ b/patches/server/0290-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index ad2eff33b2df9f004b2859d876e3e95962503bd6..059e545fd04b7919fb0cc86797b636e3cda61027 100644 +index 9b5da37a532595541eaac0a4607aff9045a20ff3..0be03430d8257d918b7cf646af518473ae027399 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -429,6 +429,23 @@ public class Explosion { diff --git a/patches/server/0292-Improve-output-of-plugins-command.patch b/patches/server/0291-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0292-Improve-output-of-plugins-command.patch rename to patches/server/0291-Improve-output-of-plugins-command.patch diff --git a/patches/server/0293-Add-mending-multiplier.patch b/patches/server/0292-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0293-Add-mending-multiplier.patch rename to patches/server/0292-Add-mending-multiplier.patch diff --git a/patches/server/0294-Make-GUI-Great-Again.patch b/patches/server/0293-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0294-Make-GUI-Great-Again.patch rename to patches/server/0293-Make-GUI-Great-Again.patch diff --git a/patches/server/0295-Stored-Bee-API.patch b/patches/server/0294-Stored-Bee-API.patch similarity index 100% rename from patches/server/0295-Stored-Bee-API.patch rename to patches/server/0294-Stored-Bee-API.patch diff --git a/patches/server/0296-Shears-can-defuse-TNT.patch b/patches/server/0295-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0296-Shears-can-defuse-TNT.patch rename to patches/server/0295-Shears-can-defuse-TNT.patch diff --git a/patches/server/0297-Explorer-Map-API.patch b/patches/server/0296-Explorer-Map-API.patch similarity index 100% rename from patches/server/0297-Explorer-Map-API.patch rename to patches/server/0296-Explorer-Map-API.patch diff --git a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 77% rename from patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch index 212c5b505..54306ecc1 100644 --- a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Add option for always showing item in player death messages diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d37a1784e 100644 +index 925654e40a170d1a4af0b9fcde1b9b359f833064..bf06bb78d060bb54d9aaade3605d42ce837d598b 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -59,7 +59,7 @@ public class CombatTracker { - } +@@ -53,7 +53,7 @@ public class CombatTracker { - ItemStack itemStack = var10000; -- return !itemStack.isEmpty() && itemStack.hasCustomHoverName() ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); -+ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.hasCustomHoverName()) ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); + private Component getMessageForAssistedFall(Entity attacker, Component attackerDisplayName, String itemDeathTranslationKey, String deathTranslationKey) { + ItemStack itemStack = attacker instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; +- return !itemStack.isEmpty() && itemStack.hasCustomHoverName() ++ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.hasCustomHoverName()) // Purpur + ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) + : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); } - - private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java index 41651c877246f38c73cc9c81b37a0b86e5054cb9..a1724d2d545aa808ea380f910c0190658fc7881b 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java diff --git a/patches/server/0301-place-end-crystal-on-any-block.patch b/patches/server/0300-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0301-place-end-crystal-on-any-block.patch rename to patches/server/0300-place-end-crystal-on-any-block.patch diff --git a/patches/server/0302-Add-hover-lines-API.patch b/patches/server/0301-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0302-Add-hover-lines-API.patch rename to patches/server/0301-Add-hover-lines-API.patch diff --git a/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0304-register-minecraft-debug-commands.patch b/patches/server/0303-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0304-register-minecraft-debug-commands.patch rename to patches/server/0303-register-minecraft-debug-commands.patch diff --git a/patches/server/0306-Configurable-villager-search-radius.patch b/patches/server/0304-Configurable-villager-search-radius.patch similarity index 75% rename from patches/server/0306-Configurable-villager-search-radius.patch rename to patches/server/0304-Configurable-villager-search-radius.patch index c895fc79e..3c5168260 100644 --- a/patches/server/0306-Configurable-villager-search-radius.patch +++ b/patches/server/0304-Configurable-villager-search-radius.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Configurable-villager-search-radius diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..bcb39d162c3401db471688738f32e9383af45e01 100644 +index 984e3cc48f93f4f036689a269562f12ebd7bdef1..6e65bc6bd198abf8c60016696d7851a1e8e080ec 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -65,7 +65,7 @@ public class AcquirePoi { - }; - // Paper start - optimise POI access - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); -- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); +@@ -73,7 +73,7 @@ public class AcquirePoi { + }; + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); + io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Set, BlockPos>> set = new java.util.HashSet<>(poiposes); - // Paper end - optimise POI access - Path path = findPathToPois(entity, set); + Set, BlockPos>> set = new java.util.HashSet<>(poiposes); + // Paper end - optimise POI access + Path path = findPathToPois(entity, set); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de543790b2 100644 +index a2e02881f90a93f067301b63eb84dfad476bedbd..3c8b9ef3f55f4511f062b03822c8056c40dd7c92 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java @@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { @@ -31,10 +31,10 @@ index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1ea80d8b0 100644 +index 002c9bba93dede25111c653ec1df38316f19421f..7dc82ffccc157a17335f1bc56ab81be3813294f6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2900,6 +2900,8 @@ public class PurpurWorldConfig { +@@ -2890,6 +2890,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2936,6 +2938,8 @@ public class PurpurWorldConfig { +@@ -2926,6 +2928,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); From f2a5ca87a9ae3e640144051214f58b5c2ece0915 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 16 Apr 2024 01:13:13 -0700 Subject: [PATCH 091/148] Updated Upstream (Pufferfish) Upstream has released updates that appear to apply and compile correctly Pufferfish Changes: pufferfish-gg/Pufferfish@3b6f245 Updated Upstream (Paper) pufferfish-gg/Pufferfish@fb16f9c Updated Upstream (Paper) pufferfish-gg/Pufferfish@9d12215 Updated Upstream (Paper) pufferfish-gg/Pufferfish@852ea89 Updated Upstream (Paper) --- .../0001-Pufferfish-Server-Changes.patch | 87 +++++++++---------- .../server/0003-Fix-pufferfish-issues.patch | 23 ++--- patches/server/0008-Ridables.patch | 6 +- 3 files changed, 50 insertions(+), 66 deletions(-) diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 8cabf9500..54c10ae08 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -616,10 +616,10 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..f6a3364175476c57a7763a087ff55e1689474800 +index 0000000000000000000000000000000000000000..6464682e2f93659e73aca491031c8051ab000033 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -0,0 +1,301 @@ +@@ -0,0 +1,302 @@ +package gg.pufferfish.pufferfish; + +import gg.pufferfish.pufferfish.simd.SIMDDetection; @@ -912,6 +912,7 @@ index 0000000000000000000000000000000000000000..f6a3364175476c57a7763a087ff55e16 + "the ender dragon whenever a player places an end crystal."); + } + ++ + public static boolean disableMethodProfiler; + public static boolean disableOutOfOrderChat; + private static void miscSettings() { @@ -1729,7 +1730,7 @@ index 529ab44baaf573b97cf7e89560c548642733188f..db55ad9aaabfa1ea998754f3ac352d16 this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 502bdc726b7890b00ee36871d905dea44e8719e3..4bd83e1605fb6540be1847dc3691e74b95f260ad 100644 +index 502bdc726b7890b00ee36871d905dea44e8719e3..fbffe3dab1b7812b50df5d6bddf4fbdb2e583339 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -894,6 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1755,7 +1756,7 @@ index 502bdc726b7890b00ee36871d905dea44e8719e3..4bd83e1605fb6540be1847dc3691e74b + final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); + MinecraftServer.LOGGER.error(msg, throwable); + getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); -+ entity.discard(); ++ entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + // Paper end + } + // Pufferfish end @@ -2171,7 +2172,7 @@ index 2439f8d48daca7329049436414f06a36b4b79029..4cf2963fdbe9003fd18ac8c2035ccded this.level().getProfiler().pop(); } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index b99a080ab27e24d8131fda931ca70d6d271bb01c..fe95cc1d931a5dfed45773b63c565e6036541a90 100644 +index b99a080ab27e24d8131fda931ca70d6d271bb01c..8d6954d05d2bf6d6c1c4953db3127b011a858cec 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -23,9 +23,11 @@ public class AttributeMap { @@ -2182,7 +2183,7 @@ index b99a080ab27e24d8131fda931ca70d6d271bb01c..fe95cc1d931a5dfed45773b63c565e60 public AttributeMap(AttributeSupplier defaultAttributes) { this.supplier = defaultAttributes; -+ this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish ++ this.createInstance = attributex -> this.supplier.createInstance(this::onAttributeModified, attributex); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { @@ -2247,7 +2248,7 @@ index de7c3654b5d134e380c0d7e8800beb6c10d8a22a..3e544a1b957e7a9bc2c5548baf7f6499 this.blockPos = mutableBlockPos; this.mob.movingTarget = mutableBlockPos == BlockPos.ZERO ? null : mutableBlockPos.immutable(); // Paper diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index d2f0c3b26d4beedb49d86e0242d843590d469d02..2848f0562de085c0c934455c12d785194b7a9dbf 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..28cff997a1b263784e245f692adbff2a888a2d53 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -76,9 +76,18 @@ public class TargetingConditions { @@ -2265,8 +2266,8 @@ index d2f0c3b26d4beedb49d86e0242d843590d469d02..2848f0562de085c0c934455c12d78519 + return false; + } + -+ double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D; -+ double e = Math.max((followRangeRaw) * d, 2.0D); // Paper - Fix MC-145656 ++ double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0; ++ double e = Math.max((followRangeRaw) * d, 2.0); // Paper - Fix MC-145656 + // Pufferfish end if (f > e * e) { return false; @@ -2686,19 +2687,19 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ca89d1593bf1b46c79a882db528cbca1359dc9d4..15186884c67f8b75a6b40e244c8b18797f098fd1 100644 +index ca89d1593bf1b46c79a882db528cbca1359dc9d4..a82de7111915b19cdc3f065910465a5e7e843aff 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -216,6 +216,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -215,6 +215,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + // Paper end public abstract ResourceKey getTypeKey(); - ++ + protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter -+ + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor 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 -@@ -1317,14 +1319,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1317,13 +1319,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2710,12 +2711,10 @@ index ca89d1593bf1b46c79a882db528cbca1359dc9d4..15186884c67f8b75a6b40e244c8b1879 MinecraftServer.LOGGER.error(msg, throwable); getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent - entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); -- // Paper end - Prevent block entity and entity crashes + entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Pufferfish - diff on change ServerLevel.tick -+ // Paper end + // Paper end - Prevent block entity and entity crashes } } - // Paper start - Option to prevent armor stands from doing entity lookups @@ -1797,6 +1799,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } @@ -2746,37 +2745,29 @@ index da7489986848316fed029b71d1bc4e1248c9c9a8..661acdf4b1f33d150b0caf179e925d31 return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index b865115dc5a8c000521abf668251ab1bd8104505..57f3193ff761cbe45846a02a15d8da9c9e2e87ee 100644 +index b865115dc5a8c000521abf668251ab1bd8104505..42af3888a155f114901a90d4028bafed5789f58f 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -63,14 +63,19 @@ public final class Biome { +@@ -63,13 +63,18 @@ public final class Biome { private final BiomeGenerationSettings generationSettings; private final MobSpawnSettings mobSettings; private final BiomeSpecialEffects specialEffects; - private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { -- Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { -- protected void rehash(int i) { -- } -- }; -- long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); -- return long2FloatLinkedOpenHashMap; -- })); + // Pufferfish start - use our cache + private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { -+ /* -+ Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { -+ protected void rehash(int i) { -+ } -+ }; -+ long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); -+ return long2FloatLinkedOpenHashMap; -+ */ -+ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); -+ // Pufferfish end -+ })); ++ /* + Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { + protected void rehash(int i) { + } + }; + long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); + return long2FloatLinkedOpenHashMap; ++ */ ++ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); ++ // Pufferfish end + })); Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { - this.climateSettings = weather; @@ -112,17 +117,15 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { @@ -3180,7 +3171,7 @@ index 37a0002bbe6539648db5219bb373e0404ae48dc0..ca0571d232e102c4b177a1ea44b96f5f } diff --git a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -index 1132658b063c6cd3feb1783ab4d5f5141ab75140..a971c3b079e76a16b0de24a827f71cde7944b7e1 100644 +index 1132658b063c6cd3feb1783ab4d5f5141ab75140..284c76ddb9724b44bb2e93f590685c728e843e6d 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java +++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java @@ -17,50 +17,69 @@ public class EntityCollisionContext implements CollisionContext { @@ -3224,13 +3215,13 @@ index 1132658b063c6cd3feb1783ab4d5f5141ab75140..a971c3b079e76a16b0de24a827f71cde - entity - ); + // Pufferfish start - remove this -+ /*this( -+ entity.isDescending(), -+ entity.getY(), -+ entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, -+ entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, -+ entity -+ );*/ ++ // this( ++ // entity.isDescending(), ++ // entity.getY(), ++ // entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, ++ // entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, ++ // entity ++ // ); + // Pufferfish end + this.entity = entity; } @@ -3268,7 +3259,7 @@ index 1132658b063c6cd3feb1783ab4d5f5141ab75140..a971c3b079e76a16b0de24a827f71cde @Override public boolean isAbove(VoxelShape shape, BlockPos pos, boolean defaultValue) { - return this.entityBottom > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; -+ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish ++ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > (double)pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish } @Nullable diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 78685ee03..cae584b75 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d 100644 +index 6464682e2f93659e73aca491031c8051ab000033..5a73aa17a963ae2d57e9bd5b5e3e5b0030d06216 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -86,7 +86,7 @@ public class PufferfishConfig { @@ -45,18 +45,9 @@ index f6a3364175476c57a7763a087ff55e1689474800..8b8fe02b9db5192a3adb8d4a3bb3c210 "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4bd83e1605fb6540be1847dc3691e74b95f260ad..7f5749c15f017624af11b81b497efd229b81efd9 100644 +index fbffe3dab1b7812b50df5d6bddf4fbdb2e583339..881ba370b098a4a202fbfb9c5c3d9304719d155e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -924,7 +924,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); - MinecraftServer.LOGGER.error(msg, throwable); - getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); -- entity.discard(); -+ entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Purpur - // Paper end - } - // Pufferfish end @@ -992,7 +992,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -67,7 +58,7 @@ index 4bd83e1605fb6540be1847dc3691e74b95f260ad..7f5749c15f017624af11b81b497efd22 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5298be16774b23b71d2de3b8697a758c73255912..f664ab1748aab367ae0c468cfd54dad3ade42ec3 100644 +index 1aa45e64e49ea011c2ba5e943b4e72c4f3a47176..6f7b34357788faecf8368cc9a27d26585935f789 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -93,14 +84,16 @@ index 837f68825f601971f374be47952b23108bf66ba6..2a8a8030feefae84e394460612405887 return; } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 15186884c67f8b75a6b40e244c8b18797f098fd1..d70b6dd93702fcd5590b19eceba0281ce39e9de4 100644 +index a82de7111915b19cdc3f065910465a5e7e843aff..fc32b6342b7553265f2a012f91f4dd9c0386f8f2 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -216,7 +216,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -215,8 +215,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + // Paper end public abstract ResourceKey getTypeKey(); - +- - protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter ++ + //protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter // Purpur - dont break ABI protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index a6c522650..db98cb9b3 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index 0405c868facdbe64537ef6be4d65e80cea929af0..276ecc5e497f92be0df386fc594311e6 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7f5749c15f017624af11b81b497efd229b81efd9..7d0a0ab955ec45f4883c987428722a4b647fcece 100644 +index 881ba370b098a4a202fbfb9c5c3d9304719d155e..4e67fcb6fb8e02f8ad1a356fc27e90f4c93c7862 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -349,7 +349,7 @@ index 4cf2963fdbe9003fd18ac8c2035ccded57c02abd..8b39ea90558dbd5356c038b74fa4037f + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index fe95cc1d931a5dfed45773b63c565e6036541a90..74d4f017484f13754a1f266625331a4124976afe 100644 +index 8d6954d05d2bf6d6c1c4953db3127b011a858cec..49c45a0987b8393a9c92ab756c721f17c232ddb1 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -24,14 +24,21 @@ public class AttributeMap { @@ -366,7 +366,7 @@ index fe95cc1d931a5dfed45773b63c565e6036541a90..74d4f017484f13754a1f266625331a41 + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; - this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish + this.createInstance = attributex -> this.supplier.createInstance(this::onAttributeModified, attributex); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { From 7377ee97feba64b12cf1f2ff7bb7a8164824b8f8 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 21 Apr 2024 14:39:56 -0700 Subject: [PATCH 092/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@862299b "Downgrade" Vineflower to 1.10.1 release (#10423) PaperMC/Paper@9e886c4 Remove dead code (LegacyResult) (#10411) PaperMC/Paper@3b078f8 Add API for ticking fluids (#10435) PaperMC/Paper@908b814 Fix inventory desync with PlayerLeashEntityEvent (#10436) PaperMC/Paper@3af1346 Allow setting player list name early PaperMC/Paper@a033033 Added chunk view API (#10398) PaperMC/Paper@c5f68ff Add CartographyItemEvent and get/setResult for CartographyInventory (#10396) PaperMC/Paper@fc53ff5 Add Configuration for finding Structures outside World Border (#10437) PaperMC/Paper@a6b6ecd More Raid API (#7537) --- build.gradle.kts | 5 +-- gradle.properties | 2 +- patches/api/0005-Purpur-client-support.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- .../api/0038-Add-local-difficulty-api.patch | 4 +- patches/api/0041-Debug-Marker-API.patch | 8 ++-- patches/api/0042-Add-death-screen-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 16 ++++---- .../server/0005-Purpur-client-support.patch | 4 +- patches/server/0008-Ridables.patch | 38 +++++++++---------- ...-Configurable-entity-base-attributes.patch | 14 +++---- patches/server/0012-AFK-API.patch | 12 +++--- .../0051-Implement-infinite-liquids.patch | 4 +- ...0059-Add-5-second-tps-average-in-tps.patch | 12 +++--- patches/server/0072-Entity-lifespan.patch | 6 +-- ...Stop-squids-floating-on-top-of-water.patch | 6 +-- ...e-entity-breeding-times-configurable.patch | 6 +-- ...0123-Add-EntityTeleportHinderedEvent.patch | 4 +- ...oggle-for-water-sensitive-mob-damage.patch | 14 +++---- ...172-API-for-any-mob-to-burn-daylight.patch | 4 +- .../0205-Extended-OfflinePlayer-API.patch | 4 +- .../0222-Mobs-always-drop-experience.patch | 14 +++---- .../0257-Add-local-difficulty-api.patch | 4 +- ...0258-Add-toggle-for-RNG-manipulation.patch | 6 +-- .../0260-Allow-custom-ChatDecorators.patch | 27 ------------- ...imings.patch => 0260-Remove-Timings.patch} | 14 +++---- ...atch => 0261-Remove-Mojang-Profiler.patch} | 20 +++++----- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0263-Add-Bee-API.patch} | 0 ...-API.patch => 0264-Debug-Marker-API.patch} | 8 ++-- ...g-option-to-ignore-creative-players.patch} | 0 ...66-Add-skeleton-bow-accuracy-option.patch} | 0 ...atch => 0267-Allay-respect-item-NBT.patch} | 0 ....patch => 0268-Add-death-screen-API.patch} | 4 +- ...-Make-pufferfish-config-relocatable.patch} | 2 +- ...0-Implement-ram-and-rambar-commands.patch} | 0 ...271-Add-item-packet-serialize-event.patch} | 6 +-- ...n-to-fix-MC-3304-projectile-looting.patch} | 0 ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0275-Language-API.patch} | 0 ... 0276-Milk-Keeps-Beneficial-Effects.patch} | 0 ...s-not-looking-up-and-down-when-stra.patch} | 2 +- ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0280-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 0 ...t.patch => 0282-Added-got-ram-event.patch} | 0 ... 0283-Log-skipped-entity-s-position.patch} | 0 ....patch => 0284-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 0 ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0289-Add-PreExplodeEvents.patch} | 0 ...0-Improve-output-of-plugins-command.patch} | 0 ...atch => 0291-Add-mending-multiplier.patch} | 0 ....patch => 0292-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0293-Stored-Bee-API.patch} | 0 ...patch => 0294-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0295-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 0 ...0299-place-end-crystal-on-any-block.patch} | 0 ...I.patch => 0300-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...2-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 4 +- 69 files changed, 130 insertions(+), 158 deletions(-) delete mode 100644 patches/server/0260-Allow-custom-ChatDecorators.patch rename patches/server/{0261-Remove-Timings.patch => 0260-Remove-Timings.patch} (98%) rename patches/server/{0262-Remove-Mojang-Profiler.patch => 0261-Remove-Mojang-Profiler.patch} (99%) rename patches/server/{0263-Add-more-logger-output-for-invalid-movement-kicks.patch => 0262-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0264-Add-Bee-API.patch => 0263-Add-Bee-API.patch} (100%) rename patches/server/{0265-Debug-Marker-API.patch => 0264-Debug-Marker-API.patch} (95%) rename patches/server/{0266-mob-spawning-option-to-ignore-creative-players.patch => 0265-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0267-Add-skeleton-bow-accuracy-option.patch => 0266-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0268-Allay-respect-item-NBT.patch => 0267-Allay-respect-item-NBT.patch} (100%) rename patches/server/{0269-Add-death-screen-API.patch => 0268-Add-death-screen-API.patch} (87%) rename patches/server/{0270-Make-pufferfish-config-relocatable.patch => 0269-Make-pufferfish-config-relocatable.patch} (96%) rename patches/server/{0271-Implement-ram-and-rambar-commands.patch => 0270-Implement-ram-and-rambar-commands.patch} (100%) rename patches/server/{0272-Add-item-packet-serialize-event.patch => 0271-Add-item-packet-serialize-event.patch} (94%) rename patches/server/{0273-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (100%) rename patches/server/{0274-Configurable-block-blast-resistance.patch => 0273-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0275-Configurable-block-fall-damage-modifiers.patch => 0274-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0276-Language-API.patch => 0275-Language-API.patch} (100%) rename patches/server/{0277-Milk-Keeps-Beneficial-Effects.patch => 0276-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0278-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (91%) rename patches/server/{0279-Add-log-suppression-for-LibraryLoader.patch => 0278-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0281-Fire-Immunity-API.patch => 0280-Fire-Immunity-API.patch} (100%) rename patches/server/{0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0283-Added-got-ram-event.patch => 0282-Added-got-ram-event.patch} (100%) rename patches/server/{0284-Log-skipped-entity-s-position.patch => 0283-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0285-End-Crystal-Cramming.patch => 0284-End-Crystal-Cramming.patch} (100%) rename patches/server/{0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0287-Add-attribute-clamping-and-armor-limit-config.patch => 0286-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0288-Config-to-remove-explosion-radius-clamp.patch => 0287-Config-to-remove-explosion-radius-clamp.patch} (100%) rename patches/server/{0289-bonemealable-sugarcane-cactus-and-netherwart.patch => 0288-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0290-Add-PreExplodeEvents.patch => 0289-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0291-Improve-output-of-plugins-command.patch => 0290-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0292-Add-mending-multiplier.patch => 0291-Add-mending-multiplier.patch} (100%) rename patches/server/{0293-Make-GUI-Great-Again.patch => 0292-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0294-Stored-Bee-API.patch => 0293-Stored-Bee-API.patch} (100%) rename patches/server/{0295-Shears-can-defuse-TNT.patch => 0294-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0296-Explorer-Map-API.patch => 0295-Explorer-Map-API.patch} (100%) rename patches/server/{0297-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0296-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0299-Add-option-for-always-showing-item-in-player-death-m.patch => 0298-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0300-place-end-crystal-on-any-block.patch => 0299-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0301-Add-hover-lines-API.patch => 0300-Add-hover-lines-API.patch} (100%) rename patches/server/{0302-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0301-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0303-register-minecraft-debug-commands.patch => 0302-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0304-Configurable-villager-search-radius.patch => 0303-Configurable-villager-search-radius.patch} (95%) diff --git a/build.gradle.kts b/build.gradle.kts index dd3c556fe..6212fb8f8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -58,7 +58,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.10.1:fat") - decompiler("org.vineflower:vineflower:1.11.0-20240412.144930-14") + decompiler("org.vineflower:vineflower:1.10.1") paperclip("io.papermc:paperclip:3.0.3") } @@ -66,10 +66,9 @@ paperweight { serverProject = project(":purpur-server") remapRepo = paperMavenPublicUrl - decompileRepo = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + decompileRepo = paperMavenPublicUrl usePaperUpstream(providers.gradleProperty("paperCommit")) { - withPaperPatcher { apiPatchDir = layout.projectDirectory.dir("patches/api") apiOutputDir = layout.projectDirectory.dir("Purpur-API") diff --git a/gradle.properties b/gradle.properties index 9c64c10dd..886b5f5ca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 4445d23544e0801fb6f658de98815ce0d8c04f58 +paperCommit = a6b6ecdd221b6ae7687561c84c1850aaa62473b4 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index 7cda0661f..a35ae5e97 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c6cb4f17469a8f2e60dd3e28d41402851ce5fb21..6692bc3bedf0f78a3b8cd937e1943d1113e51584 100644 +index d048ae07cc33fd77d128cc1ebf88b0804969fa3c..761abf496f8ef400460869d667afe2cf45ffb5f3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3711,4 +3711,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3752,4 +3752,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 769c440e0..b3944044a 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 6692bc3bedf0f78a3b8cd937e1943d1113e51584..654516bb7545d74a9e00efc154b5b75707038c96 100644 +index 761abf496f8ef400460869d667afe2cf45ffb5f3..95669dfc1de917f4d22242ceda94e64741221469 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3719,5 +3719,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3760,5 +3760,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0038-Add-local-difficulty-api.patch b/patches/api/0038-Add-local-difficulty-api.patch index 91b4d417b..81e7584d5 100644 --- a/patches/api/0038-Add-local-difficulty-api.patch +++ b/patches/api/0038-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 35fb5047dd8a8521586a9ca9f8d70881355fb7f5..bd1ceec96d354ddfeb7f79e6007b79c4da37a8bb 100644 +index e6f66d70d024cf4f0536a5bf8e51bf7b306335df..2d2d8a7494605e465c68b325d3043d334757e9bc 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4222,6 +4222,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4233,6 +4233,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0041-Debug-Marker-API.patch b/patches/api/0041-Debug-Marker-API.patch index 0efb071b2..4ca4b2bcb 100644 --- a/patches/api/0041-Debug-Marker-API.patch +++ b/patches/api/0041-Debug-Marker-API.patch @@ -179,10 +179,10 @@ index e318d4d5a1fec1522ef37aed2ed677952e50943b..c15b0b05870a469ea5d314c9fac6a57a // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index bd1ceec96d354ddfeb7f79e6007b79c4da37a8bb..c2fc3c7158b65a875515afda0d69e2d6529db976 100644 +index 2d2d8a7494605e465c68b325d3043d334757e9bc..07e75978b4fc0e446e8aa46a40be5e371dc1c11b 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4230,6 +4230,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4241,6 +4241,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); @@ -260,10 +260,10 @@ index bd1ceec96d354ddfeb7f79e6007b79c4da37a8bb..c2fc3c7158b65a875515afda0d69e2d6 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 654516bb7545d74a9e00efc154b5b75707038c96..f2aa9de6b1b6475435f72e9b7939fa7af9583ed3 100644 +index 95669dfc1de917f4d22242ceda94e64741221469..1fce58c500ad37a3f4d0b8a3bf18ccb149058dcd 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3739,5 +3739,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3780,5 +3780,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0042-Add-death-screen-API.patch b/patches/api/0042-Add-death-screen-API.patch index cb8d877ed..b0fe2b51a 100644 --- a/patches/api/0042-Add-death-screen-API.patch +++ b/patches/api/0042-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index f2aa9de6b1b6475435f72e9b7939fa7af9583ed3..5d22249f7bc98bc88ee798974f481c37807f7c5e 100644 +index 1fce58c500ad37a3f4d0b8a3bf18ccb149058dcd..8bbbdad40bc6a1932d8f79ec95c0a92037b3dac5 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3809,5 +3809,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3850,5 +3850,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 54c10ae08..40944d98b 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1489,7 +1489,7 @@ index 0af9ed92824ccf30814eceb6a2c2e5c12661c991..67eeb39aede6908d2756e49821ca350e } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 27db614d46dffc2d10f18d79cc5a084f3421d86b..c1c97130adf4b7bcb5b2470fc12b79da1d837686 100644 +index 2dc07e5ef249636e85ad9c78e3729e9e066a8fe8..b9e0a32f5829ca15f949effcafcbe2a975f6f690 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 ? -m : 1 - m) { for (int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { mutableBlockPos.setWithOffset(blockPos, m, k - 1, n); @@ -2745,7 +2745,7 @@ index da7489986848316fed029b71d1bc4e1248c9c9a8..661acdf4b1f33d150b0caf179e925d31 return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index b865115dc5a8c000521abf668251ab1bd8104505..42af3888a155f114901a90d4028bafed5789f58f 100644 +index 64076a452a315090d299a7a58a43fd3b5c1b4e0a..0c317b0147a73a8075e0883f0c132f4db0bdfea7 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java @@ -63,13 +63,18 @@ public final class Biome { @@ -3171,7 +3171,7 @@ index 37a0002bbe6539648db5219bb373e0404ae48dc0..ca0571d232e102c4b177a1ea44b96f5f } diff --git a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -index 1132658b063c6cd3feb1783ab4d5f5141ab75140..284c76ddb9724b44bb2e93f590685c728e843e6d 100644 +index 88a4a72bb390947dc17e5da09a99b2d1b3ac4621..284c76ddb9724b44bb2e93f590685c728e843e6d 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java +++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java @@ -17,50 +17,69 @@ public class EntityCollisionContext implements CollisionContext { @@ -3258,7 +3258,7 @@ index 1132658b063c6cd3feb1783ab4d5f5141ab75140..284c76ddb9724b44bb2e93f590685c72 @Override public boolean isAbove(VoxelShape shape, BlockPos pos, boolean defaultValue) { -- return this.entityBottom > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; +- return this.entityBottom > (double)pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; + return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > (double)pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish } diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index 1fe4bcede..f2cc78bc6 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -43,10 +43,10 @@ index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..34559eae0ea3f88d7b9a3c9e4a2350c4 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e77bf7f432387bdfa7f69d31b014e8cd254fd4ca..6a558a7042b78e8de7fc637053468ac9029b4133 100644 +index 44f4665db613c558078df5bb49106e4ca5679dfe..5da7b468af3dd19491f38140f303e55b7cab21db 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3425,4 +3425,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3456,4 +3456,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { this.getHandle().setSendViewDistance(viewDistance); } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index db98cb9b3..b26c940c2 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,7 +22,7 @@ index 70f9e737b3b9f80395afc3542aafe4a0c774c722..70fa9893c7af6387df9e5c33be21653e super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0405c868facdbe64537ef6be4d65e80cea929af0..276ecc5e497f92be0df386fc594311e630018191 100644 +index 9094dacbdac148062f9f600556fe6588a6ae75f9..4dc2e55fb12c184b0fb8fe1e638f0e082b201192 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1712,6 +1712,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 5247f1134db2cbaf412cfe583b67cfe4d58dc967..fe546baadc2e238667386c494359ddf904dd41e5 100644 +index 6e9e86b6d547d7437c990b65718b95ad0d60f020..3ec6caf965c9a69eb56e507e2c452129064d3c68 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -65,6 +65,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder @@ -2446,7 +2446,7 @@ index 8c14f9f2ad383f87c498126f135b460a241da410..5242059484fb5f407a2da2b0c01a8fee 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 f3ba42437e50cd19ad12d00a39c3f92544137fbd..6503f68345d931ac73e8291add6ed108c10ceb60 100644 +index 2181d74ad955197eb4f1925a64914a6197fa9023..5efed70522657c2a02f869affc6755332082cf97 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 @@ -40,6 +40,13 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -2462,7 +2462,7 @@ index f3ba42437e50cd19ad12d00a39c3f92544137fbd..6503f68345d931ac73e8291add6ed108 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); + 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 6623674136b0f865d5b3d7a10d3bf05793b82f87..1c6be506804b9622c4d0094814939f894ca857df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -3056,7 +3056,7 @@ index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..9d259d7e2aa3e44e350eb5927314cfce this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 2d4399a4dba754704c873f088fb4fc1a7fc56ef1..929074db505e0838a9b133228f81cad87bdab5fb 100644 +index 58c2b8b8bfd5a40259aa6252243884d14c183ef2..b48bb11029e2726cde2e8f624b8c1ad159740e3a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -32,6 +32,7 @@ public class Blaze extends Monster { @@ -3779,7 +3779,7 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910c this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 2ae1e5d2b16322136983d6703b770bfc3602b6eb..6c4422adf858595a740f6f8758db18859dc33004 100644 +index c4b4ff79bfdf9e34bf73a7760369e24b28dbbd70..b60e01a6cfce467f2e0a95a52f5ad7379d9fe574 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -25,6 +25,28 @@ public class MagmaCube extends Slime { @@ -3818,8 +3818,8 @@ index 2ae1e5d2b16322136983d6703b770bfc3602b6eb..6c4422adf858595a740f6f8758db1885 - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public Vec3 vec3 = this.getDeltaMovement(); - float f = this.getSize() * 0.1F; - this.setDeltaMovement(vec3.x, this.getJumpPower() + f, vec3.z); + float f = (float)this.getSize() * 0.1F; + this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + f), vec3.z); this.hasImpulse = true; + this.actualJump = false; // Purpur } diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 9c9f762d1..821f29b68 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -299,7 +299,7 @@ index ebfa162f172bdad7b17ce153fdee508748620fc0..fdf5651c7877313437ecd32914823d00 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index c737eea79621d565b5bbd28e22fa0731c3ed6068..5e6941abe1372ea4cba893de36ab20d2a3a42a21 100644 +index a1195a7465883b944bd12a793701e4774944be68..a681042dac350be5f5828508a7eefbc473376a94 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -93,6 +93,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -395,7 +395,7 @@ index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 423c67f6d0faac7e46bdbe7f5bc3076a687fbb73..43bd8c55368d0bb1dca3a16ea4e0b1d6452be0cd 100644 +index 7b6e1f5a44a5a690dca97693bb053d3186ff1b69..9f598ff84b836d10e215c7e8fe79735f7f41e32b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { @@ -411,7 +411,7 @@ index 423c67f6d0faac7e46bdbe7f5bc3076a687fbb73..43bd8c55368d0bb1dca3a16ea4e0b1d6 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index fe546baadc2e238667386c494359ddf904dd41e5..3d40df730780fcc91c3a352c7572e60458fc5bb0 100644 +index 3ec6caf965c9a69eb56e507e2c452129064d3c68..b8b4ca31ad2fc5292082905c979a974a4ed42dab 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -77,6 +77,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder @@ -587,7 +587,7 @@ index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d 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 6503f68345d931ac73e8291add6ed108c10ceb60..5183ac5534b77230f04734264eadbb8d3f0ff7ef 100644 +index 5efed70522657c2a02f869affc6755332082cf97..2971b868210ffb3390d19c7f8079fcc60f7d00b0 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 @@ -47,6 +47,21 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -611,7 +611,7 @@ index 6503f68345d931ac73e8291add6ed108c10ceb60..5183ac5534b77230f04734264eadbb8d + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); + 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 1c6be506804b9622c4d0094814939f894ca857df..34d87ab749a62c5d897b7bc66b116a801324b6a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -800,7 +800,7 @@ index 8fbfd134005c0813406fecbce8a918cd0376d03e..51ccbf3bd77bbcf77833b39fadc6c01f } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 929074db505e0838a9b133228f81cad87bdab5fb..7b55851008f711a5968fcdf94c0ad18bcd6cf9ee 100644 +index b48bb11029e2726cde2e8f624b8c1ad159740e3a..cfd7d5caeb8bacc5ce314bd700cb21e98a9f667b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -74,6 +74,11 @@ public class Blaze extends Monster { @@ -1022,7 +1022,7 @@ index 4d50d10016a3b574d67bdfec5aee910cede8ffc3..c00530db0eff302c14dd9c52d1d988cb protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 6c4422adf858595a740f6f8758db18859dc33004..8cdce384f6d191231012788f27753f0f03753460 100644 +index b60e01a6cfce467f2e0a95a52f5ad7379d9fe574..79264a538b64a473b5a50aa87011f1f6db617525 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -47,6 +47,26 @@ public class MagmaCube extends Slime { diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 3f2b87fe5..73d14122d 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,7 +78,7 @@ index afca9734927fd003e249972439494c561f0c0966..c0c7aca4bc56b59dc0a450bd370cb3c0 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d9f24bcc2f5eaabc49f6a9ec545afe2d096fc532..65e64b69e36d3089589a1ac76dac97694532e9a6 100644 +index ccf2ab27e73903ee4ae5e60838d694ed4ccad79c..cb5fc10f7ca81f608cdbd5a3f2554c3163f88fd4 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -177,7 +177,7 @@ index d8cc5614502db7025349e085381b6b32ad32296a..f1b9e83206cc67e6ef29ebe088351b0a private EntitySelector() {} // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 2848f0562de085c0c934455c12d785194b7a9dbf..cdae57e08d337b5790df3512d3ca0ae1f859e646 100644 +index 28cff997a1b263784e245f692adbff2a888a2d53..13b8141bdb2a1663431be645eb091f9e7638f3d0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -223,10 +223,10 @@ index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452aba if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 6a558a7042b78e8de7fc637053468ac9029b4133..5cb6572563bad1ef5ed755f94c5d0a854867406f 100644 +index 5da7b468af3dd19491f38140f303e55b7cab21db..8fec2e517cc57940348f4bee33212a9aae34b102 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -488,10 +488,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -489,10 +489,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -240,10 +240,10 @@ index 6a558a7042b78e8de7fc637053468ac9029b4133..5cb6572563bad1ef5ed755f94c5d0a85 } - this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name); + this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur + if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { - player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3431,5 +3436,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3462,5 +3467,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0051-Implement-infinite-liquids.patch b/patches/server/0051-Implement-infinite-liquids.patch index a2c5974bd..8b4792eff 100644 --- a/patches/server/0051-Implement-infinite-liquids.patch +++ b/patches/server/0051-Implement-infinite-liquids.patch @@ -49,10 +49,10 @@ index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff protected boolean canConvertToSource(Level world) { return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -index ba34aea9db5c3af56f3c7e84424ec91988a2370e..7987279e17db64587aa6d126b46359ccd06f109d 100644 +index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe6098485d 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -@@ -74,6 +74,13 @@ public abstract class WaterFluid extends FlowingFluid { +@@ -80,6 +80,13 @@ public abstract class WaterFluid extends FlowingFluid { return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index d18374a3c..98a1625ec 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -18,7 +18,7 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53cc } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f541b9e78f365518761fd8d3460277d457d769c0..ea07433bc4ab7ee032cf4eef5190ab932079c84f 100644 +index 62e715755137426ed2bc7abae148fadc247da239..14c349464970f8f9486e62c26854b87833d3df04 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -392,7 +392,7 @@ index 5183ac5534b77230f04734264eadbb8d3f0ff7ef..9ed68d07590b6371b6a6ffdd0be39d7a + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); + 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 b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660..e11fc274f893d501235422839301a5128268199d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java diff --git a/patches/server/0123-Add-EntityTeleportHinderedEvent.patch b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch index df326836f..1c27d45f5 100644 --- a/patches/server/0123-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch @@ -89,10 +89,10 @@ index 85d154f18e240cac77e023b4b5983ad7a95912b5..cac42202295b16de0466216f64be4fdf } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5cb6572563bad1ef5ed755f94c5d0a854867406f..aad02ebc0df97e6e7024add8fce149b54124a58b 100644 +index 8fec2e517cc57940348f4bee33212a9aae34b102..4e999cec1a004529a4bcd2f0ae63b3731bcac8f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1356,6 +1356,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1358,6 +1358,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch index 4b99e223d..49eeb9bf2 100644 --- a/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch @@ -254,7 +254,7 @@ index d858d4c94fb17d14367672813b506aea9e2e4ee1..f32cc2884696db956e10d350f9737602 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 545e0bfcd602752ad514443917f3015a09a4adcc..a1747c6495286dfa13543d698d00d4cf410f74c1 100644 +index 95c85ddd8008f2d87000f1580287533656a8f0ca..a3043a46b291b22c0e93ed680e4f455f47ae74be 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -124,6 +124,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -347,7 +347,7 @@ index 1d70a108293a61b7813b70cc9ce600a3e7b167d5..d46ab4d56e4c34b4dbe7a3df0785ab87 @Override 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 65d0e602a9cab5d51d1a27f690524ddad72bd2a5..ad2a3e593d2376556ca44ebf4539efe7382e1483 100644 +index 871f9a47247ba8134ecc39cd98a35011a5b009e4..daa4931c934c792b3c4ff32b730506762c4cf481 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -90,6 +90,11 @@ public class Squid extends WaterAnimal { @@ -363,7 +363,7 @@ index 65d0e602a9cab5d51d1a27f690524ddad72bd2a5..ad2a3e593d2376556ca44ebf4539efe7 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 3d40df730780fcc91c3a352c7572e60458fc5bb0..9c860b3091c991b0c1447860311097a5fc1df685 100644 +index b8b4ca31ad2fc5292082905c979a974a4ed42dab..1f83844da76ee6e158f1ba3656ba90d6eff1895c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -82,6 +82,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder @@ -459,7 +459,7 @@ index 5b0b7c6bcd01d86552f1967489c5538780b69525..92fccfde550f4a01f860e3bcfcf953d3 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 9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4..13c2fe236661c42b5b45e2870d0cb59a890196cd 100644 +index 02748a7fdf41529fb86e916ae421a1317e1c3c7f..8e4c3c01613a8944095a099427eb12ced32987a1 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 @@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -473,7 +473,7 @@ index 9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4..13c2fe236661c42b5b45e2870d0cb59a + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); + 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 e11fc274f893d501235422839301a5128268199d..fb2b0ebd9314ab7fc911e842767bd60b1db92b96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -587,7 +587,7 @@ index 3cc47b0e05621c913a3e8d04c653bafab4a86744..db5a8b93b9cefca4566d3abc2b4c55d4 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 7b55851008f711a5968fcdf94c0ad18bcd6cf9ee..e8427b486efdea67079a40e2e001c0a3401711b2 100644 +index cfd7d5caeb8bacc5ce314bd700cb21e98a9f667b..8c6f5dcd2135873da7d58066c63a2b8378f81d31 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -33,7 +33,7 @@ public class Blaze extends Monster { @@ -807,7 +807,7 @@ index c00530db0eff302c14dd9c52d1d988cbdd93e5a1..43d4cea02ae94a8842cd4c1370d1b80e protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 8cdce384f6d191231012788f27753f0f03753460..f3925c70fc9f1fd0764058b1f2b1f050394c20ce 100644 +index 79264a538b64a473b5a50aa87011f1f6db617525..607ca8389746062ffba29b25ddab4ac02685b506 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -67,6 +67,11 @@ public class MagmaCube extends Slime { diff --git a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch b/patches/server/0172-API-for-any-mob-to-burn-daylight.patch index 961e0b2d3..f5ee53f14 100644 --- a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0172-API-for-any-mob-to-burn-daylight.patch @@ -92,10 +92,10 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 56ba7ac3d9d1f65de84f98eb724761d6bb374d47..380834677c93a23879a9e53173fa835ebd22f584 100644 +index a7d475b69bc9f15cf32f297f808246ff69402fb5..4182a146dcad83d141cd5bacdbfc39d912360c40 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1766,17 +1766,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1767,17 +1767,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { diff --git a/patches/server/0205-Extended-OfflinePlayer-API.patch b/patches/server/0205-Extended-OfflinePlayer-API.patch index 4a56ad7ab..1f61bcad4 100644 --- a/patches/server/0205-Extended-OfflinePlayer-API.patch +++ b/patches/server/0205-Extended-OfflinePlayer-API.patch @@ -243,10 +243,10 @@ index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index aad02ebc0df97e6e7024add8fce149b54124a58b..b90774a6c6041b3317b33d18a31ec2ab4eee1725 100644 +index 4e999cec1a004529a4bcd2f0ae63b3731bcac8f2..4a04c56371a2d9772fb542ffac5b9b98cbf1e86a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2668,6 +2668,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2670,6 +2670,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0222-Mobs-always-drop-experience.patch b/patches/server/0222-Mobs-always-drop-experience.patch index 0ab90ff1b..2f040e2da 100644 --- a/patches/server/0222-Mobs-always-drop-experience.patch +++ b/patches/server/0222-Mobs-always-drop-experience.patch @@ -245,7 +245,7 @@ index f32cc2884696db956e10d350f97376025e32e673..10d6361077a74c5685eca72d12f99e33 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index a1747c6495286dfa13543d698d00d4cf410f74c1..20b969764c0552a1f44eaf187390cf37bf8bfe3b 100644 +index a3043a46b291b22c0e93ed680e4f455f47ae74be..2fecdd574b407eeb1d0cd4f1b34ff7931e620540 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -129,6 +129,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -341,7 +341,7 @@ index 81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d..df8e19a3adfa7dcc065160e8305d0f12 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index ad2a3e593d2376556ca44ebf4539efe7382e1483..a6b24a042bd75555895d5404b155154c1d994d57 100644 +index daa4931c934c792b3c4ff32b730506762c4cf481..fa15e43d19482125e1793e049d1a1380aced906c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -95,6 +95,11 @@ public class Squid extends WaterAnimal { @@ -357,7 +357,7 @@ index ad2a3e593d2376556ca44ebf4539efe7382e1483..a6b24a042bd75555895d5404b155154c protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 9c860b3091c991b0c1447860311097a5fc1df685..bb0c18cea03e238d49312e428373cd3186756bd3 100644 +index 1f83844da76ee6e158f1ba3656ba90d6eff1895c..98205d89aa0cca82863257abfad46ab834385a20 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -87,6 +87,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder @@ -453,7 +453,7 @@ index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83 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 13c2fe236661c42b5b45e2870d0cb59a890196cd..a77ffe2bd6ecce5433a72f96ba43c2a9401a1378 100644 +index 8e4c3c01613a8944095a099427eb12ced32987a1..eab6efcae632a393924d7245a71c40b57c6e316d 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 @@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -467,7 +467,7 @@ index 13c2fe236661c42b5b45e2870d0cb59a890196cd..a77ffe2bd6ecce5433a72f96ba43c2a9 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); + 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 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -565,7 +565,7 @@ index 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce2 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index e8427b486efdea67079a40e2e001c0a3401711b2..efc25f256134f812d0a7ccd63ecdda899cba14dc 100644 +index 8c6f5dcd2135873da7d58066c63a2b8378f81d31..c31d2ab0ed3693cd8334b5bbde1f565fff7c9162 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -79,6 +79,11 @@ public class Blaze extends Monster { @@ -773,7 +773,7 @@ index 43d4cea02ae94a8842cd4c1370d1b80e45d2b13c..a8b3431c67442c5440b063426a1adc42 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index f3925c70fc9f1fd0764058b1f2b1f050394c20ce..aae0bc60befb0504ee39bdd363f81686927483d6 100644 +index 607ca8389746062ffba29b25ddab4ac02685b506..1bfd5ef9ce8a07375ff215d092368c3f5104ab13 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -72,6 +72,11 @@ public class MagmaCube extends Slime { diff --git a/patches/server/0257-Add-local-difficulty-api.patch b/patches/server/0257-Add-local-difficulty-api.patch index 93b6068bc..d33da05e7 100644 --- a/patches/server/0257-Add-local-difficulty-api.patch +++ b/patches/server/0257-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 01797d9791f19dfda4b168218eadeaae97f11eab..6084fe6fd3fa2c122cb3d764a4a61287b9a20375 100644 +index 00357d78182b3ff87e3d9a45705b072af56739c8..06abe25b335606b42ac2a7b5551f0c9e7143a474 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2408,6 +2408,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2416,6 +2416,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0258-Add-toggle-for-RNG-manipulation.patch b/patches/server/0258-Add-toggle-for-RNG-manipulation.patch index 538ac6444..0fd9e65a7 100644 --- a/patches/server/0258-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0258-Add-toggle-for-RNG-manipulation.patch @@ -20,15 +20,15 @@ index 2cac12d2b788b0962b719a83b43dc23177b76ac6..ec6187bc3f445acb86e69161ab1b8224 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); 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 a6b24a042bd75555895d5404b155154c1d994d57..4c607abf5e6235b2f325cf9eff1676f565d251f5 100644 +index fa15e43d19482125e1793e049d1a1380aced906c..38d1eb5680281b2812f2396677ffb959a6e089ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -44,7 +44,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); -- //this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random -+ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random // Purpur +- //this.random.setSeed((long)this.getId()); // Paper - Share random for entities to make them more random ++ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed((long)this.getId()); // Paper - Share random for entities to make them more random // Purpur this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/patches/server/0260-Allow-custom-ChatDecorators.patch b/patches/server/0260-Allow-custom-ChatDecorators.patch deleted file mode 100644 index 09fd7fd7e..000000000 --- a/patches/server/0260-Allow-custom-ChatDecorators.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Mon, 11 Jul 2022 20:44:19 -0500 -Subject: [PATCH] Allow custom ChatDecorators - -Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. - -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1e017c7c33fd70803312efdd61e090cb8aaf2254..98c49c3844edfb52d5b1ff32fa5e49d46fa8a20c 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2859,6 +2859,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - final io.papermc.paper.adventure.ChatDecorationProcessor processor = new io.papermc.paper.adventure.ChatDecorationProcessor(this, sender, commandSourceStack, message); diff --git a/patches/server/0261-Remove-Timings.patch b/patches/server/0260-Remove-Timings.patch similarity index 98% rename from patches/server/0261-Remove-Timings.patch rename to patches/server/0260-Remove-Timings.patch index 5de534ff1..d63b5a6c6 100644 --- a/patches/server/0261-Remove-Timings.patch +++ b/patches/server/0260-Remove-Timings.patch @@ -56,7 +56,7 @@ index 83302c252f54481f239522e5c6861ccfe233070a..620edb63cacd15e38f7fc859efd4095b } catch (Exception exception) { label25: diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 98c49c3844edfb52d5b1ff32fa5e49d46fa8a20c..ff08e054d3ea168011a9f7f01e106721449d5e21 100644 +index 71fca0aae67c632198625cbec4381afeff7771be..0b1f9a51aaf97c3fb8a68bb7141ff76430d3b1a5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1439,7 +1439,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements BehaviorContro this.status = Behavior.Status.RUNNING; int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration); - this.endTimestamp = time + i; + this.endTimestamp = time + (long)i; - this.timing.startTiming(); // Paper - behavior timings + //this.timing.startTiming(); // Paper - behavior timings // Purpur this.start(world, entity, time); @@ -715,7 +715,7 @@ index 0a2e894d8bd1268fcbd4460745304816be46beff..1387930c5d3ecb430d73f3bdc0968fd0 protected void tick(ServerLevel world, E entity, long time) { diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index de2dfaf3cb41bafd48fa4699096a0a7304cd3201..f5ee1a4cc4aa85d14008900efb48204917259b09 100644 +index 9e90cb2f51d1bacacb287e912d14ab9152523205..e553f52de2e0b30511ac1b73cb436374017cd7d7 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java @@ -53,10 +53,10 @@ public abstract class Sensor { @@ -732,7 +732,7 @@ index de2dfaf3cb41bafd48fa4699096a0a7304cd3201..f5ee1a4cc4aa85d14008900efb482049 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 02b2cd49c2db6ba1688f6862e2c791947cec2fcf..c5bd99e63925ec27b89b3ca00583b5c8a8a74628 100644 +index 9e896ede9f84568b5675e04294bb9b6a8d016324..ea9b33eb48d8610943d122811cc49d211bc22d86 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1317,15 +1317,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0262-Remove-Mojang-Profiler.patch b/patches/server/0261-Remove-Mojang-Profiler.patch similarity index 99% rename from patches/server/0262-Remove-Mojang-Profiler.patch rename to patches/server/0261-Remove-Mojang-Profiler.patch index 75986b086..3f5796f0f 100644 --- a/patches/server/0262-Remove-Mojang-Profiler.patch +++ b/patches/server/0261-Remove-Mojang-Profiler.patch @@ -83,7 +83,7 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ff08e054d3ea168011a9f7f01e106721449d5e21..5a736a99e97003506cedc697d7b33105d6fe40be 100644 +index 0b1f9a51aaf97c3fb8a68bb7141ff76430d3b1a5..4611116f3328c0f8d5b37c8765feca36b2448ffe 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -341,13 +341,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getAvailableGoals() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index dafacdb43de86d328194dcfef284286fceb3754f..8a6d716706bfcd551125ac1e69dfec6989196e82 100644 +index e3a7eaf31ab19cc9f23a0c87649b74bb42976cb4..e12cf130678bda7c1f5873cb03172a698e18fc85 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -172,12 +172,12 @@ public abstract class PathNavigation { @@ -1493,7 +1493,7 @@ index dafacdb43de86d328194dcfef284286fceb3754f..8a6d716706bfcd551125ac1e69dfec69 - this.level.getProfiler().push("pathfind"); + //this.level.getProfiler().push("pathfind"); // Purpur BlockPos blockPos = useHeadPos ? this.mob.blockPosition().above() : this.mob.blockPosition(); - int i = (int)(followRange + range); + int i = (int)(followRange + (float)range); PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i)); Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier); - this.level.getProfiler().pop(); @@ -1686,7 +1686,7 @@ index c1125279b80bad8d7b6b273e709c412a0a578318..abafb15ab1294e11810798795bd103fb } diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index 6b410d03e1fbba233a0cb2b9d1bfab6d0311230e..a1fd6f9cf367c8eb8c3def24262908778c3a4cbc 100644 +index b5ef8d9e55656100085a4d9858c3530bb08d3c16..aa27c014ce53e2dd49f02d413d5c4d763261a803 100644 --- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java @@ -202,10 +202,10 @@ public class Breeze extends Monster { @@ -1816,7 +1816,7 @@ index 90a82bd7977ebe520bdcc2ab99e11452d5cf4a21..5dcfb077fc58a92f32425aaafb82d6b4 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c5bd99e63925ec27b89b3ca00583b5c8a8a74628..597f49fb213899c4da654d83557d2a18ef256288 100644 +index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58dbfc645c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1314,9 +1314,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1930,7 +1930,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index c4d6b145d54aaf415dd4b08811c024255092e1b8..7bdcbfa4fcefb7d8230756a55b774e3834290e64 100644 +index d1e1f12451058f7f276f8277536a4c0a4d736601..2046ac397f5c46cc45f233e36abbdbe717753fc7 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java @@ -53,8 +53,8 @@ public class PathFinder { @@ -1954,7 +1954,7 @@ index c4d6b145d54aaf415dd4b08811c024255092e1b8..7bdcbfa4fcefb7d8230756a55b774e38 // Paper end - Perf: remove streams and optimize collection } diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -index d411753b50544c2a949eb71e86fc7aa811cf9f71..fb8f0168aa878708e2910fa651140ce49eaf0475 100644 +index 7a69564572357a7acc043e35b9c113beeb738951..a6d62abd3102770652f914b9d697c6d3c2533cfc 100644 --- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java +++ b/src/main/java/net/minecraft/world/ticks/LevelTicks.java @@ -81,20 +81,20 @@ public class LevelTicks implements LevelTickAccess { diff --git a/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch index 877965d2c..38adc0de0 100644 --- a/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 54c5eb489e27524c58e1dbc589f5f545d6d46fdd..8a935e5dec455250dbb967275648f51042288f48 100644 +index fdbdaa1d8d5760c5c661cbeca803e8ff8ec46aac..872be72e24017fdcb3060f6e4e9a92c342d59fc1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0264-Add-Bee-API.patch b/patches/server/0263-Add-Bee-API.patch similarity index 100% rename from patches/server/0264-Add-Bee-API.patch rename to patches/server/0263-Add-Bee-API.patch diff --git a/patches/server/0265-Debug-Marker-API.patch b/patches/server/0264-Debug-Marker-API.patch similarity index 95% rename from patches/server/0265-Debug-Marker-API.patch rename to patches/server/0264-Debug-Marker-API.patch index 9a9aa213f..d677dbccf 100644 --- a/patches/server/0265-Debug-Marker-API.patch +++ b/patches/server/0264-Debug-Marker-API.patch @@ -52,10 +52,10 @@ index 14e60675d23f9696fd8f64eb026fcd0b82b498f0..659450d3538cc1499fd427868159e8c3 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 6084fe6fd3fa2c122cb3d764a4a61287b9a20375..b5222519f646b303ea7f2b914f749df815489937 100644 +index 06abe25b335606b42ac2a7b5551f0c9e7143a474..69c12d9049af908380c48c7f13d3d5c7220f8e39 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2412,6 +2412,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2420,6 +2420,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 6084fe6fd3fa2c122cb3d764a4a61287b9a20375..b5222519f646b303ea7f2b914f749df8 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b90774a6c6041b3317b33d18a31ec2ab4eee1725..df29cf6f856f7560500f8bca39e9b12a64663b7a 100644 +index 4a04c56371a2d9772fb542ffac5b9b98cbf1e86a..9d2b39e871c83ab7af9c2cbde08e560006fcb005 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3477,5 +3477,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3508,5 +3508,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0265-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0265-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0267-Add-skeleton-bow-accuracy-option.patch b/patches/server/0266-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0267-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0266-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0268-Allay-respect-item-NBT.patch b/patches/server/0267-Allay-respect-item-NBT.patch similarity index 100% rename from patches/server/0268-Allay-respect-item-NBT.patch rename to patches/server/0267-Allay-respect-item-NBT.patch diff --git a/patches/server/0269-Add-death-screen-API.patch b/patches/server/0268-Add-death-screen-API.patch similarity index 87% rename from patches/server/0269-Add-death-screen-API.patch rename to patches/server/0268-Add-death-screen-API.patch index d1e21874d..d8f90eb6d 100644 --- a/patches/server/0269-Add-death-screen-API.patch +++ b/patches/server/0268-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index df29cf6f856f7560500f8bca39e9b12a64663b7a..f3ae9a2d594a90c128402af57bc9536a136e7395 100644 +index 9d2b39e871c83ab7af9c2cbde08e560006fcb005..fb2d05e43df3bfb72b1f6e325736dd3cbc6c3096 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3515,5 +3515,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3546,5 +3546,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0270-Make-pufferfish-config-relocatable.patch b/patches/server/0269-Make-pufferfish-config-relocatable.patch similarity index 96% rename from patches/server/0270-Make-pufferfish-config-relocatable.patch rename to patches/server/0269-Make-pufferfish-config-relocatable.patch index e3a3ff88f..c81d41c1e 100644 --- a/patches/server/0270-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0269-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d..7178a742e5a9d65e6438ae338541848684f1f480 100644 +index 5a73aa17a963ae2d57e9bd5b5e3e5b0030d06216..8afc58f35deb49084a20b803e91ce4692ce6e4d6 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { diff --git a/patches/server/0271-Implement-ram-and-rambar-commands.patch b/patches/server/0270-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0271-Implement-ram-and-rambar-commands.patch rename to patches/server/0270-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0272-Add-item-packet-serialize-event.patch b/patches/server/0271-Add-item-packet-serialize-event.patch similarity index 94% rename from patches/server/0272-Add-item-packet-serialize-event.patch rename to patches/server/0271-Add-item-packet-serialize-event.patch index 9a7f225ca..81f4367ab 100644 --- a/patches/server/0272-Add-item-packet-serialize-event.patch +++ b/patches/server/0271-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..bdcfd80f937c34956911373905d66424 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5a736a99e97003506cedc697d7b33105d6fe40be..a1876ec72ff38f465662aded3608c588be34ca2d 100644 +index 4611116f3328c0f8d5b37c8765feca36b2448ffe..60b5e0643d933393b5473681ac9261db29fe2416 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1731,6 +1731,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop extends Go diff --git a/patches/server/0279-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0278-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0279-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0278-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0281-Fire-Immunity-API.patch b/patches/server/0280-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0281-Fire-Immunity-API.patch rename to patches/server/0280-Fire-Immunity-API.patch diff --git a/patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 100% rename from patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch diff --git a/patches/server/0283-Added-got-ram-event.patch b/patches/server/0282-Added-got-ram-event.patch similarity index 100% rename from patches/server/0283-Added-got-ram-event.patch rename to patches/server/0282-Added-got-ram-event.patch diff --git a/patches/server/0284-Log-skipped-entity-s-position.patch b/patches/server/0283-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0284-Log-skipped-entity-s-position.patch rename to patches/server/0283-Log-skipped-entity-s-position.patch diff --git a/patches/server/0285-End-Crystal-Cramming.patch b/patches/server/0284-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0285-End-Crystal-Cramming.patch rename to patches/server/0284-End-Crystal-Cramming.patch diff --git a/patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0286-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0286-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0288-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0287-Config-to-remove-explosion-radius-clamp.patch similarity index 100% rename from patches/server/0288-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0287-Config-to-remove-explosion-radius-clamp.patch diff --git a/patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0290-Add-PreExplodeEvents.patch b/patches/server/0289-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0290-Add-PreExplodeEvents.patch rename to patches/server/0289-Add-PreExplodeEvents.patch diff --git a/patches/server/0291-Improve-output-of-plugins-command.patch b/patches/server/0290-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0291-Improve-output-of-plugins-command.patch rename to patches/server/0290-Improve-output-of-plugins-command.patch diff --git a/patches/server/0292-Add-mending-multiplier.patch b/patches/server/0291-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0292-Add-mending-multiplier.patch rename to patches/server/0291-Add-mending-multiplier.patch diff --git a/patches/server/0293-Make-GUI-Great-Again.patch b/patches/server/0292-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0293-Make-GUI-Great-Again.patch rename to patches/server/0292-Make-GUI-Great-Again.patch diff --git a/patches/server/0294-Stored-Bee-API.patch b/patches/server/0293-Stored-Bee-API.patch similarity index 100% rename from patches/server/0294-Stored-Bee-API.patch rename to patches/server/0293-Stored-Bee-API.patch diff --git a/patches/server/0295-Shears-can-defuse-TNT.patch b/patches/server/0294-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0295-Shears-can-defuse-TNT.patch rename to patches/server/0294-Shears-can-defuse-TNT.patch diff --git a/patches/server/0296-Explorer-Map-API.patch b/patches/server/0295-Explorer-Map-API.patch similarity index 100% rename from patches/server/0296-Explorer-Map-API.patch rename to patches/server/0295-Explorer-Map-API.patch diff --git a/patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0298-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0298-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0300-place-end-crystal-on-any-block.patch b/patches/server/0299-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0300-place-end-crystal-on-any-block.patch rename to patches/server/0299-place-end-crystal-on-any-block.patch diff --git a/patches/server/0301-Add-hover-lines-API.patch b/patches/server/0300-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0301-Add-hover-lines-API.patch rename to patches/server/0300-Add-hover-lines-API.patch diff --git a/patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0303-register-minecraft-debug-commands.patch b/patches/server/0302-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0303-register-minecraft-debug-commands.patch rename to patches/server/0302-register-minecraft-debug-commands.patch diff --git a/patches/server/0304-Configurable-villager-search-radius.patch b/patches/server/0303-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0304-Configurable-villager-search-radius.patch rename to patches/server/0303-Configurable-villager-search-radius.patch index 3c5168260..8f9e628a1 100644 --- a/patches/server/0304-Configurable-villager-search-radius.patch +++ b/patches/server/0303-Configurable-villager-search-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable-villager-search-radius diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index 984e3cc48f93f4f036689a269562f12ebd7bdef1..6e65bc6bd198abf8c60016696d7851a1e8e080ec 100644 +index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..6499e3fe49e453db11e51eaf717ca8b3b682056b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java @@ -73,7 +73,7 @@ public class AcquirePoi { @@ -18,7 +18,7 @@ index 984e3cc48f93f4f036689a269562f12ebd7bdef1..6e65bc6bd198abf8c60016696d7851a1 // Paper end - optimise POI access Path path = findPathToPois(entity, set); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index a2e02881f90a93f067301b63eb84dfad476bedbd..3c8b9ef3f55f4511f062b03822c8056c40dd7c92 100644 +index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java @@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { From aca8b3a8fe17ea40a1f5cf5422d1947c52e114db Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 22 Apr 2024 22:54:30 -0700 Subject: [PATCH 093/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f4c7d37 [ci skip] Fix javadoc typo (#10445) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 886b5f5ca..427917a7b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = a6b6ecdd221b6ae7687561c84c1850aaa62473b4 +paperCommit = f4c7d373e4a1aff23539fe099745bf29a28559b9 org.gradle.caching = true org.gradle.parallel = true From 6b1ee98f813ee19f8046b3c528feeee61840a35b Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 23 Apr 2024 23:20:56 -0700 Subject: [PATCH 094/148] Final 1.20.4 Paper Upstream \o/ Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@53d10b8 Adjust large packet handler to run when above protocol limit PaperMC/Paper@7ac24a1 Fix chunk data version check not running in chunk system --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 427917a7b..f7cd9421d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = f4c7d373e4a1aff23539fe099745bf29a28559b9 +paperCommit = 7ac24a18940da12beb39a030113f6e459f348e2f org.gradle.caching = true org.gradle.parallel = true From db494a94a369e255b61b4fceb0d29ff55ec3d7a5 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 19:29:41 -0700 Subject: [PATCH 095/148] prepare for 1.20.5 --- README.md | 8 ++++---- build.gradle.kts | 6 +++--- gradle.properties | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1a0961c19..3f7225234 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## Purpur [![MIT License](https://img.shields.io/github/license/PurpurMC/Purpur?&logo=github)](LICENSE) -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.4&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.5&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/PurpurMC/Purpur?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx%2BLVQcXZ10dXAVB8APE0clJ0UVK%2FF9SaBHjwXE%2F3t173L0D%2FPUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5%2Fi6h4%2BvdzGe5X3uz9Gj5EwG%2BATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6%2FcS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q%2BUqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId%2FwPGL5JLJVQIjxwIqUCE5fvA%2F%2BN2tmZ8Yd5NCcaDzxbY%2FhoGuXaBRs%2B3vY9tunACBZ%2BBKa%2FkrdWD6k%2FRaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0%2Ffk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO%2Ft3zPN%2Fn4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMVKAA5pS6%2BAAABlElEQVQ4y82PP2gVQRDGf7N3t%2Bvdixpi0N5OELFKJ1iohBciKlgYJLX6YkBbC0sVooVFBAvBPw%2BFZzrJs7DR2iYHRhBsxNI8VLwUx92MRXJGxKCp9AfL7DfDfPutFO3z5wy5DuRlWU2OvLj7hduLYXh0ZSEkOh4SjUKiBK%2BEZP34Gu%2FtbebLE86Qa8BO4FDwyWmAbPjzMWACiNgEMdun6macwfJ6z2qxZYBI6ndAxR%2BRN%2FL1ZGeXlDqFkm%2Fv33nZjHZ0u2OZrw%2F7pBYf16Re8UEJ8VpNE33fP3BxgX%2BOFOOdtjmuGpoPtT51pNcrMZORx4%2FmslQnslAlWahItymZrz%2Bmqc4%2B2z%2B71BjE5uwesEeQsaLY%2FQp42LrfPUqwy2DNO03ZK9hN4Ehj4IDBjzjKCoC5aMDG9q%2BhBz%2BrWCN3KqptBtG89Xx%2BEWB1%2Bszr8OTBFMgkSLKWQAA%2BVCU3%2BK%2BQb%2B0LB4FLGHmrP39LNv3773Ei9IBphLnVduf4VhM4M9JGqGzc%2F5bYnDsrqlcQloaK0adbNfgOUn6NRlZZ46YAAAAASUVORK5CYII%3D)](https://www.codefactor.io/repository/github/PurpurMC/Purpur) [![Join us on Discord](https://discord.com/api/guilds/685683385313919172/widget.png?style=shield)](https://purpurmc.org/discord) @@ -27,7 +27,7 @@ Join us on Discord: ## Downloads Downloads can be obtained from the [downloads page](https://purpurmc.org/downloads/) or the [downloads API](https://api.purpurmc.org). -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.4&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.5&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) Downloads API endpoints: * List versions of Minecraft with builds available: @@ -67,7 +67,7 @@ Maven org.purpurmc.purpur purpur-api - 1.20.4-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT provided ``` @@ -80,7 +80,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("org.purpurmc.purpur:purpur-api:1.20.4-R0.1-SNAPSHOT") + compileOnly("org.purpurmc.purpur:purpur-api:1.20.5-R0.1-SNAPSHOT") } ``` diff --git a/build.gradle.kts b/build.gradle.kts index 6212fb8f8..68aec3b5b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.15" + id("io.papermc.paperweight.patcher") version "1.6.2" } allprojects { @@ -14,7 +14,7 @@ allprojects { java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } } @@ -24,7 +24,7 @@ val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" subprojects { tasks.withType().configureEach { options.encoding = Charsets.UTF_8.name() - options.release = 17 + options.release = 21 } tasks.withType { options.encoding = Charsets.UTF_8.name() diff --git a/gradle.properties b/gradle.properties index f7cd9421d..feaa82d60 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.20.4-R0.1-SNAPSHOT +version = 1.20.5-R0.1-SNAPSHOT -mcVersion = 1.20.4 -paperCommit = 7ac24a18940da12beb39a030113f6e459f348e2f +mcVersion = 1.20.5 +paperCommit = f187fd696aa2bec774b1199b2e3c6937dd12937f org.gradle.caching = true org.gradle.parallel = true From 10f83700bd0cf2041f45b1ecd04c25393dc2331e Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 19:29:54 -0700 Subject: [PATCH 096/148] api applies \o/ --- ...iles.patch => 0001-Purpur-config-files.patch} | 4 ++-- ...ges.patch => 0002-Build-System-Changes.patch} | 4 ++-- ...rt.patch => 0003-Purpur-client-support.patch} | 4 ++-- ...ions.patch => 0004-Default-permissions.patch} | 0 .../{0007-Ridables.patch => 0005-Ridables.patch} | 4 ++-- ...patch => 0006-Allow-inventory-resizing.patch} | 4 ++-- ...0009-Llama-API.patch => 0007-Llama-API.patch} | 0 .../{0010-AFK-API.patch => 0008-AFK-API.patch} | 4 ++-- ...e.patch => 0009-Bring-back-server-name.patch} | 8 ++++---- ...vent.patch => 0010-ExecuteCommandEvent.patch} | 0 ... => 0011-LivingEntity-safeFallDistance.patch} | 4 ++-- ...eshold.patch => 0012-Lagging-threshold.patch} | 8 ++++---- ... 0013-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 ...0016-Anvil-API.patch => 0014-Anvil-API.patch} | 0 ... => 0015-ItemStack-convenience-methods.patch} | 8 ++++---- ...> 0016-LivingEntity-broadcastItemBreak.patch} | 4 ++-- ...s.patch => 0017-ChatColor-conveniences.patch} | 0 ...s.patch => 0018-Item-entity-immunities.patch} | 2 +- ...ate-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...-Wolf-API.patch => 0020-Rabid-Wolf-API.patch} | 10 +++++----- ....patch => 0021-PlayerBookTooLargeEvent.patch} | 0 ...netherite-armor-grants-fire-resistance.patch} | 0 ...> 0023-Add-EntityTeleportHinderedEvent.patch} | 0 ...hantment-target-for-bows-and-crossbows.patch} | 0 ... 0025-API-for-any-mob-to-burn-daylight.patch} | 8 ++++---- ...-Add-back-player-spawned-endermite-API.patch} | 0 ... => 0027-Fix-default-permission-system.patch} | 0 ...ummoner-API.patch => 0028-Summoner-API.patch} | 0 ...> 0029-Clean-up-version-command-output.patch} | 0 ...tch => 0030-Extended-OfflinePlayer-API.patch} | 0 ...d-the-ability-to-add-combustible-items.patch} | 8 ++++---- ...Key.patch => 0032-Potion-NamespacedKey.patch} | 0 ...stone-API.patch => 0033-Grindstone-API.patch} | 0 ...34-Shears-can-have-looting-enchantment.patch} | 0 ...tch => 0035-Lobotomize-stuck-villagers.patch} | 0 ...patch => 0036-Add-local-difficulty-api.patch} | 4 ++-- ...e-Timings.patch => 0037-Remove-Timings.patch} | 0 ...-Add-Bee-API.patch => 0038-Add-Bee-API.patch} | 0 ...ker-API.patch => 0039-Debug-Marker-API.patch} | 16 ++++++++-------- ...API.patch => 0040-Add-death-screen-API.patch} | 4 ++-- ...> 0041-Add-item-packet-serialize-event.patch} | 0 ...anguage-API.patch => 0042-Language-API.patch} | 0 ...-Add-log-suppression-for-LibraryLoader.patch} | 8 ++++---- ...ty-API.patch => 0044-Fire-Immunity-API.patch} | 4 ++-- ...ent.patch => 0045-Added-goat-ram-event.patch} | 0 ...nts.patch => 0046-Add-PreExplodeEvents.patch} | 0 ...d-Bee-API.patch => 0047-Stored-Bee-API.patch} | 0 ...Map-API.patch => 0048-Explorer-Map-API.patch} | 0 ...-API.patch => 0049-Add-hover-lines-API.patch} | 6 +++--- ...amage.patch => 0050-Stonecutter-damage.patch} | 0 .../0001-Pufferfish-API-Changes.patch | 0 .../0002-Fix-pufferfish-issues.patch | 0 .../0001-Pufferfish-Server-Changes.patch | 0 .../0002-Rebrand.patch | 0 .../0003-Fix-pufferfish-issues.patch | 0 .../0004-Purpur-config-files.patch | 0 .../0005-Purpur-client-support.patch | 0 .../0006-Fix-decompile-errors.patch | 0 .../0007-Component-related-conveniences.patch | 0 .../0008-Ridables.patch | 0 ...009-Configurable-entity-base-attributes.patch | 0 .../0010-Barrels-and-enderchests-6-rows.patch | 0 .../0011-Llama-API.patch | 0 .../0012-AFK-API.patch | 0 .../0013-Bring-back-server-name.patch | 0 .../0014-Configurable-server-mod-name.patch | 0 .../0015-LivingEntity-safeFallDistance.patch | 0 .../0016-Lagging-threshold.patch | 0 .../0017-PlayerSetSpawnerTypeWithEggEvent.patch | 0 .../0018-Anvil-API.patch | 0 .../0019-Alternative-Keepalive-Handling.patch | 0 .../0020-Silk-touch-spawners.patch | 0 .../0021-Add-turtle-egg-block-options.patch | 0 ...ger-settings-suppressing-pointless-logs.patch | 0 .../0023-Disable-outdated-build-check.patch | 0 .../0024-Giants-AI-settings.patch | 0 .../0025-Zombie-horse-naturally-spawn.patch | 0 .../0026-Charged-creeper-naturally-spawn.patch | 0 ...Rabbit-naturally-spawn-toast-and-killer.patch | 0 ...server-showing-in-ping-before-server-fu.patch | 0 .../0029-Tulips-change-fox-type.patch | 0 .../0030-Breedable-Polar-Bears.patch | 0 .../0031-Chickens-can-retaliate.patch | 0 ...dd-option-to-set-armorstand-step-height.patch | 0 .../0033-Cat-spawning-options.patch | 0 .../0034-Cows-eat-mushrooms.patch | 0 ...ix-cow-rotation-when-shearing-mooshroom.patch | 0 .../0036-Pigs-give-saddle-back.patch | 0 .../0037-Snowman-drop-and-put-back-pumpkin.patch | 0 .../0038-Ender-dragon-always-drop-full-exp.patch | 0 ...to-moisten-from-water-directly-under-it.patch | 0 ...040-Minecart-settings-and-WASD-controls.patch | 0 ...Disable-loot-drops-on-death-by-cramming.patch | 0 ...2-Option-to-toggle-milk-curing-bad-omen.patch | 0 ...y-should-check-if-entity-can-use-portal.patch | 0 ...044-Skip-events-if-there-s-no-listeners.patch | 0 .../0045-Add-permission-for-F3-N-debug.patch | 0 .../0046-Configurable-TPS-Catchup.patch | 0 ...-allow-loyalty-on-tridents-to-work-in-t.patch | 0 ...-enderman-and-creeper-griefing-controls.patch | 0 .../0049-Villagers-follow-emerald-blocks.patch | 0 .../0050-Allow-leashing-villagers.patch | 0 .../0051-Implement-infinite-liquids.patch | 0 .../0052-Make-lava-flow-speed-configurable.patch | 0 ...53-Add-player-death-exp-control-options.patch | 0 ...figurable-void-damage-height-and-damage.patch | 0 .../0055-Add-canSaveToDisk-to-Entity.patch | 0 ...6-Dispenser-curse-of-binding-protection.patch | 0 ...tion-for-boats-to-eject-players-on-land.patch | 0 ...ding-mends-most-damages-equipment-first.patch | 0 .../0059-Add-5-second-tps-average-in-tps.patch | 0 .../0060-Implement-elytra-settings.patch | 0 .../0061-Item-entity-immunities.patch | 0 .../0062-Add-ping-command.patch | 0 .../0063-Add-demo-command.patch | 0 .../0064-Add-credits-command.patch | 0 .../0065-Configurable-jockey-options.patch | 0 ...acted-to-crystals-and-crystals-shoot-ph.patch | 0 .../0067-Add-phantom-spawning-options.patch | 0 .../0068-Implement-bed-explosion-options.patch | 0 ...lement-respawn-anchor-explosion-options.patch | 0 ...070-Add-allow-water-in-end-world-option.patch | 0 .../0071-Allow-color-codes-in-books.patch | 0 .../0072-Entity-lifespan.patch | 0 ...-teleport-to-spawn-if-outside-world-bor.patch | 0 .../0074-Squid-EAR-immunity.patch | 0 .../0075-Phantoms-burn-in-light.patch | 0 .../0076-Configurable-villager-breeding.patch | 0 .../0077-Redstone-deactivates-spawners.patch | 0 .../0078-Totems-work-in-inventory.patch | 0 ...0079-Add-vindicator-johnny-spawn-chance.patch | 0 .../0080-Dispensers-place-anvils-option.patch | 0 .../0081-Allow-anvil-colors.patch | 0 ...n-to-disable-dolphin-treasure-searching.patch | 0 .../0083-Short-enderman-height.patch | 0 ...84-Stop-squids-floating-on-top-of-water.patch | 0 ...Crying-obsidian-valid-for-portal-frames.patch | 0 ...-Entities-can-use-portals-configuration.patch | 0 .../0087-LivingEntity-broadcastItemBreak.patch | 0 ...-Customizable-wither-health-and-healing.patch | 0 ...-toggling-special-MobSpawners-per-world.patch | 0 .../0090-Raid-cooldown-setting.patch | 0 ...rate-config-options-per-projectile-type.patch | 0 ...-disable-zombie-aggressiveness-towards-.patch | 0 ...cate-to-recipe-s-ExactChoice-ingredient.patch | 0 .../0094-Flying-squids-Oh-my.patch | 0 .../0095-Infinity-bow-settings.patch | 0 .../0096-Configurable-daylight-cycle.patch | 0 ...inite-and-mending-enchantments-together.patch | 0 .../0098-Furnace-uses-lava-from-underneath.patch | 0 ...Arrows-should-not-reset-despawn-counter.patch | 0 ...to-re-add-farmland-mechanics-from-Alpha.patch | 0 ...-adjustable-breeding-cooldown-to-config.patch | 0 ...Make-entity-breeding-times-configurable.patch | 0 ...-names-from-item-forms-of-entities-to-e.patch | 0 ...ble-when-using-a-Name-Tag-on-an-Armor-S.patch | 0 ...r-allowing-Endermen-to-despawn-even-whi.patch | 0 .../0106-Add-configurable-snowball-damage.patch | 0 .../0107-Changeable-Mob-Left-Handed-Chance.patch | 0 .../0108-Add-boat-fall-damage-config.patch | 0 .../0109-Snow-Golem-rate-of-fire-config.patch | 0 ...-EMC-Configurable-disable-give-dropping.patch | 0 ...or-Villager-Clerics-to-farm-Nether-Wart.patch | 0 ...mbified-Piglin-death-always-counting-as.patch | 0 ...urable-chance-for-wolves-to-spawn-rabid.patch | 0 .../0114-Configurable-default-collar-color.patch | 0 .../0115-Phantom-flames-on-swoop.patch | 0 ...ests-to-open-even-with-a-solid-block-on.patch | 0 .../0117-Implement-TPSBar.patch | 0 .../0118-Striders-give-saddle-back.patch | 0 .../0119-PlayerBookTooLargeEvent.patch | 0 ...-netherite-armor-grants-fire-resistance.patch | 0 ...bGriefing-bypass-to-everything-affected.patch | 0 ...to-allow-Note-Block-sounds-when-blocked.patch | 0 .../0123-Add-EntityTeleportHinderedEvent.patch | 0 .../0124-Farmland-trampling-changes.patch | 0 .../0125-Movement-options-for-armor-stands.patch | 0 .../0126-Fix-stuck-in-portals.patch | 0 ...7-Toggle-for-water-sensitive-mob-damage.patch | 0 .../0128-Config-to-always-tame-in-Creative.patch | 0 .../0129-End-crystal-explosion-options.patch | 0 ...f-Wither-Ender-Dragon-can-ride-vehicles.patch | 0 .../0131-Dont-run-with-scissors.patch | 0 .../0132-One-Punch-Man.patch | 0 ...Ender-Pearl-cooldown-damage-and-Endermi.patch | 0 ...fig-to-ignore-nearby-mobs-when-sleeping.patch | 0 ...5-Add-back-player-spawned-endermite-API.patch | 0 ...erman-aggressiveness-towards-Endermites.patch | 0 ...ore-Dragon-Head-wearers-and-stare-aggro.patch | 0 .../0138-Tick-fluids-config.patch | 0 .../0139-Config-to-disable-Llama-caravans.patch | 0 ...onfig-to-make-Creepers-explode-on-death.patch | 0 ...figurable-ravager-griefable-blocks-list.patch | 0 .../0142-Sneak-to-bulk-process-composter.patch | 0 .../0143-Config-for-skipping-night.patch | 0 .../0144-Add-config-for-villager-trading.patch | 0 .../0145-Allow-infinity-on-crossbows.patch | 0 .../0146-Drowning-Settings.patch | 0 ...47-Break-individual-slabs-when-sneaking.patch | 0 ...fig-to-disable-hostile-mob-spawn-on-ice.patch | 0 ...onfig-to-show-Armor-Stand-arms-on-spawn.patch | 0 ...0-Option-to-make-doors-require-redstone.patch | 0 ...151-Config-to-allow-for-unsafe-enchants.patch | 0 .../0152-Configurable-sponge-absorption.patch | 0 .../0153-Projectile-offset-config.patch | 0 ...ig-for-powered-rail-activation-distance.patch | 0 .../0155-Piglin-portal-spawn-modifier.patch | 0 ...156-Config-to-change-max-number-of-bees.patch | 0 ...0157-Config-for-wither-explosion-radius.patch | 0 .../0158-Gamemode-extra-permissions.patch | 0 .../0159-Configurable-piston-push-limit.patch | 0 .../0160-Configurable-broadcast-settings.patch | 0 .../0161-Configurable-mob-blindness.patch | 0 ...ide-hidden-players-from-entity-selector.patch | 0 ...alth-to-impact-Creeper-explosion-radius.patch | 0 .../0164-Iron-golem-calm-anger-options.patch | 0 .../0165-Breedable-parrots.patch | 0 ...onfigurable-powered-rail-boost-modifier.patch | 0 ...change-multiplier-critical-damage-value.patch | 0 ...ption-to-disable-dragon-egg-teleporting.patch | 0 ...-Config-for-unverified-username-message.patch | 0 ...Make-anvil-cumulative-cost-configurable.patch | 0 ...1-Bee-can-work-when-raining-or-at-night.patch | 0 .../0172-API-for-any-mob-to-burn-daylight.patch | 0 .../0173-Config-MobEffect-by-world.patch | 0 ...74-Beacon-Activation-Range-Configurable.patch | 0 ...5-Make-lightning-rod-range-configurable.patch | 0 ...rp-after-eating-food-fills-hunger-bar-c.patch | 0 ...w-player-join-full-server-by-permission.patch | 0 .../0178-Add-portal-permission-bypass.patch | 0 .../0179-Shulker-spawn-from-bullet-options.patch | 0 ...80-Eating-glow-berries-adds-glow-effect.patch | 0 ...0181-Option-to-make-drowned-break-doors.patch | 0 ...2-Configurable-hunger-starvation-damage.patch | 0 .../0183-Enhance-SysoutCatcher.patch | 0 .../0184-Add-uptime-command.patch | 0 .../0185-Tool-actionable-options.patch | 0 .../0186-Store-placer-on-Block-when-placed.patch | 0 .../0187-Summoner-API.patch | 0 ...ustomizable-sleeping-actionbar-messages.patch | 0 ...able-shulker-box-items-from-dropping-co.patch | 0 .../0190-Big-dripleaf-tilt-delay.patch | 0 .../0191-Player-ridable-in-water-option.patch | 0 ...able-Enderman-teleport-on-projectile-hi.patch | 0 .../0193-Add-compass-command.patch | 0 .../0194-Toggle-for-kinetic-damage.patch | 0 ...-Add-Option-for-disable-observer-clocks.patch | 0 ...tomizeable-Zombie-Villager-curing-times.patch | 0 ...ion-for-sponges-to-work-on-lava-and-mud.patch | 0 .../0198-Toggle-for-Wither-s-spawn-sound.patch | 0 ...ctus-breaks-from-solid-neighbors-config.patch | 0 ...o-remove-curse-of-binding-with-weakness.patch | 0 .../0201-Conduit-behavior-configuration.patch | 0 .../0202-Cauldron-fill-chances.patch | 0 ...ig-to-allow-mobs-to-pathfind-over-rails.patch | 0 .../0204-Shulker-change-color-with-dye.patch | 0 .../0205-Extended-OfflinePlayer-API.patch | 0 ...ed-the-ability-to-add-combustible-items.patch | 0 ...f-rain-and-thunder-should-stop-on-sleep.patch | 0 ...alea-blocks-to-grow-into-trees-naturall.patch | 0 ...hift-right-click-to-use-exp-for-mending.patch | 0 ...-naturally-aggressive-to-players-chance.patch | 0 ...-naturally-aggressive-to-players-chance.patch | 0 ...n-for-beds-to-explode-on-villager-sleep.patch | 0 ...213-Halloween-options-and-optimizations.patch | 0 .../0214-Config-for-grindstones.patch | 0 .../0215-UPnP-Port-Forwarding.patch | 0 ...216-Campfire-option-for-lit-when-placed.patch | 0 ...o-extinguish-fire-blocks-with-snowballs.patch | 0 ...option-to-disable-zombie-villagers-cure.patch | 0 ...istent-BlockEntity-Lore-and-DisplayName.patch | 0 .../0220-Signs-allow-color-codes.patch | 0 ...ping-and-twisting-vines-configurable-ma.patch | 0 .../0222-Mobs-always-drop-experience.patch | 0 .../0223-Potion-NamespacedKey.patch | 0 .../0224-Grindstone-API.patch | 0 ...r-hoe-to-replant-crops-and-nether-warts.patch | 0 ...26-Turtle-eggs-random-tick-crack-chance.patch | 0 .../0227-Mob-head-visibility-percent.patch | 0 ...igurable-valid-characters-for-usernames.patch | 0 ...229-Shears-can-have-looting-enchantment.patch | 0 ...230-Stop-bees-from-dying-after-stinging.patch | 0 ...ee-counts-in-beehives-to-Purpur-clients.patch | 0 ...32-Configurable-farmland-trample-height.patch | 0 ...33-Configurable-player-pickup-exp-delay.patch | 0 .../0234-Allow-void-trading.patch | 0 .../0235-Configurable-phantom-size.patch | 0 .../0236-Configurable-food-attributes.patch | 0 .../0237-Max-joins-per-second.patch | 0 ...-Configurable-minimum-demand-for-trades.patch | 0 .../0239-Lobotomize-stuck-villagers.patch | 0 ...-Option-for-villager-display-trade-item.patch | 0 ...-spawner-not-spawning-water-animals-cor.patch | 0 ...Config-for-mob-last-hurt-by-player-time.patch | 0 .../0243-Anvil-repair-damage-options.patch | 0 ...able-turtle-egg-trampling-with-feather-.patch | 0 ...5-Add-toggle-for-enchant-level-clamping.patch | 0 ...46-Skip-junit-tests-for-purpur-commands.patch | 0 ...figurable-search-radius-for-villagers-t.patch | 0 .../0248-Stonecutter-damage.patch | 0 ...urable-damage-settings-for-magma-blocks.patch | 0 .../0250-Add-config-for-snow-on-blue-ice.patch | 0 .../0251-Skeletons-eat-wither-roses.patch | 0 .../0252-Enchantment-Table-Persists-Lapis.patch | 0 .../0253-Spark-Profiler.patch | 0 ...n-to-disable-kick-for-out-of-order-chat.patch | 0 ...fig-for-sculk-shrieker-can_summon-state.patch | 0 .../0256-Config-to-not-let-coral-die.patch | 0 .../0257-Add-local-difficulty-api.patch | 0 .../0258-Add-toggle-for-RNG-manipulation.patch | 0 .../0259-Send-client-custom-name-of-BE.patch | 0 .../0260-Remove-Timings.patch | 0 .../0261-Remove-Mojang-Profiler.patch | 0 ...ogger-output-for-invalid-movement-kicks.patch | 0 .../0263-Add-Bee-API.patch | 0 .../0264-Debug-Marker-API.patch | 0 ...wning-option-to-ignore-creative-players.patch | 0 .../0266-Add-skeleton-bow-accuracy-option.patch | 0 .../0267-Allay-respect-item-NBT.patch | 0 .../0268-Add-death-screen-API.patch | 0 ...0269-Make-pufferfish-config-relocatable.patch | 0 .../0270-Implement-ram-and-rambar-commands.patch | 0 .../0271-Add-item-packet-serialize-event.patch | 0 ...ption-to-fix-MC-3304-projectile-looting.patch | 0 ...273-Configurable-block-blast-resistance.patch | 0 ...onfigurable-block-fall-damage-modifiers.patch | 0 .../0275-Language-API.patch | 0 .../0276-Milk-Keeps-Beneficial-Effects.patch | 0 ...-mobs-not-looking-up-and-down-when-stra.patch | 0 ...8-Add-log-suppression-for-LibraryLoader.patch | 0 ...-allow-creeper-to-encircle-target-when-.patch | 0 .../0280-Fire-Immunity-API.patch | 0 ...-teleport-to-spawn-on-nether-ceiling-da.patch | 0 .../0282-Added-got-ram-event.patch | 0 .../0283-Log-skipped-entity-s-position.patch | 0 .../0284-End-Crystal-Cramming.patch | 0 ...ow-beacon-effects-when-covered-by-tinte.patch | 0 ...tribute-clamping-and-armor-limit-config.patch | 0 ...Config-to-remove-explosion-radius-clamp.patch | 0 ...ealable-sugarcane-cactus-and-netherwart.patch | 0 .../0289-Add-PreExplodeEvents.patch | 0 .../0290-Improve-output-of-plugins-command.patch | 0 .../0291-Add-mending-multiplier.patch | 0 .../0292-Make-GUI-Great-Again.patch | 0 .../0293-Stored-Bee-API.patch | 0 .../0294-Shears-can-defuse-TNT.patch | 0 .../0295-Explorer-Map-API.patch | 0 ...296-Option-Ocelot-Spawn-Under-Sea-Level.patch | 0 ...-for-piglins-to-ignore-gold-trimmed-arm.patch | 0 ...r-always-showing-item-in-player-death-m.patch | 0 .../0299-place-end-crystal-on-any-block.patch | 0 .../0300-Add-hover-lines-API.patch | 0 ...-disable-the-copper-oxidation-proximity.patch | 0 .../0302-register-minecraft-debug-commands.patch | 0 ...303-Configurable-villager-search-radius.patch | 0 355 files changed, 63 insertions(+), 63 deletions(-) rename patches/api/{0003-Purpur-config-files.patch => 0001-Purpur-config-files.patch} (85%) rename patches/api/{0004-Build-System-Changes.patch => 0002-Build-System-Changes.patch} (85%) rename patches/api/{0005-Purpur-client-support.patch => 0003-Purpur-client-support.patch} (82%) rename patches/api/{0006-Default-permissions.patch => 0004-Default-permissions.patch} (100%) rename patches/api/{0007-Ridables.patch => 0005-Ridables.patch} (97%) rename patches/api/{0008-Allow-inventory-resizing.patch => 0006-Allow-inventory-resizing.patch} (83%) rename patches/api/{0009-Llama-API.patch => 0007-Llama-API.patch} (100%) rename patches/api/{0010-AFK-API.patch => 0008-AFK-API.patch} (95%) rename patches/api/{0011-Bring-back-server-name.patch => 0009-Bring-back-server-name.patch} (79%) rename patches/api/{0012-ExecuteCommandEvent.patch => 0010-ExecuteCommandEvent.patch} (100%) rename patches/api/{0013-LivingEntity-safeFallDistance.patch => 0011-LivingEntity-safeFallDistance.patch} (86%) rename patches/api/{0014-Lagging-threshold.patch => 0012-Lagging-threshold.patch} (79%) rename patches/api/{0015-PlayerSetSpawnerTypeWithEggEvent.patch => 0013-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/api/{0016-Anvil-API.patch => 0014-Anvil-API.patch} (100%) rename patches/api/{0017-ItemStack-convenience-methods.patch => 0015-ItemStack-convenience-methods.patch} (98%) rename patches/api/{0018-LivingEntity-broadcastItemBreak.patch => 0016-LivingEntity-broadcastItemBreak.patch} (84%) rename patches/api/{0019-ChatColor-conveniences.patch => 0017-ChatColor-conveniences.patch} (100%) rename patches/api/{0020-Item-entity-immunities.patch => 0018-Item-entity-immunities.patch} (95%) rename patches/api/{0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0022-Rabid-Wolf-API.patch => 0020-Rabid-Wolf-API.patch} (69%) rename patches/api/{0023-PlayerBookTooLargeEvent.patch => 0021-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0024-Full-netherite-armor-grants-fire-resistance.patch => 0022-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0025-Add-EntityTeleportHinderedEvent.patch => 0023-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0026-Add-enchantment-target-for-bows-and-crossbows.patch => 0024-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0027-API-for-any-mob-to-burn-daylight.patch => 0025-API-for-any-mob-to-burn-daylight.patch} (82%) rename patches/api/{0028-Add-back-player-spawned-endermite-API.patch => 0026-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/api/{0029-Fix-default-permission-system.patch => 0027-Fix-default-permission-system.patch} (100%) rename patches/api/{0030-Summoner-API.patch => 0028-Summoner-API.patch} (100%) rename patches/api/{0031-Clean-up-version-command-output.patch => 0029-Clean-up-version-command-output.patch} (100%) rename patches/api/{0032-Extended-OfflinePlayer-API.patch => 0030-Extended-OfflinePlayer-API.patch} (100%) rename patches/api/{0033-Added-the-ability-to-add-combustible-items.patch => 0031-Added-the-ability-to-add-combustible-items.patch} (85%) rename patches/api/{0034-Potion-NamespacedKey.patch => 0032-Potion-NamespacedKey.patch} (100%) rename patches/api/{0035-Grindstone-API.patch => 0033-Grindstone-API.patch} (100%) rename patches/api/{0036-Shears-can-have-looting-enchantment.patch => 0034-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0037-Lobotomize-stuck-villagers.patch => 0035-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0038-Add-local-difficulty-api.patch => 0036-Add-local-difficulty-api.patch} (84%) rename patches/api/{0039-Remove-Timings.patch => 0037-Remove-Timings.patch} (100%) rename patches/api/{0040-Add-Bee-API.patch => 0038-Add-Bee-API.patch} (100%) rename patches/api/{0041-Debug-Marker-API.patch => 0039-Debug-Marker-API.patch} (96%) rename patches/api/{0042-Add-death-screen-API.patch => 0040-Add-death-screen-API.patch} (89%) rename patches/api/{0043-Add-item-packet-serialize-event.patch => 0041-Add-item-packet-serialize-event.patch} (100%) rename patches/api/{0044-Language-API.patch => 0042-Language-API.patch} (100%) rename patches/api/{0045-Add-log-suppression-for-LibraryLoader.patch => 0043-Add-log-suppression-for-LibraryLoader.patch} (89%) rename patches/api/{0046-Fire-Immunity-API.patch => 0044-Fire-Immunity-API.patch} (84%) rename patches/api/{0047-Added-goat-ram-event.patch => 0045-Added-goat-ram-event.patch} (100%) rename patches/api/{0048-Add-PreExplodeEvents.patch => 0046-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0049-Stored-Bee-API.patch => 0047-Stored-Bee-API.patch} (100%) rename patches/api/{0050-Explorer-Map-API.patch => 0048-Explorer-Map-API.patch} (100%) rename patches/api/{0051-Add-hover-lines-API.patch => 0049-Add-hover-lines-API.patch} (87%) rename patches/api/{0052-Stonecutter-damage.patch => 0050-Stonecutter-damage.patch} (100%) rename patches/{api => unapplied-api}/0001-Pufferfish-API-Changes.patch (100%) rename patches/{api => unapplied-api}/0002-Fix-pufferfish-issues.patch (100%) rename patches/{server => unapplied-server}/0001-Pufferfish-Server-Changes.patch (100%) rename patches/{server => unapplied-server}/0002-Rebrand.patch (100%) rename patches/{server => unapplied-server}/0003-Fix-pufferfish-issues.patch (100%) rename patches/{server => unapplied-server}/0004-Purpur-config-files.patch (100%) rename patches/{server => unapplied-server}/0005-Purpur-client-support.patch (100%) rename patches/{server => unapplied-server}/0006-Fix-decompile-errors.patch (100%) rename patches/{server => unapplied-server}/0007-Component-related-conveniences.patch (100%) rename patches/{server => unapplied-server}/0008-Ridables.patch (100%) rename patches/{server => unapplied-server}/0009-Configurable-entity-base-attributes.patch (100%) rename patches/{server => unapplied-server}/0010-Barrels-and-enderchests-6-rows.patch (100%) rename patches/{server => unapplied-server}/0011-Llama-API.patch (100%) rename patches/{server => unapplied-server}/0012-AFK-API.patch (100%) rename patches/{server => unapplied-server}/0013-Bring-back-server-name.patch (100%) rename patches/{server => unapplied-server}/0014-Configurable-server-mod-name.patch (100%) rename patches/{server => unapplied-server}/0015-LivingEntity-safeFallDistance.patch (100%) rename patches/{server => unapplied-server}/0016-Lagging-threshold.patch (100%) rename patches/{server => unapplied-server}/0017-PlayerSetSpawnerTypeWithEggEvent.patch (100%) rename patches/{server => unapplied-server}/0018-Anvil-API.patch (100%) rename patches/{server => unapplied-server}/0019-Alternative-Keepalive-Handling.patch (100%) rename patches/{server => unapplied-server}/0020-Silk-touch-spawners.patch (100%) rename patches/{server => unapplied-server}/0021-Add-turtle-egg-block-options.patch (100%) rename patches/{server => unapplied-server}/0022-Logger-settings-suppressing-pointless-logs.patch (100%) rename patches/{server => unapplied-server}/0023-Disable-outdated-build-check.patch (100%) rename patches/{server => unapplied-server}/0024-Giants-AI-settings.patch (100%) rename patches/{server => unapplied-server}/0025-Zombie-horse-naturally-spawn.patch (100%) rename patches/{server => unapplied-server}/0026-Charged-creeper-naturally-spawn.patch (100%) rename patches/{server => unapplied-server}/0027-Rabbit-naturally-spawn-toast-and-killer.patch (100%) rename patches/{server => unapplied-server}/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch (100%) rename patches/{server => unapplied-server}/0029-Tulips-change-fox-type.patch (100%) rename patches/{server => unapplied-server}/0030-Breedable-Polar-Bears.patch (100%) rename patches/{server => unapplied-server}/0031-Chickens-can-retaliate.patch (100%) rename patches/{server => unapplied-server}/0032-Add-option-to-set-armorstand-step-height.patch (100%) rename patches/{server => unapplied-server}/0033-Cat-spawning-options.patch (100%) rename patches/{server => unapplied-server}/0034-Cows-eat-mushrooms.patch (100%) rename patches/{server => unapplied-server}/0035-Fix-cow-rotation-when-shearing-mooshroom.patch (100%) rename patches/{server => unapplied-server}/0036-Pigs-give-saddle-back.patch (100%) rename patches/{server => unapplied-server}/0037-Snowman-drop-and-put-back-pumpkin.patch (100%) rename patches/{server => unapplied-server}/0038-Ender-dragon-always-drop-full-exp.patch (100%) rename patches/{server => unapplied-server}/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch (100%) rename patches/{server => unapplied-server}/0040-Minecart-settings-and-WASD-controls.patch (100%) rename patches/{server => unapplied-server}/0041-Disable-loot-drops-on-death-by-cramming.patch (100%) rename patches/{server => unapplied-server}/0042-Option-to-toggle-milk-curing-bad-omen.patch (100%) rename patches/{server => unapplied-server}/0043-End-gateway-should-check-if-entity-can-use-portal.patch (100%) rename patches/{server => unapplied-server}/0044-Skip-events-if-there-s-no-listeners.patch (100%) rename patches/{server => unapplied-server}/0045-Add-permission-for-F3-N-debug.patch (100%) rename patches/{server => unapplied-server}/0046-Configurable-TPS-Catchup.patch (100%) rename patches/{server => unapplied-server}/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch (100%) rename patches/{server => unapplied-server}/0048-Add-enderman-and-creeper-griefing-controls.patch (100%) rename patches/{server => unapplied-server}/0049-Villagers-follow-emerald-blocks.patch (100%) rename patches/{server => unapplied-server}/0050-Allow-leashing-villagers.patch (100%) rename patches/{server => unapplied-server}/0051-Implement-infinite-liquids.patch (100%) rename patches/{server => unapplied-server}/0052-Make-lava-flow-speed-configurable.patch (100%) rename patches/{server => unapplied-server}/0053-Add-player-death-exp-control-options.patch (100%) rename patches/{server => unapplied-server}/0054-Configurable-void-damage-height-and-damage.patch (100%) rename patches/{server => unapplied-server}/0055-Add-canSaveToDisk-to-Entity.patch (100%) rename patches/{server => unapplied-server}/0056-Dispenser-curse-of-binding-protection.patch (100%) rename patches/{server => unapplied-server}/0057-Add-option-for-boats-to-eject-players-on-land.patch (100%) rename patches/{server => unapplied-server}/0058-Mending-mends-most-damages-equipment-first.patch (100%) rename patches/{server => unapplied-server}/0059-Add-5-second-tps-average-in-tps.patch (100%) rename patches/{server => unapplied-server}/0060-Implement-elytra-settings.patch (100%) rename patches/{server => unapplied-server}/0061-Item-entity-immunities.patch (100%) rename patches/{server => unapplied-server}/0062-Add-ping-command.patch (100%) rename patches/{server => unapplied-server}/0063-Add-demo-command.patch (100%) rename patches/{server => unapplied-server}/0064-Add-credits-command.patch (100%) rename patches/{server => unapplied-server}/0065-Configurable-jockey-options.patch (100%) rename patches/{server => unapplied-server}/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (100%) rename patches/{server => unapplied-server}/0067-Add-phantom-spawning-options.patch (100%) rename patches/{server => unapplied-server}/0068-Implement-bed-explosion-options.patch (100%) rename patches/{server => unapplied-server}/0069-Implement-respawn-anchor-explosion-options.patch (100%) rename patches/{server => unapplied-server}/0070-Add-allow-water-in-end-world-option.patch (100%) rename patches/{server => unapplied-server}/0071-Allow-color-codes-in-books.patch (100%) rename patches/{server => unapplied-server}/0072-Entity-lifespan.patch (100%) rename patches/{server => unapplied-server}/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch (100%) rename patches/{server => unapplied-server}/0074-Squid-EAR-immunity.patch (100%) rename patches/{server => unapplied-server}/0075-Phantoms-burn-in-light.patch (100%) rename patches/{server => unapplied-server}/0076-Configurable-villager-breeding.patch (100%) rename patches/{server => unapplied-server}/0077-Redstone-deactivates-spawners.patch (100%) rename patches/{server => unapplied-server}/0078-Totems-work-in-inventory.patch (100%) rename patches/{server => unapplied-server}/0079-Add-vindicator-johnny-spawn-chance.patch (100%) rename patches/{server => unapplied-server}/0080-Dispensers-place-anvils-option.patch (100%) rename patches/{server => unapplied-server}/0081-Allow-anvil-colors.patch (100%) rename patches/{server => unapplied-server}/0082-Add-option-to-disable-dolphin-treasure-searching.patch (100%) rename patches/{server => unapplied-server}/0083-Short-enderman-height.patch (100%) rename patches/{server => unapplied-server}/0084-Stop-squids-floating-on-top-of-water.patch (100%) rename patches/{server => unapplied-server}/0085-Crying-obsidian-valid-for-portal-frames.patch (100%) rename patches/{server => unapplied-server}/0086-Entities-can-use-portals-configuration.patch (100%) rename patches/{server => unapplied-server}/0087-LivingEntity-broadcastItemBreak.patch (100%) rename patches/{server => unapplied-server}/0088-Customizable-wither-health-and-healing.patch (100%) rename patches/{server => unapplied-server}/0089-Allow-toggling-special-MobSpawners-per-world.patch (100%) rename patches/{server => unapplied-server}/0090-Raid-cooldown-setting.patch (100%) rename patches/{server => unapplied-server}/0091-Despawn-rate-config-options-per-projectile-type.patch (100%) rename patches/{server => unapplied-server}/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch (100%) rename patches/{server => unapplied-server}/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch (100%) rename patches/{server => unapplied-server}/0094-Flying-squids-Oh-my.patch (100%) rename patches/{server => unapplied-server}/0095-Infinity-bow-settings.patch (100%) rename patches/{server => unapplied-server}/0096-Configurable-daylight-cycle.patch (100%) rename patches/{server => unapplied-server}/0097-Allow-infinite-and-mending-enchantments-together.patch (100%) rename patches/{server => unapplied-server}/0098-Furnace-uses-lava-from-underneath.patch (100%) rename patches/{server => unapplied-server}/0099-Arrows-should-not-reset-despawn-counter.patch (100%) rename patches/{server => unapplied-server}/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch (100%) rename patches/{server => unapplied-server}/0101-Add-adjustable-breeding-cooldown-to-config.patch (100%) rename patches/{server => unapplied-server}/0102-Make-entity-breeding-times-configurable.patch (100%) rename patches/{server => unapplied-server}/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch (100%) rename patches/{server => unapplied-server}/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch (100%) rename patches/{server => unapplied-server}/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch (100%) rename patches/{server => unapplied-server}/0106-Add-configurable-snowball-damage.patch (100%) rename patches/{server => unapplied-server}/0107-Changeable-Mob-Left-Handed-Chance.patch (100%) rename patches/{server => unapplied-server}/0108-Add-boat-fall-damage-config.patch (100%) rename patches/{server => unapplied-server}/0109-Snow-Golem-rate-of-fire-config.patch (100%) rename patches/{server => unapplied-server}/0110-EMC-Configurable-disable-give-dropping.patch (100%) rename patches/{server => unapplied-server}/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (100%) rename patches/{server => unapplied-server}/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch (100%) rename patches/{server => unapplied-server}/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch (100%) rename patches/{server => unapplied-server}/0114-Configurable-default-collar-color.patch (100%) rename patches/{server => unapplied-server}/0115-Phantom-flames-on-swoop.patch (100%) rename patches/{server => unapplied-server}/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch (100%) rename patches/{server => unapplied-server}/0117-Implement-TPSBar.patch (100%) rename patches/{server => unapplied-server}/0118-Striders-give-saddle-back.patch (100%) rename patches/{server => unapplied-server}/0119-PlayerBookTooLargeEvent.patch (100%) rename patches/{server => unapplied-server}/0120-Full-netherite-armor-grants-fire-resistance.patch (100%) rename patches/{server => unapplied-server}/0121-Add-mobGriefing-bypass-to-everything-affected.patch (100%) rename patches/{server => unapplied-server}/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch (100%) rename patches/{server => unapplied-server}/0123-Add-EntityTeleportHinderedEvent.patch (100%) rename patches/{server => unapplied-server}/0124-Farmland-trampling-changes.patch (100%) rename patches/{server => unapplied-server}/0125-Movement-options-for-armor-stands.patch (100%) rename patches/{server => unapplied-server}/0126-Fix-stuck-in-portals.patch (100%) rename patches/{server => unapplied-server}/0127-Toggle-for-water-sensitive-mob-damage.patch (100%) rename patches/{server => unapplied-server}/0128-Config-to-always-tame-in-Creative.patch (100%) rename patches/{server => unapplied-server}/0129-End-crystal-explosion-options.patch (100%) rename patches/{server => unapplied-server}/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch (100%) rename patches/{server => unapplied-server}/0131-Dont-run-with-scissors.patch (100%) rename patches/{server => unapplied-server}/0132-One-Punch-Man.patch (100%) rename patches/{server => unapplied-server}/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch (100%) rename patches/{server => unapplied-server}/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch (100%) rename patches/{server => unapplied-server}/0135-Add-back-player-spawned-endermite-API.patch (100%) rename patches/{server => unapplied-server}/0136-Config-Enderman-aggressiveness-towards-Endermites.patch (100%) rename patches/{server => unapplied-server}/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch (100%) rename patches/{server => unapplied-server}/0138-Tick-fluids-config.patch (100%) rename patches/{server => unapplied-server}/0139-Config-to-disable-Llama-caravans.patch (100%) rename patches/{server => unapplied-server}/0140-Config-to-make-Creepers-explode-on-death.patch (100%) rename patches/{server => unapplied-server}/0141-Configurable-ravager-griefable-blocks-list.patch (100%) rename patches/{server => unapplied-server}/0142-Sneak-to-bulk-process-composter.patch (100%) rename patches/{server => unapplied-server}/0143-Config-for-skipping-night.patch (100%) rename patches/{server => unapplied-server}/0144-Add-config-for-villager-trading.patch (100%) rename patches/{server => unapplied-server}/0145-Allow-infinity-on-crossbows.patch (100%) rename patches/{server => unapplied-server}/0146-Drowning-Settings.patch (100%) rename patches/{server => unapplied-server}/0147-Break-individual-slabs-when-sneaking.patch (100%) rename patches/{server => unapplied-server}/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch (100%) rename patches/{server => unapplied-server}/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch (100%) rename patches/{server => unapplied-server}/0150-Option-to-make-doors-require-redstone.patch (100%) rename patches/{server => unapplied-server}/0151-Config-to-allow-for-unsafe-enchants.patch (100%) rename patches/{server => unapplied-server}/0152-Configurable-sponge-absorption.patch (100%) rename patches/{server => unapplied-server}/0153-Projectile-offset-config.patch (100%) rename patches/{server => unapplied-server}/0154-Config-for-powered-rail-activation-distance.patch (100%) rename patches/{server => unapplied-server}/0155-Piglin-portal-spawn-modifier.patch (100%) rename patches/{server => unapplied-server}/0156-Config-to-change-max-number-of-bees.patch (100%) rename patches/{server => unapplied-server}/0157-Config-for-wither-explosion-radius.patch (100%) rename patches/{server => unapplied-server}/0158-Gamemode-extra-permissions.patch (100%) rename patches/{server => unapplied-server}/0159-Configurable-piston-push-limit.patch (100%) rename patches/{server => unapplied-server}/0160-Configurable-broadcast-settings.patch (100%) rename patches/{server => unapplied-server}/0161-Configurable-mob-blindness.patch (100%) rename patches/{server => unapplied-server}/0162-Hide-hidden-players-from-entity-selector.patch (100%) rename patches/{server => unapplied-server}/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch (100%) rename patches/{server => unapplied-server}/0164-Iron-golem-calm-anger-options.patch (100%) rename patches/{server => unapplied-server}/0165-Breedable-parrots.patch (100%) rename patches/{server => unapplied-server}/0166-Configurable-powered-rail-boost-modifier.patch (100%) rename patches/{server => unapplied-server}/0167-Add-config-change-multiplier-critical-damage-value.patch (100%) rename patches/{server => unapplied-server}/0168-Option-to-disable-dragon-egg-teleporting.patch (100%) rename patches/{server => unapplied-server}/0169-Config-for-unverified-username-message.patch (100%) rename patches/{server => unapplied-server}/0170-Make-anvil-cumulative-cost-configurable.patch (100%) rename patches/{server => unapplied-server}/0171-Bee-can-work-when-raining-or-at-night.patch (100%) rename patches/{server => unapplied-server}/0172-API-for-any-mob-to-burn-daylight.patch (100%) rename patches/{server => unapplied-server}/0173-Config-MobEffect-by-world.patch (100%) rename patches/{server => unapplied-server}/0174-Beacon-Activation-Range-Configurable.patch (100%) rename patches/{server => unapplied-server}/0175-Make-lightning-rod-range-configurable.patch (100%) rename patches/{server => unapplied-server}/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch (100%) rename patches/{server => unapplied-server}/0177-Allow-player-join-full-server-by-permission.patch (100%) rename patches/{server => unapplied-server}/0178-Add-portal-permission-bypass.patch (100%) rename patches/{server => unapplied-server}/0179-Shulker-spawn-from-bullet-options.patch (100%) rename patches/{server => unapplied-server}/0180-Eating-glow-berries-adds-glow-effect.patch (100%) rename patches/{server => unapplied-server}/0181-Option-to-make-drowned-break-doors.patch (100%) rename patches/{server => unapplied-server}/0182-Configurable-hunger-starvation-damage.patch (100%) rename patches/{server => unapplied-server}/0183-Enhance-SysoutCatcher.patch (100%) rename patches/{server => unapplied-server}/0184-Add-uptime-command.patch (100%) rename patches/{server => unapplied-server}/0185-Tool-actionable-options.patch (100%) rename patches/{server => unapplied-server}/0186-Store-placer-on-Block-when-placed.patch (100%) rename patches/{server => unapplied-server}/0187-Summoner-API.patch (100%) rename patches/{server => unapplied-server}/0188-Customizable-sleeping-actionbar-messages.patch (100%) rename patches/{server => unapplied-server}/0189-option-to-disable-shulker-box-items-from-dropping-co.patch (100%) rename patches/{server => unapplied-server}/0190-Big-dripleaf-tilt-delay.patch (100%) rename patches/{server => unapplied-server}/0191-Player-ridable-in-water-option.patch (100%) rename patches/{server => unapplied-server}/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch (100%) rename patches/{server => unapplied-server}/0193-Add-compass-command.patch (100%) rename patches/{server => unapplied-server}/0194-Toggle-for-kinetic-damage.patch (100%) rename patches/{server => unapplied-server}/0195-Add-Option-for-disable-observer-clocks.patch (100%) rename patches/{server => unapplied-server}/0196-Customizeable-Zombie-Villager-curing-times.patch (100%) rename patches/{server => unapplied-server}/0197-Option-for-sponges-to-work-on-lava-and-mud.patch (100%) rename patches/{server => unapplied-server}/0198-Toggle-for-Wither-s-spawn-sound.patch (100%) rename patches/{server => unapplied-server}/0199-Cactus-breaks-from-solid-neighbors-config.patch (100%) rename patches/{server => unapplied-server}/0200-Config-to-remove-curse-of-binding-with-weakness.patch (100%) rename patches/{server => unapplied-server}/0201-Conduit-behavior-configuration.patch (100%) rename patches/{server => unapplied-server}/0202-Cauldron-fill-chances.patch (100%) rename patches/{server => unapplied-server}/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch (100%) rename patches/{server => unapplied-server}/0204-Shulker-change-color-with-dye.patch (100%) rename patches/{server => unapplied-server}/0205-Extended-OfflinePlayer-API.patch (100%) rename patches/{server => unapplied-server}/0206-Added-the-ability-to-add-combustible-items.patch (100%) rename patches/{server => unapplied-server}/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch (100%) rename patches/{server => unapplied-server}/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch (100%) rename patches/{server => unapplied-server}/0209-Shift-right-click-to-use-exp-for-mending.patch (100%) rename patches/{server => unapplied-server}/0210-Dolphins-naturally-aggressive-to-players-chance.patch (100%) rename patches/{server => unapplied-server}/0211-Cows-naturally-aggressive-to-players-chance.patch (100%) rename patches/{server => unapplied-server}/0212-Option-for-beds-to-explode-on-villager-sleep.patch (100%) rename patches/{server => unapplied-server}/0213-Halloween-options-and-optimizations.patch (100%) rename patches/{server => unapplied-server}/0214-Config-for-grindstones.patch (100%) rename patches/{server => unapplied-server}/0215-UPnP-Port-Forwarding.patch (100%) rename patches/{server => unapplied-server}/0216-Campfire-option-for-lit-when-placed.patch (100%) rename patches/{server => unapplied-server}/0217-options-to-extinguish-fire-blocks-with-snowballs.patch (100%) rename patches/{server => unapplied-server}/0218-Add-option-to-disable-zombie-villagers-cure.patch (100%) rename patches/{server => unapplied-server}/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch (100%) rename patches/{server => unapplied-server}/0220-Signs-allow-color-codes.patch (100%) rename patches/{server => unapplied-server}/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch (100%) rename patches/{server => unapplied-server}/0222-Mobs-always-drop-experience.patch (100%) rename patches/{server => unapplied-server}/0223-Potion-NamespacedKey.patch (100%) rename patches/{server => unapplied-server}/0224-Grindstone-API.patch (100%) rename patches/{server => unapplied-server}/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch (100%) rename patches/{server => unapplied-server}/0226-Turtle-eggs-random-tick-crack-chance.patch (100%) rename patches/{server => unapplied-server}/0227-Mob-head-visibility-percent.patch (100%) rename patches/{server => unapplied-server}/0228-Configurable-valid-characters-for-usernames.patch (100%) rename patches/{server => unapplied-server}/0229-Shears-can-have-looting-enchantment.patch (100%) rename patches/{server => unapplied-server}/0230-Stop-bees-from-dying-after-stinging.patch (100%) rename patches/{server => unapplied-server}/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch (100%) rename patches/{server => unapplied-server}/0232-Configurable-farmland-trample-height.patch (100%) rename patches/{server => unapplied-server}/0233-Configurable-player-pickup-exp-delay.patch (100%) rename patches/{server => unapplied-server}/0234-Allow-void-trading.patch (100%) rename patches/{server => unapplied-server}/0235-Configurable-phantom-size.patch (100%) rename patches/{server => unapplied-server}/0236-Configurable-food-attributes.patch (100%) rename patches/{server => unapplied-server}/0237-Max-joins-per-second.patch (100%) rename patches/{server => unapplied-server}/0238-Configurable-minimum-demand-for-trades.patch (100%) rename patches/{server => unapplied-server}/0239-Lobotomize-stuck-villagers.patch (100%) rename patches/{server => unapplied-server}/0240-Option-for-villager-display-trade-item.patch (100%) rename patches/{server => unapplied-server}/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch (100%) rename patches/{server => unapplied-server}/0242-Config-for-mob-last-hurt-by-player-time.patch (100%) rename patches/{server => unapplied-server}/0243-Anvil-repair-damage-options.patch (100%) rename patches/{server => unapplied-server}/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch (100%) rename patches/{server => unapplied-server}/0245-Add-toggle-for-enchant-level-clamping.patch (100%) rename patches/{server => unapplied-server}/0246-Skip-junit-tests-for-purpur-commands.patch (100%) rename patches/{server => unapplied-server}/0247-Implement-configurable-search-radius-for-villagers-t.patch (100%) rename patches/{server => unapplied-server}/0248-Stonecutter-damage.patch (100%) rename patches/{server => unapplied-server}/0249-Configurable-damage-settings-for-magma-blocks.patch (100%) rename patches/{server => unapplied-server}/0250-Add-config-for-snow-on-blue-ice.patch (100%) rename patches/{server => unapplied-server}/0251-Skeletons-eat-wither-roses.patch (100%) rename patches/{server => unapplied-server}/0252-Enchantment-Table-Persists-Lapis.patch (100%) rename patches/{server => unapplied-server}/0253-Spark-Profiler.patch (100%) rename patches/{server => unapplied-server}/0254-Option-to-disable-kick-for-out-of-order-chat.patch (100%) rename patches/{server => unapplied-server}/0255-Config-for-sculk-shrieker-can_summon-state.patch (100%) rename patches/{server => unapplied-server}/0256-Config-to-not-let-coral-die.patch (100%) rename patches/{server => unapplied-server}/0257-Add-local-difficulty-api.patch (100%) rename patches/{server => unapplied-server}/0258-Add-toggle-for-RNG-manipulation.patch (100%) rename patches/{server => unapplied-server}/0259-Send-client-custom-name-of-BE.patch (100%) rename patches/{server => unapplied-server}/0260-Remove-Timings.patch (100%) rename patches/{server => unapplied-server}/0261-Remove-Mojang-Profiler.patch (100%) rename patches/{server => unapplied-server}/0262-Add-more-logger-output-for-invalid-movement-kicks.patch (100%) rename patches/{server => unapplied-server}/0263-Add-Bee-API.patch (100%) rename patches/{server => unapplied-server}/0264-Debug-Marker-API.patch (100%) rename patches/{server => unapplied-server}/0265-mob-spawning-option-to-ignore-creative-players.patch (100%) rename patches/{server => unapplied-server}/0266-Add-skeleton-bow-accuracy-option.patch (100%) rename patches/{server => unapplied-server}/0267-Allay-respect-item-NBT.patch (100%) rename patches/{server => unapplied-server}/0268-Add-death-screen-API.patch (100%) rename patches/{server => unapplied-server}/0269-Make-pufferfish-config-relocatable.patch (100%) rename patches/{server => unapplied-server}/0270-Implement-ram-and-rambar-commands.patch (100%) rename patches/{server => unapplied-server}/0271-Add-item-packet-serialize-event.patch (100%) rename patches/{server => unapplied-server}/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch (100%) rename patches/{server => unapplied-server}/0273-Configurable-block-blast-resistance.patch (100%) rename patches/{server => unapplied-server}/0274-Configurable-block-fall-damage-modifiers.patch (100%) rename patches/{server => unapplied-server}/0275-Language-API.patch (100%) rename patches/{server => unapplied-server}/0276-Milk-Keeps-Beneficial-Effects.patch (100%) rename patches/{server => unapplied-server}/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch (100%) rename patches/{server => unapplied-server}/0278-Add-log-suppression-for-LibraryLoader.patch (100%) rename patches/{server => unapplied-server}/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch (100%) rename patches/{server => unapplied-server}/0280-Fire-Immunity-API.patch (100%) rename patches/{server => unapplied-server}/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch (100%) rename patches/{server => unapplied-server}/0282-Added-got-ram-event.patch (100%) rename patches/{server => unapplied-server}/0283-Log-skipped-entity-s-position.patch (100%) rename patches/{server => unapplied-server}/0284-End-Crystal-Cramming.patch (100%) rename patches/{server => unapplied-server}/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch (100%) rename patches/{server => unapplied-server}/0286-Add-attribute-clamping-and-armor-limit-config.patch (100%) rename patches/{server => unapplied-server}/0287-Config-to-remove-explosion-radius-clamp.patch (100%) rename patches/{server => unapplied-server}/0288-bonemealable-sugarcane-cactus-and-netherwart.patch (100%) rename patches/{server => unapplied-server}/0289-Add-PreExplodeEvents.patch (100%) rename patches/{server => unapplied-server}/0290-Improve-output-of-plugins-command.patch (100%) rename patches/{server => unapplied-server}/0291-Add-mending-multiplier.patch (100%) rename patches/{server => unapplied-server}/0292-Make-GUI-Great-Again.patch (100%) rename patches/{server => unapplied-server}/0293-Stored-Bee-API.patch (100%) rename patches/{server => unapplied-server}/0294-Shears-can-defuse-TNT.patch (100%) rename patches/{server => unapplied-server}/0295-Explorer-Map-API.patch (100%) rename patches/{server => unapplied-server}/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch (100%) rename patches/{server => unapplied-server}/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch (100%) rename patches/{server => unapplied-server}/0298-Add-option-for-always-showing-item-in-player-death-m.patch (100%) rename patches/{server => unapplied-server}/0299-place-end-crystal-on-any-block.patch (100%) rename patches/{server => unapplied-server}/0300-Add-hover-lines-API.patch (100%) rename patches/{server => unapplied-server}/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch (100%) rename patches/{server => unapplied-server}/0302-register-minecraft-debug-commands.patch (100%) rename patches/{server => unapplied-server}/0303-Configurable-villager-search-radius.patch (100%) diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0001-Purpur-config-files.patch similarity index 85% rename from patches/api/0003-Purpur-config-files.patch rename to patches/api/0001-Purpur-config-files.patch index 9f404b21d..8c5af4435 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0001-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 4ff1b38eb65f97344257204cf018f176f247ed36..2e9abd4887b54dab53217c01773e0be5fb3b19fa 100644 +index 27084402cf0e46dcd171074629b7c4156e48aa44..c0d6b38c2676f33698099a439f2c8754155e0030 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2235,6 +2235,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2254,6 +2254,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0004-Build-System-Changes.patch b/patches/api/0002-Build-System-Changes.patch similarity index 85% rename from patches/api/0004-Build-System-Changes.patch rename to patches/api/0002-Build-System-Changes.patch index 26cdf44be..75f91f3eb 100644 --- a/patches/api/0004-Build-System-Changes.patch +++ b/patches/api/0002-Build-System-Changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build System Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 80833c13a2d19e31d6f648e7ef5b3456025e767e..0a33275fdf16bda47771bab9ddfeb2bf8616c2dc 100644 +index 65e67b8726f1e19a6bcb1fe2f448e4ab68df11d1..892e78b1d2d29dc54def03fcb6d85a93ad56d84c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -129,6 +129,8 @@ tasks.jar { +@@ -121,6 +121,8 @@ tasks.jar { } tasks.withType { diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch similarity index 82% rename from patches/api/0005-Purpur-client-support.patch rename to patches/api/0003-Purpur-client-support.patch index a35ae5e97..72e940ac6 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index d048ae07cc33fd77d128cc1ebf88b0804969fa3c..761abf496f8ef400460869d667afe2cf45ffb5f3 100644 +index 8a1e39474af88188f2e1765731b57d349f0ee645..9f8011e945b520bf116b835fe92c745d04966564 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3752,4 +3752,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3796,4 +3796,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0006-Default-permissions.patch b/patches/api/0004-Default-permissions.patch similarity index 100% rename from patches/api/0006-Default-permissions.patch rename to patches/api/0004-Default-permissions.patch diff --git a/patches/api/0007-Ridables.patch b/patches/api/0005-Ridables.patch similarity index 97% rename from patches/api/0007-Ridables.patch rename to patches/api/0005-Ridables.patch index f27b057a0..fb93dd846 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0005-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 23def071492ccd715693d534cc506936e18f0f46..93178130cba1aea4c210e47925703dca49ad4d97 100644 +index 62e3793903905b94eb1a120345015149abb33713..50344412a04f3008439e337ecf9dd09c7f853bc9 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1144,4 +1144,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1155,4 +1155,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/api/0008-Allow-inventory-resizing.patch b/patches/api/0006-Allow-inventory-resizing.patch similarity index 83% rename from patches/api/0008-Allow-inventory-resizing.patch rename to patches/api/0006-Allow-inventory-resizing.patch index 6d4b1cf47..6b3fad2ac 100644 --- a/patches/api/0008-Allow-inventory-resizing.patch +++ b/patches/api/0006-Allow-inventory-resizing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow inventory resizing diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java -index daa1306a7324d946d66ad5a674bbc84371d8d4d6..f3b2d7b6fda051211add2b3215f120fb6911aeed 100644 +index 59b375569a75cb1e1f7c610f96078e102ec0d3ed..a3f74891abbdc51dbbddaeb511f2754e0603c904 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryType.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java -@@ -165,7 +165,7 @@ public enum InventoryType { +@@ -166,7 +166,7 @@ public enum InventoryType { SMITHING_NEW(4, "Upgrade Gear"), ; diff --git a/patches/api/0009-Llama-API.patch b/patches/api/0007-Llama-API.patch similarity index 100% rename from patches/api/0009-Llama-API.patch rename to patches/api/0007-Llama-API.patch diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0008-AFK-API.patch similarity index 95% rename from patches/api/0010-AFK-API.patch rename to patches/api/0008-AFK-API.patch index b3944044a..e67466b3e 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 761abf496f8ef400460869d667afe2cf45ffb5f3..95669dfc1de917f4d22242ceda94e64741221469 100644 +index 9f8011e945b520bf116b835fe92c745d04966564..c11a8d36cf5c5172ad075af196a2e5be722d06c4 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3760,5 +3760,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3804,5 +3804,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0009-Bring-back-server-name.patch similarity index 79% rename from patches/api/0011-Bring-back-server-name.patch rename to patches/api/0009-Bring-back-server-name.patch index 300d69c1c..57c79496b 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0009-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 9a428153f34291bdc026a71f7e60e285b7794b0c..a7ab6c954c67fe802ebd4611a8c355d19873a465 100644 +index 687bd8f54c9bfb5f5ab1f7ad9d232daf2433cc76..8b6bc7028414cf005e9de8686a009e6b1f5ce0ec 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2884,4 +2884,15 @@ public final class Bukkit { +@@ -2907,4 +2907,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index 9a428153f34291bdc026a71f7e60e285b7794b0c..a7ab6c954c67fe802ebd4611a8c355d1 + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 2e9abd4887b54dab53217c01773e0be5fb3b19fa..ef56a9a52cad11377f4a58b92bcb1bc2740002df 100644 +index c0d6b38c2676f33698099a439f2c8754155e0030..4fbd136bc4a352ba26f1e65fd5fa2f58247c33f8 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2530,4 +2530,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2549,4 +2549,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0012-ExecuteCommandEvent.patch b/patches/api/0010-ExecuteCommandEvent.patch similarity index 100% rename from patches/api/0012-ExecuteCommandEvent.patch rename to patches/api/0010-ExecuteCommandEvent.patch diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0011-LivingEntity-safeFallDistance.patch similarity index 86% rename from patches/api/0013-LivingEntity-safeFallDistance.patch rename to patches/api/0011-LivingEntity-safeFallDistance.patch index 5b9e0d217..07a515657 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0011-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 65112eae8b92344796850b1e4c89e75443eab2fe..0a970ea7bfce16476ceafbe9764115f6610a248b 100644 +index b777e530122549455dcce6fac8d4a151c1c0af42..c79633aa059a13753069cf06444e1834137f86c4 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1445,4 +1445,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end - body yaw API diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0012-Lagging-threshold.patch similarity index 79% rename from patches/api/0014-Lagging-threshold.patch rename to patches/api/0012-Lagging-threshold.patch index e1bdc520d..4e37a1abd 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0012-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index a7ab6c954c67fe802ebd4611a8c355d19873a465..8ff0b6c0bab4c8972de1c59b7a9c4e80db350fba 100644 +index 8b6bc7028414cf005e9de8686a009e6b1f5ce0ec..d0776d18cbfd0d2099b6107c395251adb4b24b94 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2894,5 +2894,14 @@ public final class Bukkit { +@@ -2917,5 +2917,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index a7ab6c954c67fe802ebd4611a8c355d19873a465..8ff0b6c0bab4c8972de1c59b7a9c4e80 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index ef56a9a52cad11377f4a58b92bcb1bc2740002df..846707b827e9f542c7a0b3191ea92b602dd4aa63 100644 +index 4fbd136bc4a352ba26f1e65fd5fa2f58247c33f8..f90401f03566dce125b470a559d4ac7837f44f22 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2538,5 +2538,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2557,5 +2557,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/api/0015-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/api/0016-Anvil-API.patch b/patches/api/0014-Anvil-API.patch similarity index 100% rename from patches/api/0016-Anvil-API.patch rename to patches/api/0014-Anvil-API.patch diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0015-ItemStack-convenience-methods.patch similarity index 98% rename from patches/api/0017-ItemStack-convenience-methods.patch rename to patches/api/0015-ItemStack-convenience-methods.patch index e2da4b827..1fa7d92b9 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0015-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09fcc9c960c 100644 +index 82d009c0bbe4b3026a535e02d6e0ed20c7bd525d..0366400fe6dea7af40badaa3335b49ff5992a516 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11559,4 +11559,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11653,4 +11653,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } @@ -50,7 +50,7 @@ index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09f + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 7414b4fa690d393a8e9557cc1fd1ce12fa426940..9e3531e1bd9a67b602a09aca8af1191d10bc9e16 100644 +index 84a7bf0936d35bf42b5ed038d295d5c31740f472..4eb8ade7116b6271baf5b99917c66c7156d8e594 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; @@ -72,7 +72,7 @@ index 7414b4fa690d393a8e9557cc1fd1ce12fa426940..9e3531e1bd9a67b602a09aca8af1191d /** * Represents a stack of items. -@@ -1061,4 +1073,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1073,4 +1085,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player); } // Paper end - expose itemstack tooltip lines diff --git a/patches/api/0018-LivingEntity-broadcastItemBreak.patch b/patches/api/0016-LivingEntity-broadcastItemBreak.patch similarity index 84% rename from patches/api/0018-LivingEntity-broadcastItemBreak.patch rename to patches/api/0016-LivingEntity-broadcastItemBreak.patch index 9fd2aebc2..3b4acd3da 100644 --- a/patches/api/0018-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0016-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 0a970ea7bfce16476ceafbe9764115f6610a248b..bcc1488c351b25bd49d37dae7719bbb7057acf66 100644 +index c79633aa059a13753069cf06444e1834137f86c4..6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1460,5 +1460,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1462,5 +1462,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0019-ChatColor-conveniences.patch b/patches/api/0017-ChatColor-conveniences.patch similarity index 100% rename from patches/api/0019-ChatColor-conveniences.patch rename to patches/api/0017-ChatColor-conveniences.patch diff --git a/patches/api/0020-Item-entity-immunities.patch b/patches/api/0018-Item-entity-immunities.patch similarity index 95% rename from patches/api/0020-Item-entity-immunities.patch rename to patches/api/0018-Item-entity-immunities.patch index 9fd92a3af..dd689e3cd 100644 --- a/patches/api/0020-Item-entity-immunities.patch +++ b/patches/api/0018-Item-entity-immunities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java -index 58017fce436cdbda255f7172fbdadb726d4b113c..05600fc8bf2a61aca8094029bc4c208a710da952 100644 +index bcc6ba95bd21c7972865838c636a03f50b6c1f1a..c3fcd8dd7dbb1e1a18e17c014c1e641149ea5960 100644 --- a/src/main/java/org/bukkit/entity/Item.java +++ b/src/main/java/org/bukkit/entity/Item.java @@ -153,4 +153,62 @@ public interface Item extends Entity, io.papermc.paper.entity.Frictional { // Pa diff --git a/patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0021-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0022-Rabid-Wolf-API.patch b/patches/api/0020-Rabid-Wolf-API.patch similarity index 69% rename from patches/api/0022-Rabid-Wolf-API.patch rename to patches/api/0020-Rabid-Wolf-API.patch index 00848e1a5..fa9743084 100644 --- a/patches/api/0022-Rabid-Wolf-API.patch +++ b/patches/api/0020-Rabid-Wolf-API.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Rabid Wolf API diff --git a/src/main/java/org/bukkit/entity/Wolf.java b/src/main/java/org/bukkit/entity/Wolf.java -index 84db38388bf7a58e66d6cd29620b4fe64b0a897e..82ebd99549ce9f9e6427a50cef424e9007735708 100644 +index 4b84c04675775e2a606630b00de8afe51665cebc..ccbaf40a3131f477b4be2264401ad893725c1162 100644 --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java -@@ -69,4 +69,20 @@ public interface Wolf extends Tameable, Sittable, io.papermc.paper.entity.Collar - * @param interested Whether the wolf is interested - */ - public void setInterested(boolean interested); +@@ -112,4 +112,20 @@ public interface Wolf extends Tameable, Sittable, io.papermc.paper.entity.Collar + return variant; + } + } + + // Purpur start + /** diff --git a/patches/api/0023-PlayerBookTooLargeEvent.patch b/patches/api/0021-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0023-PlayerBookTooLargeEvent.patch rename to patches/api/0021-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0024-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0025-Add-EntityTeleportHinderedEvent.patch b/patches/api/0023-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0025-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0023-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0026-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch similarity index 82% rename from patches/api/0027-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0025-API-for-any-mob-to-burn-daylight.patch index 4e3e15db2..91934d89e 100644 --- a/patches/api/0027-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 93178130cba1aea4c210e47925703dca49ad4d97..51ae4b559a6ebb5c324ac029c86e5b5a6b894d7e 100644 +index 50344412a04f3008439e337ecf9dd09c7f853bc9..f482467ae784b134da97eb38afb7f12585520297 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1174,5 +1174,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1185,5 +1185,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if ridable in water */ boolean isRidableInWater(); @@ -23,10 +23,10 @@ index 93178130cba1aea4c210e47925703dca49ad4d97..51ae4b559a6ebb5c324ac029c86e5b5a // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index bcc1488c351b25bd49d37dae7719bbb7057acf66..5369d802d37863a1efc0c031520147ceedcadc78 100644 +index 6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c..4cbad9f23f232297ca1254c000b456042ffa26df 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1467,5 +1467,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1469,5 +1469,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0028-Add-back-player-spawned-endermite-API.patch b/patches/api/0026-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/api/0028-Add-back-player-spawned-endermite-API.patch rename to patches/api/0026-Add-back-player-spawned-endermite-API.patch diff --git a/patches/api/0029-Fix-default-permission-system.patch b/patches/api/0027-Fix-default-permission-system.patch similarity index 100% rename from patches/api/0029-Fix-default-permission-system.patch rename to patches/api/0027-Fix-default-permission-system.patch diff --git a/patches/api/0030-Summoner-API.patch b/patches/api/0028-Summoner-API.patch similarity index 100% rename from patches/api/0030-Summoner-API.patch rename to patches/api/0028-Summoner-API.patch diff --git a/patches/api/0031-Clean-up-version-command-output.patch b/patches/api/0029-Clean-up-version-command-output.patch similarity index 100% rename from patches/api/0031-Clean-up-version-command-output.patch rename to patches/api/0029-Clean-up-version-command-output.patch diff --git a/patches/api/0032-Extended-OfflinePlayer-API.patch b/patches/api/0030-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/api/0032-Extended-OfflinePlayer-API.patch rename to patches/api/0030-Extended-OfflinePlayer-API.patch diff --git a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch b/patches/api/0031-Added-the-ability-to-add-combustible-items.patch similarity index 85% rename from patches/api/0033-Added-the-ability-to-add-combustible-items.patch rename to patches/api/0031-Added-the-ability-to-add-combustible-items.patch index 6c5238aa8..e257ae165 100644 --- a/patches/api/0033-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0031-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 8ff0b6c0bab4c8972de1c59b7a9c4e80db350fba..15f27ae49daf0c9140b429d310f9112f64bd29ab 100644 +index d0776d18cbfd0d2099b6107c395251adb4b24b94..1a8026b34415602f8c5304355816e0a506cac99d 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2903,5 +2903,24 @@ public final class Bukkit { +@@ -2926,5 +2926,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index 8ff0b6c0bab4c8972de1c59b7a9c4e80db350fba..15f27ae49daf0c9140b429d310f9112f // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 846707b827e9f542c7a0b3191ea92b602dd4aa63..e318d4d5a1fec1522ef37aed2ed677952e50943b 100644 +index f90401f03566dce125b470a559d4ac7837f44f22..6f5a7029e4e048b6a68f856c35545101f11387ed 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2545,5 +2545,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2564,5 +2564,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0034-Potion-NamespacedKey.patch b/patches/api/0032-Potion-NamespacedKey.patch similarity index 100% rename from patches/api/0034-Potion-NamespacedKey.patch rename to patches/api/0032-Potion-NamespacedKey.patch diff --git a/patches/api/0035-Grindstone-API.patch b/patches/api/0033-Grindstone-API.patch similarity index 100% rename from patches/api/0035-Grindstone-API.patch rename to patches/api/0033-Grindstone-API.patch diff --git a/patches/api/0036-Shears-can-have-looting-enchantment.patch b/patches/api/0034-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0036-Shears-can-have-looting-enchantment.patch rename to patches/api/0034-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0037-Lobotomize-stuck-villagers.patch b/patches/api/0035-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0037-Lobotomize-stuck-villagers.patch rename to patches/api/0035-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0038-Add-local-difficulty-api.patch b/patches/api/0036-Add-local-difficulty-api.patch similarity index 84% rename from patches/api/0038-Add-local-difficulty-api.patch rename to patches/api/0036-Add-local-difficulty-api.patch index 81e7584d5..46e1e1486 100644 --- a/patches/api/0038-Add-local-difficulty-api.patch +++ b/patches/api/0036-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index e6f66d70d024cf4f0536a5bf8e51bf7b306335df..2d2d8a7494605e465c68b325d3043d334757e9bc 100644 +index 97f97ea5c6aa513c439f86a9c82821e0f7d9cd1e..099516b90c504205b894b387542221e8c0c98b40 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4233,6 +4233,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4249,6 +4249,16 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/api/0039-Remove-Timings.patch b/patches/api/0037-Remove-Timings.patch similarity index 100% rename from patches/api/0039-Remove-Timings.patch rename to patches/api/0037-Remove-Timings.patch diff --git a/patches/api/0040-Add-Bee-API.patch b/patches/api/0038-Add-Bee-API.patch similarity index 100% rename from patches/api/0040-Add-Bee-API.patch rename to patches/api/0038-Add-Bee-API.patch diff --git a/patches/api/0041-Debug-Marker-API.patch b/patches/api/0039-Debug-Marker-API.patch similarity index 96% rename from patches/api/0041-Debug-Marker-API.patch rename to patches/api/0039-Debug-Marker-API.patch index 4ca4b2bcb..faa224316 100644 --- a/patches/api/0041-Debug-Marker-API.patch +++ b/patches/api/0039-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 15f27ae49daf0c9140b429d310f9112f64bd29ab..53ce0fb2dac9c22680ab934f535b5a2037139445 100644 +index 1a8026b34415602f8c5304355816e0a506cac99d..60de2456d00e85ac5ec5c4549198429aea87bc6d 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2922,5 +2922,89 @@ public final class Bukkit { +@@ -2945,5 +2945,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 15f27ae49daf0c9140b429d310f9112f64bd29ab..53ce0fb2dac9c22680ab934f535b5a20 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index e318d4d5a1fec1522ef37aed2ed677952e50943b..c15b0b05870a469ea5d314c9fac6a57a045f463c 100644 +index 6f5a7029e4e048b6a68f856c35545101f11387ed..a15d0ed710ff261f203d7e355e7d532f2e68abc9 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2560,5 +2560,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2579,5 +2579,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -179,10 +179,10 @@ index e318d4d5a1fec1522ef37aed2ed677952e50943b..c15b0b05870a469ea5d314c9fac6a57a // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 2d2d8a7494605e465c68b325d3043d334757e9bc..07e75978b4fc0e446e8aa46a40be5e371dc1c11b 100644 +index 099516b90c504205b894b387542221e8c0c98b40..83a5b68c785a88594e6e3824ed282844086f7f1a 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4241,6 +4241,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4257,6 +4257,76 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient * @return The local difficulty */ public float getLocalDifficultyAt(@NotNull Location location); @@ -260,10 +260,10 @@ index 2d2d8a7494605e465c68b325d3043d334757e9bc..07e75978b4fc0e446e8aa46a40be5e37 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 95669dfc1de917f4d22242ceda94e64741221469..1fce58c500ad37a3f4d0b8a3bf18ccb149058dcd 100644 +index c11a8d36cf5c5172ad075af196a2e5be722d06c4..6359c1584673c2cfb0d945b2a88a41372218b46b 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3780,5 +3780,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3824,5 +3824,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated Use {@link #resetIdleDuration()} instead */ void resetIdleTimer(); diff --git a/patches/api/0042-Add-death-screen-API.patch b/patches/api/0040-Add-death-screen-API.patch similarity index 89% rename from patches/api/0042-Add-death-screen-API.patch rename to patches/api/0040-Add-death-screen-API.patch index b0fe2b51a..c0a8687ae 100644 --- a/patches/api/0042-Add-death-screen-API.patch +++ b/patches/api/0040-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 1fce58c500ad37a3f4d0b8a3bf18ccb149058dcd..8bbbdad40bc6a1932d8f79ec95c0a92037b3dac5 100644 +index 6359c1584673c2cfb0d945b2a88a41372218b46b..b76adf4370555b02b891a49f8019b4e152c002c2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3850,5 +3850,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3894,5 +3894,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/api/0043-Add-item-packet-serialize-event.patch b/patches/api/0041-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/api/0043-Add-item-packet-serialize-event.patch rename to patches/api/0041-Add-item-packet-serialize-event.patch diff --git a/patches/api/0044-Language-API.patch b/patches/api/0042-Language-API.patch similarity index 100% rename from patches/api/0044-Language-API.patch rename to patches/api/0042-Language-API.patch diff --git a/patches/api/0045-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0043-Add-log-suppression-for-LibraryLoader.patch similarity index 89% rename from patches/api/0045-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0043-Add-log-suppression-for-LibraryLoader.patch index 456417ac0..8ecbea4f6 100644 --- a/patches/api/0045-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/api/0043-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -index 301e82369603f3dd6e6c1bd380da4bacacd7ef6c..0c6ca7588fb3d6b6497ddf032fe75e5c6c9719e5 100644 +index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..f1e58639213be0c43cd2ff090b625e7d0a67e8be 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -55,6 +55,7 @@ public final class JavaPluginLoader implements PluginLoader { @@ -17,7 +17,7 @@ index 301e82369603f3dd6e6c1bd380da4bacacd7ef6c..0c6ca7588fb3d6b6497ddf032fe75e5c /** * This class was not meant to be constructed explicitly diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -index 653135352c104a6ddeb74a1b6d4916c6952d6271..46b0d02aa759b3735e6ac811523d459cf263aa8b 100644 +index f4d655a158410039305ac68cebe0d79000f73df8..449f36f73e7a16b3a7c1e7ea2a0ca9b59050db62 100644 --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java @@ -66,6 +66,7 @@ public class LibraryLoader @@ -28,7 +28,7 @@ index 653135352c104a6ddeb74a1b6d4916c6952d6271..46b0d02aa759b3735e6ac811523d459c logger.log( Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); } } ); -@@ -81,6 +82,7 @@ public class LibraryLoader +@@ -86,6 +87,7 @@ public class LibraryLoader { return null; } @@ -36,7 +36,7 @@ index 653135352c104a6ddeb74a1b6d4916c6952d6271..46b0d02aa759b3735e6ac811523d459c logger.log( Level.INFO, "[{0}] Loading {1} libraries... please wait", new Object[] { java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), desc.getLibraries().size() // Paper - use configured log prefix -@@ -119,6 +121,7 @@ public class LibraryLoader +@@ -124,6 +126,7 @@ public class LibraryLoader } jarFiles.add( url ); diff --git a/patches/api/0046-Fire-Immunity-API.patch b/patches/api/0044-Fire-Immunity-API.patch similarity index 84% rename from patches/api/0046-Fire-Immunity-API.patch rename to patches/api/0044-Fire-Immunity-API.patch index e143436ef..d84da08f3 100644 --- a/patches/api/0046-Fire-Immunity-API.patch +++ b/patches/api/0044-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 51ae4b559a6ebb5c324ac029c86e5b5a6b894d7e..706096924ffd3b578866693e2937de4182fad554 100644 +index f482467ae784b134da97eb38afb7f12585520297..07b8c0dd049ff783fd2e408be634642479bf8b1e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1181,5 +1181,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1192,5 +1192,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/api/0047-Added-goat-ram-event.patch b/patches/api/0045-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0047-Added-goat-ram-event.patch rename to patches/api/0045-Added-goat-ram-event.patch diff --git a/patches/api/0048-Add-PreExplodeEvents.patch b/patches/api/0046-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0048-Add-PreExplodeEvents.patch rename to patches/api/0046-Add-PreExplodeEvents.patch diff --git a/patches/api/0049-Stored-Bee-API.patch b/patches/api/0047-Stored-Bee-API.patch similarity index 100% rename from patches/api/0049-Stored-Bee-API.patch rename to patches/api/0047-Stored-Bee-API.patch diff --git a/patches/api/0050-Explorer-Map-API.patch b/patches/api/0048-Explorer-Map-API.patch similarity index 100% rename from patches/api/0050-Explorer-Map-API.patch rename to patches/api/0048-Explorer-Map-API.patch diff --git a/patches/api/0051-Add-hover-lines-API.patch b/patches/api/0049-Add-hover-lines-API.patch similarity index 87% rename from patches/api/0051-Add-hover-lines-API.patch rename to patches/api/0049-Add-hover-lines-API.patch index 59c4d2029..ae1b61647 100644 --- a/patches/api/0051-Add-hover-lines-API.patch +++ b/patches/api/0049-Add-hover-lines-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java -index f680545b6b59bf8d2ad154b0472dda4cba42a162..58a62ba0635f9158bf18043da89aba7521e0e2e1 100644 +index 98a970a6582dca22e719a31559c7becea4725cb2..1cd2962ceb4fa0a0a3e28a09fa4ccef5802cd5c4 100644 --- a/src/main/java/org/bukkit/inventory/ItemFactory.java +++ b/src/main/java/org/bukkit/inventory/ItemFactory.java @@ -353,4 +353,14 @@ public interface ItemFactory { @@ -24,10 +24,10 @@ index f680545b6b59bf8d2ad154b0472dda4cba42a162..58a62ba0635f9158bf18043da89aba75 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 9e3531e1bd9a67b602a09aca8af1191d10bc9e16..591759aef6c7c3333cbdab596c6619af9185c3c2 100644 +index 4eb8ade7116b6271baf5b99917c66c7156d8e594..80e0978c032ccbe9546515e1fe29de5820c7e7f0 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -1694,5 +1694,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1706,5 +1706,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat } return random.nextInt(unbreaking + 1) > 0; } diff --git a/patches/api/0052-Stonecutter-damage.patch b/patches/api/0050-Stonecutter-damage.patch similarity index 100% rename from patches/api/0052-Stonecutter-damage.patch rename to patches/api/0050-Stonecutter-damage.patch diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/unapplied-api/0001-Pufferfish-API-Changes.patch similarity index 100% rename from patches/api/0001-Pufferfish-API-Changes.patch rename to patches/unapplied-api/0001-Pufferfish-API-Changes.patch diff --git a/patches/api/0002-Fix-pufferfish-issues.patch b/patches/unapplied-api/0002-Fix-pufferfish-issues.patch similarity index 100% rename from patches/api/0002-Fix-pufferfish-issues.patch rename to patches/unapplied-api/0002-Fix-pufferfish-issues.patch diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/unapplied-server/0001-Pufferfish-Server-Changes.patch similarity index 100% rename from patches/server/0001-Pufferfish-Server-Changes.patch rename to patches/unapplied-server/0001-Pufferfish-Server-Changes.patch diff --git a/patches/server/0002-Rebrand.patch b/patches/unapplied-server/0002-Rebrand.patch similarity index 100% rename from patches/server/0002-Rebrand.patch rename to patches/unapplied-server/0002-Rebrand.patch diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/unapplied-server/0003-Fix-pufferfish-issues.patch similarity index 100% rename from patches/server/0003-Fix-pufferfish-issues.patch rename to patches/unapplied-server/0003-Fix-pufferfish-issues.patch diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/unapplied-server/0004-Purpur-config-files.patch similarity index 100% rename from patches/server/0004-Purpur-config-files.patch rename to patches/unapplied-server/0004-Purpur-config-files.patch diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/unapplied-server/0005-Purpur-client-support.patch similarity index 100% rename from patches/server/0005-Purpur-client-support.patch rename to patches/unapplied-server/0005-Purpur-client-support.patch diff --git a/patches/server/0006-Fix-decompile-errors.patch b/patches/unapplied-server/0006-Fix-decompile-errors.patch similarity index 100% rename from patches/server/0006-Fix-decompile-errors.patch rename to patches/unapplied-server/0006-Fix-decompile-errors.patch diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/unapplied-server/0007-Component-related-conveniences.patch similarity index 100% rename from patches/server/0007-Component-related-conveniences.patch rename to patches/unapplied-server/0007-Component-related-conveniences.patch diff --git a/patches/server/0008-Ridables.patch b/patches/unapplied-server/0008-Ridables.patch similarity index 100% rename from patches/server/0008-Ridables.patch rename to patches/unapplied-server/0008-Ridables.patch diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/unapplied-server/0009-Configurable-entity-base-attributes.patch similarity index 100% rename from patches/server/0009-Configurable-entity-base-attributes.patch rename to patches/unapplied-server/0009-Configurable-entity-base-attributes.patch diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from patches/server/0010-Barrels-and-enderchests-6-rows.patch rename to patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch diff --git a/patches/server/0011-Llama-API.patch b/patches/unapplied-server/0011-Llama-API.patch similarity index 100% rename from patches/server/0011-Llama-API.patch rename to patches/unapplied-server/0011-Llama-API.patch diff --git a/patches/server/0012-AFK-API.patch b/patches/unapplied-server/0012-AFK-API.patch similarity index 100% rename from patches/server/0012-AFK-API.patch rename to patches/unapplied-server/0012-AFK-API.patch diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/unapplied-server/0013-Bring-back-server-name.patch similarity index 100% rename from patches/server/0013-Bring-back-server-name.patch rename to patches/unapplied-server/0013-Bring-back-server-name.patch diff --git a/patches/server/0014-Configurable-server-mod-name.patch b/patches/unapplied-server/0014-Configurable-server-mod-name.patch similarity index 100% rename from patches/server/0014-Configurable-server-mod-name.patch rename to patches/unapplied-server/0014-Configurable-server-mod-name.patch diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/server/0015-LivingEntity-safeFallDistance.patch rename to patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/unapplied-server/0016-Lagging-threshold.patch similarity index 100% rename from patches/server/0016-Lagging-threshold.patch rename to patches/unapplied-server/0016-Lagging-threshold.patch diff --git a/patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/unapplied-server/0017-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/unapplied-server/0017-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/server/0018-Anvil-API.patch b/patches/unapplied-server/0018-Anvil-API.patch similarity index 100% rename from patches/server/0018-Anvil-API.patch rename to patches/unapplied-server/0018-Anvil-API.patch diff --git a/patches/server/0019-Alternative-Keepalive-Handling.patch b/patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch similarity index 100% rename from patches/server/0019-Alternative-Keepalive-Handling.patch rename to patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch diff --git a/patches/server/0020-Silk-touch-spawners.patch b/patches/unapplied-server/0020-Silk-touch-spawners.patch similarity index 100% rename from patches/server/0020-Silk-touch-spawners.patch rename to patches/unapplied-server/0020-Silk-touch-spawners.patch diff --git a/patches/server/0021-Add-turtle-egg-block-options.patch b/patches/unapplied-server/0021-Add-turtle-egg-block-options.patch similarity index 100% rename from patches/server/0021-Add-turtle-egg-block-options.patch rename to patches/unapplied-server/0021-Add-turtle-egg-block-options.patch diff --git a/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch b/patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/server/0022-Logger-settings-suppressing-pointless-logs.patch rename to patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/server/0023-Disable-outdated-build-check.patch b/patches/unapplied-server/0023-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0023-Disable-outdated-build-check.patch rename to patches/unapplied-server/0023-Disable-outdated-build-check.patch diff --git a/patches/server/0024-Giants-AI-settings.patch b/patches/unapplied-server/0024-Giants-AI-settings.patch similarity index 100% rename from patches/server/0024-Giants-AI-settings.patch rename to patches/unapplied-server/0024-Giants-AI-settings.patch diff --git a/patches/server/0025-Zombie-horse-naturally-spawn.patch b/patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch similarity index 100% rename from patches/server/0025-Zombie-horse-naturally-spawn.patch rename to patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch diff --git a/patches/server/0026-Charged-creeper-naturally-spawn.patch b/patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch similarity index 100% rename from patches/server/0026-Charged-creeper-naturally-spawn.patch rename to patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch diff --git a/patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 100% rename from patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch diff --git a/patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0029-Tulips-change-fox-type.patch b/patches/unapplied-server/0029-Tulips-change-fox-type.patch similarity index 100% rename from patches/server/0029-Tulips-change-fox-type.patch rename to patches/unapplied-server/0029-Tulips-change-fox-type.patch diff --git a/patches/server/0030-Breedable-Polar-Bears.patch b/patches/unapplied-server/0030-Breedable-Polar-Bears.patch similarity index 100% rename from patches/server/0030-Breedable-Polar-Bears.patch rename to patches/unapplied-server/0030-Breedable-Polar-Bears.patch diff --git a/patches/server/0031-Chickens-can-retaliate.patch b/patches/unapplied-server/0031-Chickens-can-retaliate.patch similarity index 100% rename from patches/server/0031-Chickens-can-retaliate.patch rename to patches/unapplied-server/0031-Chickens-can-retaliate.patch diff --git a/patches/server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch similarity index 100% rename from patches/server/0032-Add-option-to-set-armorstand-step-height.patch rename to patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch diff --git a/patches/server/0033-Cat-spawning-options.patch b/patches/unapplied-server/0033-Cat-spawning-options.patch similarity index 100% rename from patches/server/0033-Cat-spawning-options.patch rename to patches/unapplied-server/0033-Cat-spawning-options.patch diff --git a/patches/server/0034-Cows-eat-mushrooms.patch b/patches/unapplied-server/0034-Cows-eat-mushrooms.patch similarity index 100% rename from patches/server/0034-Cows-eat-mushrooms.patch rename to patches/unapplied-server/0034-Cows-eat-mushrooms.patch diff --git a/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0036-Pigs-give-saddle-back.patch b/patches/unapplied-server/0036-Pigs-give-saddle-back.patch similarity index 100% rename from patches/server/0036-Pigs-give-saddle-back.patch rename to patches/unapplied-server/0036-Pigs-give-saddle-back.patch diff --git a/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch b/patches/unapplied-server/0037-Snowman-drop-and-put-back-pumpkin.patch similarity index 100% rename from patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch rename to patches/unapplied-server/0037-Snowman-drop-and-put-back-pumpkin.patch diff --git a/patches/server/0038-Ender-dragon-always-drop-full-exp.patch b/patches/unapplied-server/0038-Ender-dragon-always-drop-full-exp.patch similarity index 100% rename from patches/server/0038-Ender-dragon-always-drop-full-exp.patch rename to patches/unapplied-server/0038-Ender-dragon-always-drop-full-exp.patch diff --git a/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/unapplied-server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 100% rename from patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/unapplied-server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch diff --git a/patches/server/0040-Minecart-settings-and-WASD-controls.patch b/patches/unapplied-server/0040-Minecart-settings-and-WASD-controls.patch similarity index 100% rename from patches/server/0040-Minecart-settings-and-WASD-controls.patch rename to patches/unapplied-server/0040-Minecart-settings-and-WASD-controls.patch diff --git a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch similarity index 100% rename from patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch rename to patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch diff --git a/patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch b/patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch similarity index 100% rename from patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch diff --git a/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0044-Skip-events-if-there-s-no-listeners.patch b/patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0044-Skip-events-if-there-s-no-listeners.patch rename to patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0045-Add-permission-for-F3-N-debug.patch b/patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch similarity index 100% rename from patches/server/0045-Add-permission-for-F3-N-debug.patch rename to patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch diff --git a/patches/server/0046-Configurable-TPS-Catchup.patch b/patches/unapplied-server/0046-Configurable-TPS-Catchup.patch similarity index 100% rename from patches/server/0046-Configurable-TPS-Catchup.patch rename to patches/unapplied-server/0046-Configurable-TPS-Catchup.patch diff --git a/patches/server/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/unapplied-server/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch similarity index 100% rename from patches/server/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch rename to patches/unapplied-server/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch diff --git a/patches/server/0048-Add-enderman-and-creeper-griefing-controls.patch b/patches/unapplied-server/0048-Add-enderman-and-creeper-griefing-controls.patch similarity index 100% rename from patches/server/0048-Add-enderman-and-creeper-griefing-controls.patch rename to patches/unapplied-server/0048-Add-enderman-and-creeper-griefing-controls.patch diff --git a/patches/server/0049-Villagers-follow-emerald-blocks.patch b/patches/unapplied-server/0049-Villagers-follow-emerald-blocks.patch similarity index 100% rename from patches/server/0049-Villagers-follow-emerald-blocks.patch rename to patches/unapplied-server/0049-Villagers-follow-emerald-blocks.patch diff --git a/patches/server/0050-Allow-leashing-villagers.patch b/patches/unapplied-server/0050-Allow-leashing-villagers.patch similarity index 100% rename from patches/server/0050-Allow-leashing-villagers.patch rename to patches/unapplied-server/0050-Allow-leashing-villagers.patch diff --git a/patches/server/0051-Implement-infinite-liquids.patch b/patches/unapplied-server/0051-Implement-infinite-liquids.patch similarity index 100% rename from patches/server/0051-Implement-infinite-liquids.patch rename to patches/unapplied-server/0051-Implement-infinite-liquids.patch diff --git a/patches/server/0052-Make-lava-flow-speed-configurable.patch b/patches/unapplied-server/0052-Make-lava-flow-speed-configurable.patch similarity index 100% rename from patches/server/0052-Make-lava-flow-speed-configurable.patch rename to patches/unapplied-server/0052-Make-lava-flow-speed-configurable.patch diff --git a/patches/server/0053-Add-player-death-exp-control-options.patch b/patches/unapplied-server/0053-Add-player-death-exp-control-options.patch similarity index 100% rename from patches/server/0053-Add-player-death-exp-control-options.patch rename to patches/unapplied-server/0053-Add-player-death-exp-control-options.patch diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/unapplied-server/0054-Configurable-void-damage-height-and-damage.patch similarity index 100% rename from patches/server/0054-Configurable-void-damage-height-and-damage.patch rename to patches/unapplied-server/0054-Configurable-void-damage-height-and-damage.patch diff --git a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch similarity index 100% rename from patches/server/0055-Add-canSaveToDisk-to-Entity.patch rename to patches/unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch diff --git a/patches/server/0056-Dispenser-curse-of-binding-protection.patch b/patches/unapplied-server/0056-Dispenser-curse-of-binding-protection.patch similarity index 100% rename from patches/server/0056-Dispenser-curse-of-binding-protection.patch rename to patches/unapplied-server/0056-Dispenser-curse-of-binding-protection.patch diff --git a/patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch b/patches/unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch similarity index 100% rename from patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch diff --git a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/unapplied-server/0058-Mending-mends-most-damages-equipment-first.patch similarity index 100% rename from patches/server/0058-Mending-mends-most-damages-equipment-first.patch rename to patches/unapplied-server/0058-Mending-mends-most-damages-equipment-first.patch diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/unapplied-server/0059-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0059-Add-5-second-tps-average-in-tps.patch rename to patches/unapplied-server/0059-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0060-Implement-elytra-settings.patch b/patches/unapplied-server/0060-Implement-elytra-settings.patch similarity index 100% rename from patches/server/0060-Implement-elytra-settings.patch rename to patches/unapplied-server/0060-Implement-elytra-settings.patch diff --git a/patches/server/0061-Item-entity-immunities.patch b/patches/unapplied-server/0061-Item-entity-immunities.patch similarity index 100% rename from patches/server/0061-Item-entity-immunities.patch rename to patches/unapplied-server/0061-Item-entity-immunities.patch diff --git a/patches/server/0062-Add-ping-command.patch b/patches/unapplied-server/0062-Add-ping-command.patch similarity index 100% rename from patches/server/0062-Add-ping-command.patch rename to patches/unapplied-server/0062-Add-ping-command.patch diff --git a/patches/server/0063-Add-demo-command.patch b/patches/unapplied-server/0063-Add-demo-command.patch similarity index 100% rename from patches/server/0063-Add-demo-command.patch rename to patches/unapplied-server/0063-Add-demo-command.patch diff --git a/patches/server/0064-Add-credits-command.patch b/patches/unapplied-server/0064-Add-credits-command.patch similarity index 100% rename from patches/server/0064-Add-credits-command.patch rename to patches/unapplied-server/0064-Add-credits-command.patch diff --git a/patches/server/0065-Configurable-jockey-options.patch b/patches/unapplied-server/0065-Configurable-jockey-options.patch similarity index 100% rename from patches/server/0065-Configurable-jockey-options.patch rename to patches/unapplied-server/0065-Configurable-jockey-options.patch diff --git a/patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from patches/server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/patches/server/0067-Add-phantom-spawning-options.patch b/patches/unapplied-server/0067-Add-phantom-spawning-options.patch similarity index 100% rename from patches/server/0067-Add-phantom-spawning-options.patch rename to patches/unapplied-server/0067-Add-phantom-spawning-options.patch diff --git a/patches/server/0068-Implement-bed-explosion-options.patch b/patches/unapplied-server/0068-Implement-bed-explosion-options.patch similarity index 100% rename from patches/server/0068-Implement-bed-explosion-options.patch rename to patches/unapplied-server/0068-Implement-bed-explosion-options.patch diff --git a/patches/server/0069-Implement-respawn-anchor-explosion-options.patch b/patches/unapplied-server/0069-Implement-respawn-anchor-explosion-options.patch similarity index 100% rename from patches/server/0069-Implement-respawn-anchor-explosion-options.patch rename to patches/unapplied-server/0069-Implement-respawn-anchor-explosion-options.patch diff --git a/patches/server/0070-Add-allow-water-in-end-world-option.patch b/patches/unapplied-server/0070-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/server/0070-Add-allow-water-in-end-world-option.patch rename to patches/unapplied-server/0070-Add-allow-water-in-end-world-option.patch diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/unapplied-server/0071-Allow-color-codes-in-books.patch similarity index 100% rename from patches/server/0071-Allow-color-codes-in-books.patch rename to patches/unapplied-server/0071-Allow-color-codes-in-books.patch diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/unapplied-server/0072-Entity-lifespan.patch similarity index 100% rename from patches/server/0072-Entity-lifespan.patch rename to patches/unapplied-server/0072-Entity-lifespan.patch diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 100% rename from patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch diff --git a/patches/server/0074-Squid-EAR-immunity.patch b/patches/unapplied-server/0074-Squid-EAR-immunity.patch similarity index 100% rename from patches/server/0074-Squid-EAR-immunity.patch rename to patches/unapplied-server/0074-Squid-EAR-immunity.patch diff --git a/patches/server/0075-Phantoms-burn-in-light.patch b/patches/unapplied-server/0075-Phantoms-burn-in-light.patch similarity index 100% rename from patches/server/0075-Phantoms-burn-in-light.patch rename to patches/unapplied-server/0075-Phantoms-burn-in-light.patch diff --git a/patches/server/0076-Configurable-villager-breeding.patch b/patches/unapplied-server/0076-Configurable-villager-breeding.patch similarity index 100% rename from patches/server/0076-Configurable-villager-breeding.patch rename to patches/unapplied-server/0076-Configurable-villager-breeding.patch diff --git a/patches/server/0077-Redstone-deactivates-spawners.patch b/patches/unapplied-server/0077-Redstone-deactivates-spawners.patch similarity index 100% rename from patches/server/0077-Redstone-deactivates-spawners.patch rename to patches/unapplied-server/0077-Redstone-deactivates-spawners.patch diff --git a/patches/server/0078-Totems-work-in-inventory.patch b/patches/unapplied-server/0078-Totems-work-in-inventory.patch similarity index 100% rename from patches/server/0078-Totems-work-in-inventory.patch rename to patches/unapplied-server/0078-Totems-work-in-inventory.patch diff --git a/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/server/0079-Add-vindicator-johnny-spawn-chance.patch rename to patches/unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/server/0080-Dispensers-place-anvils-option.patch b/patches/unapplied-server/0080-Dispensers-place-anvils-option.patch similarity index 100% rename from patches/server/0080-Dispensers-place-anvils-option.patch rename to patches/unapplied-server/0080-Dispensers-place-anvils-option.patch diff --git a/patches/server/0081-Allow-anvil-colors.patch b/patches/unapplied-server/0081-Allow-anvil-colors.patch similarity index 100% rename from patches/server/0081-Allow-anvil-colors.patch rename to patches/unapplied-server/0081-Allow-anvil-colors.patch diff --git a/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/unapplied-server/0082-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 100% rename from patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/unapplied-server/0082-Add-option-to-disable-dolphin-treasure-searching.patch diff --git a/patches/server/0083-Short-enderman-height.patch b/patches/unapplied-server/0083-Short-enderman-height.patch similarity index 100% rename from patches/server/0083-Short-enderman-height.patch rename to patches/unapplied-server/0083-Short-enderman-height.patch diff --git a/patches/server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch similarity index 100% rename from patches/server/0084-Stop-squids-floating-on-top-of-water.patch rename to patches/unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch diff --git a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch b/patches/unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch rename to patches/unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0086-Entities-can-use-portals-configuration.patch b/patches/unapplied-server/0086-Entities-can-use-portals-configuration.patch similarity index 100% rename from patches/server/0086-Entities-can-use-portals-configuration.patch rename to patches/unapplied-server/0086-Entities-can-use-portals-configuration.patch diff --git a/patches/server/0087-LivingEntity-broadcastItemBreak.patch b/patches/unapplied-server/0087-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0087-LivingEntity-broadcastItemBreak.patch rename to patches/unapplied-server/0087-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0088-Customizable-wither-health-and-healing.patch b/patches/unapplied-server/0088-Customizable-wither-health-and-healing.patch similarity index 100% rename from patches/server/0088-Customizable-wither-health-and-healing.patch rename to patches/unapplied-server/0088-Customizable-wither-health-and-healing.patch diff --git a/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch b/patches/unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch similarity index 100% rename from patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch diff --git a/patches/server/0090-Raid-cooldown-setting.patch b/patches/unapplied-server/0090-Raid-cooldown-setting.patch similarity index 100% rename from patches/server/0090-Raid-cooldown-setting.patch rename to patches/unapplied-server/0090-Raid-cooldown-setting.patch diff --git a/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch b/patches/unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch similarity index 100% rename from patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch rename to patches/unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch diff --git a/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/unapplied-server/0094-Flying-squids-Oh-my.patch similarity index 100% rename from patches/server/0094-Flying-squids-Oh-my.patch rename to patches/unapplied-server/0094-Flying-squids-Oh-my.patch diff --git a/patches/server/0095-Infinity-bow-settings.patch b/patches/unapplied-server/0095-Infinity-bow-settings.patch similarity index 100% rename from patches/server/0095-Infinity-bow-settings.patch rename to patches/unapplied-server/0095-Infinity-bow-settings.patch diff --git a/patches/server/0096-Configurable-daylight-cycle.patch b/patches/unapplied-server/0096-Configurable-daylight-cycle.patch similarity index 100% rename from patches/server/0096-Configurable-daylight-cycle.patch rename to patches/unapplied-server/0096-Configurable-daylight-cycle.patch diff --git a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch b/patches/unapplied-server/0097-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch rename to patches/unapplied-server/0097-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/server/0098-Furnace-uses-lava-from-underneath.patch b/patches/unapplied-server/0098-Furnace-uses-lava-from-underneath.patch similarity index 100% rename from patches/server/0098-Furnace-uses-lava-from-underneath.patch rename to patches/unapplied-server/0098-Furnace-uses-lava-from-underneath.patch diff --git a/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch b/patches/unapplied-server/0099-Arrows-should-not-reset-despawn-counter.patch similarity index 100% rename from patches/server/0099-Arrows-should-not-reset-despawn-counter.patch rename to patches/unapplied-server/0099-Arrows-should-not-reset-despawn-counter.patch diff --git a/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/unapplied-server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 100% rename from patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/unapplied-server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch diff --git a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch similarity index 100% rename from patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/unapplied-server/0102-Make-entity-breeding-times-configurable.patch similarity index 100% rename from patches/server/0102-Make-entity-breeding-times-configurable.patch rename to patches/unapplied-server/0102-Make-entity-breeding-times-configurable.patch diff --git a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/unapplied-server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/unapplied-server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 100% rename from patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch diff --git a/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 100% rename from patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch diff --git a/patches/server/0106-Add-configurable-snowball-damage.patch b/patches/unapplied-server/0106-Add-configurable-snowball-damage.patch similarity index 100% rename from patches/server/0106-Add-configurable-snowball-damage.patch rename to patches/unapplied-server/0106-Add-configurable-snowball-damage.patch diff --git a/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch b/patches/unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch similarity index 100% rename from patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch rename to patches/unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch diff --git a/patches/server/0108-Add-boat-fall-damage-config.patch b/patches/unapplied-server/0108-Add-boat-fall-damage-config.patch similarity index 100% rename from patches/server/0108-Add-boat-fall-damage-config.patch rename to patches/unapplied-server/0108-Add-boat-fall-damage-config.patch diff --git a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/server/0109-Snow-Golem-rate-of-fire-config.patch rename to patches/unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/server/0110-EMC-Configurable-disable-give-dropping.patch b/patches/unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0110-EMC-Configurable-disable-give-dropping.patch rename to patches/unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 100% rename from patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch diff --git a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 100% rename from patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch diff --git a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 100% rename from patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch diff --git a/patches/server/0114-Configurable-default-collar-color.patch b/patches/unapplied-server/0114-Configurable-default-collar-color.patch similarity index 100% rename from patches/server/0114-Configurable-default-collar-color.patch rename to patches/unapplied-server/0114-Configurable-default-collar-color.patch diff --git a/patches/server/0115-Phantom-flames-on-swoop.patch b/patches/unapplied-server/0115-Phantom-flames-on-swoop.patch similarity index 100% rename from patches/server/0115-Phantom-flames-on-swoop.patch rename to patches/unapplied-server/0115-Phantom-flames-on-swoop.patch diff --git a/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/unapplied-server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 100% rename from patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/unapplied-server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch diff --git a/patches/server/0117-Implement-TPSBar.patch b/patches/unapplied-server/0117-Implement-TPSBar.patch similarity index 100% rename from patches/server/0117-Implement-TPSBar.patch rename to patches/unapplied-server/0117-Implement-TPSBar.patch diff --git a/patches/server/0118-Striders-give-saddle-back.patch b/patches/unapplied-server/0118-Striders-give-saddle-back.patch similarity index 100% rename from patches/server/0118-Striders-give-saddle-back.patch rename to patches/unapplied-server/0118-Striders-give-saddle-back.patch diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/unapplied-server/0119-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/server/0119-PlayerBookTooLargeEvent.patch rename to patches/unapplied-server/0119-PlayerBookTooLargeEvent.patch diff --git a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch b/patches/unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch rename to patches/unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 100% rename from patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch diff --git a/patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 100% rename from patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch diff --git a/patches/server/0123-Add-EntityTeleportHinderedEvent.patch b/patches/unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/server/0123-Add-EntityTeleportHinderedEvent.patch rename to patches/unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/server/0124-Farmland-trampling-changes.patch b/patches/unapplied-server/0124-Farmland-trampling-changes.patch similarity index 100% rename from patches/server/0124-Farmland-trampling-changes.patch rename to patches/unapplied-server/0124-Farmland-trampling-changes.patch diff --git a/patches/server/0125-Movement-options-for-armor-stands.patch b/patches/unapplied-server/0125-Movement-options-for-armor-stands.patch similarity index 100% rename from patches/server/0125-Movement-options-for-armor-stands.patch rename to patches/unapplied-server/0125-Movement-options-for-armor-stands.patch diff --git a/patches/server/0126-Fix-stuck-in-portals.patch b/patches/unapplied-server/0126-Fix-stuck-in-portals.patch similarity index 100% rename from patches/server/0126-Fix-stuck-in-portals.patch rename to patches/unapplied-server/0126-Fix-stuck-in-portals.patch diff --git a/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch b/patches/unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch similarity index 100% rename from patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch rename to patches/unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch diff --git a/patches/server/0128-Config-to-always-tame-in-Creative.patch b/patches/unapplied-server/0128-Config-to-always-tame-in-Creative.patch similarity index 100% rename from patches/server/0128-Config-to-always-tame-in-Creative.patch rename to patches/unapplied-server/0128-Config-to-always-tame-in-Creative.patch diff --git a/patches/server/0129-End-crystal-explosion-options.patch b/patches/unapplied-server/0129-End-crystal-explosion-options.patch similarity index 100% rename from patches/server/0129-End-crystal-explosion-options.patch rename to patches/unapplied-server/0129-End-crystal-explosion-options.patch diff --git a/patches/server/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/unapplied-server/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 100% rename from patches/server/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/unapplied-server/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch diff --git a/patches/server/0131-Dont-run-with-scissors.patch b/patches/unapplied-server/0131-Dont-run-with-scissors.patch similarity index 100% rename from patches/server/0131-Dont-run-with-scissors.patch rename to patches/unapplied-server/0131-Dont-run-with-scissors.patch diff --git a/patches/server/0132-One-Punch-Man.patch b/patches/unapplied-server/0132-One-Punch-Man.patch similarity index 100% rename from patches/server/0132-One-Punch-Man.patch rename to patches/unapplied-server/0132-One-Punch-Man.patch diff --git a/patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 100% rename from patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch diff --git a/patches/server/0135-Add-back-player-spawned-endermite-API.patch b/patches/unapplied-server/0135-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0135-Add-back-player-spawned-endermite-API.patch rename to patches/unapplied-server/0135-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 100% rename from patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch diff --git a/patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 100% rename from patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch diff --git a/patches/server/0138-Tick-fluids-config.patch b/patches/unapplied-server/0138-Tick-fluids-config.patch similarity index 100% rename from patches/server/0138-Tick-fluids-config.patch rename to patches/unapplied-server/0138-Tick-fluids-config.patch diff --git a/patches/server/0139-Config-to-disable-Llama-caravans.patch b/patches/unapplied-server/0139-Config-to-disable-Llama-caravans.patch similarity index 100% rename from patches/server/0139-Config-to-disable-Llama-caravans.patch rename to patches/unapplied-server/0139-Config-to-disable-Llama-caravans.patch diff --git a/patches/server/0140-Config-to-make-Creepers-explode-on-death.patch b/patches/unapplied-server/0140-Config-to-make-Creepers-explode-on-death.patch similarity index 100% rename from patches/server/0140-Config-to-make-Creepers-explode-on-death.patch rename to patches/unapplied-server/0140-Config-to-make-Creepers-explode-on-death.patch diff --git a/patches/server/0141-Configurable-ravager-griefable-blocks-list.patch b/patches/unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch similarity index 100% rename from patches/server/0141-Configurable-ravager-griefable-blocks-list.patch rename to patches/unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch diff --git a/patches/server/0142-Sneak-to-bulk-process-composter.patch b/patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch similarity index 100% rename from patches/server/0142-Sneak-to-bulk-process-composter.patch rename to patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch diff --git a/patches/server/0143-Config-for-skipping-night.patch b/patches/unapplied-server/0143-Config-for-skipping-night.patch similarity index 100% rename from patches/server/0143-Config-for-skipping-night.patch rename to patches/unapplied-server/0143-Config-for-skipping-night.patch diff --git a/patches/server/0144-Add-config-for-villager-trading.patch b/patches/unapplied-server/0144-Add-config-for-villager-trading.patch similarity index 100% rename from patches/server/0144-Add-config-for-villager-trading.patch rename to patches/unapplied-server/0144-Add-config-for-villager-trading.patch diff --git a/patches/server/0145-Allow-infinity-on-crossbows.patch b/patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/server/0145-Allow-infinity-on-crossbows.patch rename to patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch diff --git a/patches/server/0146-Drowning-Settings.patch b/patches/unapplied-server/0146-Drowning-Settings.patch similarity index 100% rename from patches/server/0146-Drowning-Settings.patch rename to patches/unapplied-server/0146-Drowning-Settings.patch diff --git a/patches/server/0147-Break-individual-slabs-when-sneaking.patch b/patches/unapplied-server/0147-Break-individual-slabs-when-sneaking.patch similarity index 100% rename from patches/server/0147-Break-individual-slabs-when-sneaking.patch rename to patches/unapplied-server/0147-Break-individual-slabs-when-sneaking.patch diff --git a/patches/server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/unapplied-server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/unapplied-server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 100% rename from patches/server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch diff --git a/patches/server/0150-Option-to-make-doors-require-redstone.patch b/patches/unapplied-server/0150-Option-to-make-doors-require-redstone.patch similarity index 100% rename from patches/server/0150-Option-to-make-doors-require-redstone.patch rename to patches/unapplied-server/0150-Option-to-make-doors-require-redstone.patch diff --git a/patches/server/0151-Config-to-allow-for-unsafe-enchants.patch b/patches/unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch similarity index 100% rename from patches/server/0151-Config-to-allow-for-unsafe-enchants.patch rename to patches/unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch diff --git a/patches/server/0152-Configurable-sponge-absorption.patch b/patches/unapplied-server/0152-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0152-Configurable-sponge-absorption.patch rename to patches/unapplied-server/0152-Configurable-sponge-absorption.patch diff --git a/patches/server/0153-Projectile-offset-config.patch b/patches/unapplied-server/0153-Projectile-offset-config.patch similarity index 100% rename from patches/server/0153-Projectile-offset-config.patch rename to patches/unapplied-server/0153-Projectile-offset-config.patch diff --git a/patches/server/0154-Config-for-powered-rail-activation-distance.patch b/patches/unapplied-server/0154-Config-for-powered-rail-activation-distance.patch similarity index 100% rename from patches/server/0154-Config-for-powered-rail-activation-distance.patch rename to patches/unapplied-server/0154-Config-for-powered-rail-activation-distance.patch diff --git a/patches/server/0155-Piglin-portal-spawn-modifier.patch b/patches/unapplied-server/0155-Piglin-portal-spawn-modifier.patch similarity index 100% rename from patches/server/0155-Piglin-portal-spawn-modifier.patch rename to patches/unapplied-server/0155-Piglin-portal-spawn-modifier.patch diff --git a/patches/server/0156-Config-to-change-max-number-of-bees.patch b/patches/unapplied-server/0156-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0156-Config-to-change-max-number-of-bees.patch rename to patches/unapplied-server/0156-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0157-Config-for-wither-explosion-radius.patch b/patches/unapplied-server/0157-Config-for-wither-explosion-radius.patch similarity index 100% rename from patches/server/0157-Config-for-wither-explosion-radius.patch rename to patches/unapplied-server/0157-Config-for-wither-explosion-radius.patch diff --git a/patches/server/0158-Gamemode-extra-permissions.patch b/patches/unapplied-server/0158-Gamemode-extra-permissions.patch similarity index 100% rename from patches/server/0158-Gamemode-extra-permissions.patch rename to patches/unapplied-server/0158-Gamemode-extra-permissions.patch diff --git a/patches/server/0159-Configurable-piston-push-limit.patch b/patches/unapplied-server/0159-Configurable-piston-push-limit.patch similarity index 100% rename from patches/server/0159-Configurable-piston-push-limit.patch rename to patches/unapplied-server/0159-Configurable-piston-push-limit.patch diff --git a/patches/server/0160-Configurable-broadcast-settings.patch b/patches/unapplied-server/0160-Configurable-broadcast-settings.patch similarity index 100% rename from patches/server/0160-Configurable-broadcast-settings.patch rename to patches/unapplied-server/0160-Configurable-broadcast-settings.patch diff --git a/patches/server/0161-Configurable-mob-blindness.patch b/patches/unapplied-server/0161-Configurable-mob-blindness.patch similarity index 100% rename from patches/server/0161-Configurable-mob-blindness.patch rename to patches/unapplied-server/0161-Configurable-mob-blindness.patch diff --git a/patches/server/0162-Hide-hidden-players-from-entity-selector.patch b/patches/unapplied-server/0162-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0162-Hide-hidden-players-from-entity-selector.patch rename to patches/unapplied-server/0162-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/unapplied-server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 100% rename from patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/unapplied-server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch diff --git a/patches/server/0164-Iron-golem-calm-anger-options.patch b/patches/unapplied-server/0164-Iron-golem-calm-anger-options.patch similarity index 100% rename from patches/server/0164-Iron-golem-calm-anger-options.patch rename to patches/unapplied-server/0164-Iron-golem-calm-anger-options.patch diff --git a/patches/server/0165-Breedable-parrots.patch b/patches/unapplied-server/0165-Breedable-parrots.patch similarity index 100% rename from patches/server/0165-Breedable-parrots.patch rename to patches/unapplied-server/0165-Breedable-parrots.patch diff --git a/patches/server/0166-Configurable-powered-rail-boost-modifier.patch b/patches/unapplied-server/0166-Configurable-powered-rail-boost-modifier.patch similarity index 100% rename from patches/server/0166-Configurable-powered-rail-boost-modifier.patch rename to patches/unapplied-server/0166-Configurable-powered-rail-boost-modifier.patch diff --git a/patches/server/0167-Add-config-change-multiplier-critical-damage-value.patch b/patches/unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch similarity index 100% rename from patches/server/0167-Add-config-change-multiplier-critical-damage-value.patch rename to patches/unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch diff --git a/patches/server/0168-Option-to-disable-dragon-egg-teleporting.patch b/patches/unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch similarity index 100% rename from patches/server/0168-Option-to-disable-dragon-egg-teleporting.patch rename to patches/unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch diff --git a/patches/server/0169-Config-for-unverified-username-message.patch b/patches/unapplied-server/0169-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0169-Config-for-unverified-username-message.patch rename to patches/unapplied-server/0169-Config-for-unverified-username-message.patch diff --git a/patches/server/0170-Make-anvil-cumulative-cost-configurable.patch b/patches/unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0170-Make-anvil-cumulative-cost-configurable.patch rename to patches/unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0171-Bee-can-work-when-raining-or-at-night.patch b/patches/unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch similarity index 100% rename from patches/server/0171-Bee-can-work-when-raining-or-at-night.patch rename to patches/unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch diff --git a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch b/patches/unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from patches/server/0172-API-for-any-mob-to-burn-daylight.patch rename to patches/unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch diff --git a/patches/server/0173-Config-MobEffect-by-world.patch b/patches/unapplied-server/0173-Config-MobEffect-by-world.patch similarity index 100% rename from patches/server/0173-Config-MobEffect-by-world.patch rename to patches/unapplied-server/0173-Config-MobEffect-by-world.patch diff --git a/patches/server/0174-Beacon-Activation-Range-Configurable.patch b/patches/unapplied-server/0174-Beacon-Activation-Range-Configurable.patch similarity index 100% rename from patches/server/0174-Beacon-Activation-Range-Configurable.patch rename to patches/unapplied-server/0174-Beacon-Activation-Range-Configurable.patch diff --git a/patches/server/0175-Make-lightning-rod-range-configurable.patch b/patches/unapplied-server/0175-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0175-Make-lightning-rod-range-configurable.patch rename to patches/unapplied-server/0175-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 100% rename from patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch diff --git a/patches/server/0177-Allow-player-join-full-server-by-permission.patch b/patches/unapplied-server/0177-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0177-Allow-player-join-full-server-by-permission.patch rename to patches/unapplied-server/0177-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0178-Add-portal-permission-bypass.patch b/patches/unapplied-server/0178-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0178-Add-portal-permission-bypass.patch rename to patches/unapplied-server/0178-Add-portal-permission-bypass.patch diff --git a/patches/server/0179-Shulker-spawn-from-bullet-options.patch b/patches/unapplied-server/0179-Shulker-spawn-from-bullet-options.patch similarity index 100% rename from patches/server/0179-Shulker-spawn-from-bullet-options.patch rename to patches/unapplied-server/0179-Shulker-spawn-from-bullet-options.patch diff --git a/patches/server/0180-Eating-glow-berries-adds-glow-effect.patch b/patches/unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch similarity index 100% rename from patches/server/0180-Eating-glow-berries-adds-glow-effect.patch rename to patches/unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch diff --git a/patches/server/0181-Option-to-make-drowned-break-doors.patch b/patches/unapplied-server/0181-Option-to-make-drowned-break-doors.patch similarity index 100% rename from patches/server/0181-Option-to-make-drowned-break-doors.patch rename to patches/unapplied-server/0181-Option-to-make-drowned-break-doors.patch diff --git a/patches/server/0182-Configurable-hunger-starvation-damage.patch b/patches/unapplied-server/0182-Configurable-hunger-starvation-damage.patch similarity index 100% rename from patches/server/0182-Configurable-hunger-starvation-damage.patch rename to patches/unapplied-server/0182-Configurable-hunger-starvation-damage.patch diff --git a/patches/server/0183-Enhance-SysoutCatcher.patch b/patches/unapplied-server/0183-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0183-Enhance-SysoutCatcher.patch rename to patches/unapplied-server/0183-Enhance-SysoutCatcher.patch diff --git a/patches/server/0184-Add-uptime-command.patch b/patches/unapplied-server/0184-Add-uptime-command.patch similarity index 100% rename from patches/server/0184-Add-uptime-command.patch rename to patches/unapplied-server/0184-Add-uptime-command.patch diff --git a/patches/server/0185-Tool-actionable-options.patch b/patches/unapplied-server/0185-Tool-actionable-options.patch similarity index 100% rename from patches/server/0185-Tool-actionable-options.patch rename to patches/unapplied-server/0185-Tool-actionable-options.patch diff --git a/patches/server/0186-Store-placer-on-Block-when-placed.patch b/patches/unapplied-server/0186-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0186-Store-placer-on-Block-when-placed.patch rename to patches/unapplied-server/0186-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0187-Summoner-API.patch b/patches/unapplied-server/0187-Summoner-API.patch similarity index 100% rename from patches/server/0187-Summoner-API.patch rename to patches/unapplied-server/0187-Summoner-API.patch diff --git a/patches/server/0188-Customizable-sleeping-actionbar-messages.patch b/patches/unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch similarity index 100% rename from patches/server/0188-Customizable-sleeping-actionbar-messages.patch rename to patches/unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch diff --git a/patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 100% rename from patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch diff --git a/patches/server/0190-Big-dripleaf-tilt-delay.patch b/patches/unapplied-server/0190-Big-dripleaf-tilt-delay.patch similarity index 100% rename from patches/server/0190-Big-dripleaf-tilt-delay.patch rename to patches/unapplied-server/0190-Big-dripleaf-tilt-delay.patch diff --git a/patches/server/0191-Player-ridable-in-water-option.patch b/patches/unapplied-server/0191-Player-ridable-in-water-option.patch similarity index 100% rename from patches/server/0191-Player-ridable-in-water-option.patch rename to patches/unapplied-server/0191-Player-ridable-in-water-option.patch diff --git a/patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 100% rename from patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch diff --git a/patches/server/0193-Add-compass-command.patch b/patches/unapplied-server/0193-Add-compass-command.patch similarity index 100% rename from patches/server/0193-Add-compass-command.patch rename to patches/unapplied-server/0193-Add-compass-command.patch diff --git a/patches/server/0194-Toggle-for-kinetic-damage.patch b/patches/unapplied-server/0194-Toggle-for-kinetic-damage.patch similarity index 100% rename from patches/server/0194-Toggle-for-kinetic-damage.patch rename to patches/unapplied-server/0194-Toggle-for-kinetic-damage.patch diff --git a/patches/server/0195-Add-Option-for-disable-observer-clocks.patch b/patches/unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch similarity index 100% rename from patches/server/0195-Add-Option-for-disable-observer-clocks.patch rename to patches/unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch diff --git a/patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch b/patches/unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch similarity index 100% rename from patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch rename to patches/unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch diff --git a/patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 100% rename from patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch diff --git a/patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch b/patches/unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch similarity index 100% rename from patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch rename to patches/unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch diff --git a/patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch b/patches/unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch similarity index 100% rename from patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch diff --git a/patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 100% rename from patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch diff --git a/patches/server/0201-Conduit-behavior-configuration.patch b/patches/unapplied-server/0201-Conduit-behavior-configuration.patch similarity index 100% rename from patches/server/0201-Conduit-behavior-configuration.patch rename to patches/unapplied-server/0201-Conduit-behavior-configuration.patch diff --git a/patches/server/0202-Cauldron-fill-chances.patch b/patches/unapplied-server/0202-Cauldron-fill-chances.patch similarity index 100% rename from patches/server/0202-Cauldron-fill-chances.patch rename to patches/unapplied-server/0202-Cauldron-fill-chances.patch diff --git a/patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 100% rename from patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch diff --git a/patches/server/0204-Shulker-change-color-with-dye.patch b/patches/unapplied-server/0204-Shulker-change-color-with-dye.patch similarity index 100% rename from patches/server/0204-Shulker-change-color-with-dye.patch rename to patches/unapplied-server/0204-Shulker-change-color-with-dye.patch diff --git a/patches/server/0205-Extended-OfflinePlayer-API.patch b/patches/unapplied-server/0205-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0205-Extended-OfflinePlayer-API.patch rename to patches/unapplied-server/0205-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0206-Added-the-ability-to-add-combustible-items.patch b/patches/unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0206-Added-the-ability-to-add-combustible-items.patch rename to patches/unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 100% rename from patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch diff --git a/patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 100% rename from patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch diff --git a/patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch b/patches/unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch similarity index 100% rename from patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch rename to patches/unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch diff --git a/patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch b/patches/unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch rename to patches/unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 100% rename from patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch diff --git a/patches/server/0213-Halloween-options-and-optimizations.patch b/patches/unapplied-server/0213-Halloween-options-and-optimizations.patch similarity index 100% rename from patches/server/0213-Halloween-options-and-optimizations.patch rename to patches/unapplied-server/0213-Halloween-options-and-optimizations.patch diff --git a/patches/server/0214-Config-for-grindstones.patch b/patches/unapplied-server/0214-Config-for-grindstones.patch similarity index 100% rename from patches/server/0214-Config-for-grindstones.patch rename to patches/unapplied-server/0214-Config-for-grindstones.patch diff --git a/patches/server/0215-UPnP-Port-Forwarding.patch b/patches/unapplied-server/0215-UPnP-Port-Forwarding.patch similarity index 100% rename from patches/server/0215-UPnP-Port-Forwarding.patch rename to patches/unapplied-server/0215-UPnP-Port-Forwarding.patch diff --git a/patches/server/0216-Campfire-option-for-lit-when-placed.patch b/patches/unapplied-server/0216-Campfire-option-for-lit-when-placed.patch similarity index 100% rename from patches/server/0216-Campfire-option-for-lit-when-placed.patch rename to patches/unapplied-server/0216-Campfire-option-for-lit-when-placed.patch diff --git a/patches/server/0217-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/unapplied-server/0217-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 100% rename from patches/server/0217-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/unapplied-server/0217-options-to-extinguish-fire-blocks-with-snowballs.patch diff --git a/patches/server/0218-Add-option-to-disable-zombie-villagers-cure.patch b/patches/unapplied-server/0218-Add-option-to-disable-zombie-villagers-cure.patch similarity index 100% rename from patches/server/0218-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/unapplied-server/0218-Add-option-to-disable-zombie-villagers-cure.patch diff --git a/patches/server/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/unapplied-server/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 100% rename from patches/server/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/unapplied-server/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch diff --git a/patches/server/0220-Signs-allow-color-codes.patch b/patches/unapplied-server/0220-Signs-allow-color-codes.patch similarity index 100% rename from patches/server/0220-Signs-allow-color-codes.patch rename to patches/unapplied-server/0220-Signs-allow-color-codes.patch diff --git a/patches/server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0222-Mobs-always-drop-experience.patch b/patches/unapplied-server/0222-Mobs-always-drop-experience.patch similarity index 100% rename from patches/server/0222-Mobs-always-drop-experience.patch rename to patches/unapplied-server/0222-Mobs-always-drop-experience.patch diff --git a/patches/server/0223-Potion-NamespacedKey.patch b/patches/unapplied-server/0223-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0223-Potion-NamespacedKey.patch rename to patches/unapplied-server/0223-Potion-NamespacedKey.patch diff --git a/patches/server/0224-Grindstone-API.patch b/patches/unapplied-server/0224-Grindstone-API.patch similarity index 100% rename from patches/server/0224-Grindstone-API.patch rename to patches/unapplied-server/0224-Grindstone-API.patch diff --git a/patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch b/patches/unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch rename to patches/unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0227-Mob-head-visibility-percent.patch b/patches/unapplied-server/0227-Mob-head-visibility-percent.patch similarity index 100% rename from patches/server/0227-Mob-head-visibility-percent.patch rename to patches/unapplied-server/0227-Mob-head-visibility-percent.patch diff --git a/patches/server/0228-Configurable-valid-characters-for-usernames.patch b/patches/unapplied-server/0228-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0228-Configurable-valid-characters-for-usernames.patch rename to patches/unapplied-server/0228-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0229-Shears-can-have-looting-enchantment.patch b/patches/unapplied-server/0229-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0229-Shears-can-have-looting-enchantment.patch rename to patches/unapplied-server/0229-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0230-Stop-bees-from-dying-after-stinging.patch b/patches/unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch similarity index 100% rename from patches/server/0230-Stop-bees-from-dying-after-stinging.patch rename to patches/unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch diff --git a/patches/server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0232-Configurable-farmland-trample-height.patch b/patches/unapplied-server/0232-Configurable-farmland-trample-height.patch similarity index 100% rename from patches/server/0232-Configurable-farmland-trample-height.patch rename to patches/unapplied-server/0232-Configurable-farmland-trample-height.patch diff --git a/patches/server/0233-Configurable-player-pickup-exp-delay.patch b/patches/unapplied-server/0233-Configurable-player-pickup-exp-delay.patch similarity index 100% rename from patches/server/0233-Configurable-player-pickup-exp-delay.patch rename to patches/unapplied-server/0233-Configurable-player-pickup-exp-delay.patch diff --git a/patches/server/0234-Allow-void-trading.patch b/patches/unapplied-server/0234-Allow-void-trading.patch similarity index 100% rename from patches/server/0234-Allow-void-trading.patch rename to patches/unapplied-server/0234-Allow-void-trading.patch diff --git a/patches/server/0235-Configurable-phantom-size.patch b/patches/unapplied-server/0235-Configurable-phantom-size.patch similarity index 100% rename from patches/server/0235-Configurable-phantom-size.patch rename to patches/unapplied-server/0235-Configurable-phantom-size.patch diff --git a/patches/server/0236-Configurable-food-attributes.patch b/patches/unapplied-server/0236-Configurable-food-attributes.patch similarity index 100% rename from patches/server/0236-Configurable-food-attributes.patch rename to patches/unapplied-server/0236-Configurable-food-attributes.patch diff --git a/patches/server/0237-Max-joins-per-second.patch b/patches/unapplied-server/0237-Max-joins-per-second.patch similarity index 100% rename from patches/server/0237-Max-joins-per-second.patch rename to patches/unapplied-server/0237-Max-joins-per-second.patch diff --git a/patches/server/0238-Configurable-minimum-demand-for-trades.patch b/patches/unapplied-server/0238-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0238-Configurable-minimum-demand-for-trades.patch rename to patches/unapplied-server/0238-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0239-Lobotomize-stuck-villagers.patch b/patches/unapplied-server/0239-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0239-Lobotomize-stuck-villagers.patch rename to patches/unapplied-server/0239-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0240-Option-for-villager-display-trade-item.patch b/patches/unapplied-server/0240-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0240-Option-for-villager-display-trade-item.patch rename to patches/unapplied-server/0240-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch b/patches/unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch rename to patches/unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0243-Anvil-repair-damage-options.patch b/patches/unapplied-server/0243-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0243-Anvil-repair-damage-options.patch rename to patches/unapplied-server/0243-Anvil-repair-damage-options.patch diff --git a/patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0245-Add-toggle-for-enchant-level-clamping.patch b/patches/unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0245-Add-toggle-for-enchant-level-clamping.patch rename to patches/unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0246-Skip-junit-tests-for-purpur-commands.patch b/patches/unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0246-Skip-junit-tests-for-purpur-commands.patch rename to patches/unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch b/patches/unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0248-Stonecutter-damage.patch b/patches/unapplied-server/0248-Stonecutter-damage.patch similarity index 100% rename from patches/server/0248-Stonecutter-damage.patch rename to patches/unapplied-server/0248-Stonecutter-damage.patch diff --git a/patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch b/patches/unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch rename to patches/unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0250-Add-config-for-snow-on-blue-ice.patch b/patches/unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0250-Add-config-for-snow-on-blue-ice.patch rename to patches/unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0251-Skeletons-eat-wither-roses.patch b/patches/unapplied-server/0251-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0251-Skeletons-eat-wither-roses.patch rename to patches/unapplied-server/0251-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0252-Enchantment-Table-Persists-Lapis.patch b/patches/unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0252-Enchantment-Table-Persists-Lapis.patch rename to patches/unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0253-Spark-Profiler.patch b/patches/unapplied-server/0253-Spark-Profiler.patch similarity index 100% rename from patches/server/0253-Spark-Profiler.patch rename to patches/unapplied-server/0253-Spark-Profiler.patch diff --git a/patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch b/patches/unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0256-Config-to-not-let-coral-die.patch b/patches/unapplied-server/0256-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0256-Config-to-not-let-coral-die.patch rename to patches/unapplied-server/0256-Config-to-not-let-coral-die.patch diff --git a/patches/server/0257-Add-local-difficulty-api.patch b/patches/unapplied-server/0257-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0257-Add-local-difficulty-api.patch rename to patches/unapplied-server/0257-Add-local-difficulty-api.patch diff --git a/patches/server/0258-Add-toggle-for-RNG-manipulation.patch b/patches/unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch similarity index 100% rename from patches/server/0258-Add-toggle-for-RNG-manipulation.patch rename to patches/unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch diff --git a/patches/server/0259-Send-client-custom-name-of-BE.patch b/patches/unapplied-server/0259-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0259-Send-client-custom-name-of-BE.patch rename to patches/unapplied-server/0259-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0260-Remove-Timings.patch b/patches/unapplied-server/0260-Remove-Timings.patch similarity index 100% rename from patches/server/0260-Remove-Timings.patch rename to patches/unapplied-server/0260-Remove-Timings.patch diff --git a/patches/server/0261-Remove-Mojang-Profiler.patch b/patches/unapplied-server/0261-Remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0261-Remove-Mojang-Profiler.patch rename to patches/unapplied-server/0261-Remove-Mojang-Profiler.patch diff --git a/patches/server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0263-Add-Bee-API.patch b/patches/unapplied-server/0263-Add-Bee-API.patch similarity index 100% rename from patches/server/0263-Add-Bee-API.patch rename to patches/unapplied-server/0263-Add-Bee-API.patch diff --git a/patches/server/0264-Debug-Marker-API.patch b/patches/unapplied-server/0264-Debug-Marker-API.patch similarity index 100% rename from patches/server/0264-Debug-Marker-API.patch rename to patches/unapplied-server/0264-Debug-Marker-API.patch diff --git a/patches/server/0265-mob-spawning-option-to-ignore-creative-players.patch b/patches/unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0265-mob-spawning-option-to-ignore-creative-players.patch rename to patches/unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0266-Add-skeleton-bow-accuracy-option.patch b/patches/unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0266-Add-skeleton-bow-accuracy-option.patch rename to patches/unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0267-Allay-respect-item-NBT.patch b/patches/unapplied-server/0267-Allay-respect-item-NBT.patch similarity index 100% rename from patches/server/0267-Allay-respect-item-NBT.patch rename to patches/unapplied-server/0267-Allay-respect-item-NBT.patch diff --git a/patches/server/0268-Add-death-screen-API.patch b/patches/unapplied-server/0268-Add-death-screen-API.patch similarity index 100% rename from patches/server/0268-Add-death-screen-API.patch rename to patches/unapplied-server/0268-Add-death-screen-API.patch diff --git a/patches/server/0269-Make-pufferfish-config-relocatable.patch b/patches/unapplied-server/0269-Make-pufferfish-config-relocatable.patch similarity index 100% rename from patches/server/0269-Make-pufferfish-config-relocatable.patch rename to patches/unapplied-server/0269-Make-pufferfish-config-relocatable.patch diff --git a/patches/server/0270-Implement-ram-and-rambar-commands.patch b/patches/unapplied-server/0270-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0270-Implement-ram-and-rambar-commands.patch rename to patches/unapplied-server/0270-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0271-Add-item-packet-serialize-event.patch b/patches/unapplied-server/0271-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/server/0271-Add-item-packet-serialize-event.patch rename to patches/unapplied-server/0271-Add-item-packet-serialize-event.patch diff --git a/patches/server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 100% rename from patches/server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/patches/server/0273-Configurable-block-blast-resistance.patch b/patches/unapplied-server/0273-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0273-Configurable-block-blast-resistance.patch rename to patches/unapplied-server/0273-Configurable-block-blast-resistance.patch diff --git a/patches/server/0274-Configurable-block-fall-damage-modifiers.patch b/patches/unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0274-Configurable-block-fall-damage-modifiers.patch rename to patches/unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0275-Language-API.patch b/patches/unapplied-server/0275-Language-API.patch similarity index 100% rename from patches/server/0275-Language-API.patch rename to patches/unapplied-server/0275-Language-API.patch diff --git a/patches/server/0276-Milk-Keeps-Beneficial-Effects.patch b/patches/unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch similarity index 100% rename from patches/server/0276-Milk-Keeps-Beneficial-Effects.patch rename to patches/unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch diff --git a/patches/server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/unapplied-server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/unapplied-server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0278-Add-log-suppression-for-LibraryLoader.patch b/patches/unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0278-Add-log-suppression-for-LibraryLoader.patch rename to patches/unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/unapplied-server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/unapplied-server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0280-Fire-Immunity-API.patch b/patches/unapplied-server/0280-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0280-Fire-Immunity-API.patch rename to patches/unapplied-server/0280-Fire-Immunity-API.patch diff --git a/patches/server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 100% rename from patches/server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch diff --git a/patches/server/0282-Added-got-ram-event.patch b/patches/unapplied-server/0282-Added-got-ram-event.patch similarity index 100% rename from patches/server/0282-Added-got-ram-event.patch rename to patches/unapplied-server/0282-Added-got-ram-event.patch diff --git a/patches/server/0283-Log-skipped-entity-s-position.patch b/patches/unapplied-server/0283-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0283-Log-skipped-entity-s-position.patch rename to patches/unapplied-server/0283-Log-skipped-entity-s-position.patch diff --git a/patches/server/0284-End-Crystal-Cramming.patch b/patches/unapplied-server/0284-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0284-End-Crystal-Cramming.patch rename to patches/unapplied-server/0284-End-Crystal-Cramming.patch diff --git a/patches/server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0286-Add-attribute-clamping-and-armor-limit-config.patch b/patches/unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0286-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0287-Config-to-remove-explosion-radius-clamp.patch b/patches/unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch similarity index 100% rename from patches/server/0287-Config-to-remove-explosion-radius-clamp.patch rename to patches/unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch diff --git a/patches/server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0289-Add-PreExplodeEvents.patch b/patches/unapplied-server/0289-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0289-Add-PreExplodeEvents.patch rename to patches/unapplied-server/0289-Add-PreExplodeEvents.patch diff --git a/patches/server/0290-Improve-output-of-plugins-command.patch b/patches/unapplied-server/0290-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0290-Improve-output-of-plugins-command.patch rename to patches/unapplied-server/0290-Improve-output-of-plugins-command.patch diff --git a/patches/server/0291-Add-mending-multiplier.patch b/patches/unapplied-server/0291-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0291-Add-mending-multiplier.patch rename to patches/unapplied-server/0291-Add-mending-multiplier.patch diff --git a/patches/server/0292-Make-GUI-Great-Again.patch b/patches/unapplied-server/0292-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0292-Make-GUI-Great-Again.patch rename to patches/unapplied-server/0292-Make-GUI-Great-Again.patch diff --git a/patches/server/0293-Stored-Bee-API.patch b/patches/unapplied-server/0293-Stored-Bee-API.patch similarity index 100% rename from patches/server/0293-Stored-Bee-API.patch rename to patches/unapplied-server/0293-Stored-Bee-API.patch diff --git a/patches/server/0294-Shears-can-defuse-TNT.patch b/patches/unapplied-server/0294-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0294-Shears-can-defuse-TNT.patch rename to patches/unapplied-server/0294-Shears-can-defuse-TNT.patch diff --git a/patches/server/0295-Explorer-Map-API.patch b/patches/unapplied-server/0295-Explorer-Map-API.patch similarity index 100% rename from patches/server/0295-Explorer-Map-API.patch rename to patches/unapplied-server/0295-Explorer-Map-API.patch diff --git a/patches/server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0298-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0298-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0299-place-end-crystal-on-any-block.patch b/patches/unapplied-server/0299-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0299-place-end-crystal-on-any-block.patch rename to patches/unapplied-server/0299-place-end-crystal-on-any-block.patch diff --git a/patches/server/0300-Add-hover-lines-API.patch b/patches/unapplied-server/0300-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0300-Add-hover-lines-API.patch rename to patches/unapplied-server/0300-Add-hover-lines-API.patch diff --git a/patches/server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/unapplied-server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/unapplied-server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0302-register-minecraft-debug-commands.patch b/patches/unapplied-server/0302-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0302-register-minecraft-debug-commands.patch rename to patches/unapplied-server/0302-register-minecraft-debug-commands.patch diff --git a/patches/server/0303-Configurable-villager-search-radius.patch b/patches/unapplied-server/0303-Configurable-villager-search-radius.patch similarity index 100% rename from patches/server/0303-Configurable-villager-search-radius.patch rename to patches/unapplied-server/0303-Configurable-villager-search-radius.patch From 8a86da1fb50cc3bfe18680237697e54dfd9f63c5 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 19:39:20 -0700 Subject: [PATCH 097/148] first 7 patches --- .../0001-Rebrand.patch} | 71 ++++++++----------- .../0002-Purpur-config-files.patch} | 32 ++++----- .../0003-Purpur-client-support.patch} | 14 ++-- .../0004-Fix-decompile-errors.patch} | 17 +---- ...0005-Component-related-conveniences.patch} | 16 ++--- 5 files changed, 61 insertions(+), 89 deletions(-) rename patches/{unapplied-server/0002-Rebrand.patch => server/0001-Rebrand.patch} (95%) rename patches/{unapplied-server/0004-Purpur-config-files.patch => server/0002-Purpur-config-files.patch} (95%) rename patches/{unapplied-server/0005-Purpur-client-support.patch => server/0003-Purpur-client-support.patch} (87%) rename patches/{unapplied-server/0006-Fix-decompile-errors.patch => server/0004-Fix-decompile-errors.patch} (79%) rename patches/{unapplied-server/0007-Component-related-conveniences.patch => server/0005-Component-related-conveniences.patch} (86%) diff --git a/patches/unapplied-server/0002-Rebrand.patch b/patches/server/0001-Rebrand.patch similarity index 95% rename from patches/unapplied-server/0002-Rebrand.patch rename to patches/server/0001-Rebrand.patch index 4a02365d1..44b00e49e 100644 --- a/patches/unapplied-server/0002-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,47 +5,45 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 4517548e2c892c2e94f91e7449660f9e36b8f14e..1cad0728d005df9475a978b272adef9703f2ba46 100644 +index 5d448d8a7cf6626a11791f30ad52baf41a099272..81996f00384674b29368e8bea944bdd14d631da3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { +@@ -12,8 +12,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { val alsoShade: Configuration by configurations.creating dependencies { -- implementation(project(":pufferfish-api")) // Pufferfish // Paper -- // Pufferfish start -- implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") { +- implementation(project(":paper-api")) +- implementation(project(":paper-mojangapi")) + // Purpur start + implementation(project(":purpur-api")) + implementation("io.papermc.paper:paper-mojangapi:${project.version}") { - exclude("io.papermc.paper", "paper-api") - } -- // Pufferfish end ++ exclude("io.papermc.paper", "paper-api") ++ } + // Purpur end // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -61,6 +61,10 @@ dependencies { - } - // Pufferfish end +@@ -47,6 +51,10 @@ dependencies { + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur + implementation("dev.omega24:upnp4j:1.0") // Purpur + testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test - testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -90,7 +94,7 @@ tasks.jar { +@@ -79,7 +87,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Pufferfish-$implementationVersion", // Pufferfish +- "Implementation-Version" to "git-Paper-$implementationVersion", + "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -169,7 +173,7 @@ fun TaskContainer.registerRunTask( +@@ -138,7 +146,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -162,7 +160,7 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..3cb56595822799926a8141e60a42f5d1 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index 99c5038672b09d0874125e3df280174c1e8151e6..f91ea723a1c85f6cf8c4f6dd7f182b948c2f2e81 100644 +index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..c366d84518979e842a6f10f969a5951539ecac93 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -125,6 +125,10 @@ public class CrashReport { @@ -177,10 +175,10 @@ index 99c5038672b09d0874125e3df280174c1e8151e6..f91ea723a1c85f6cf8c4f6dd7f182b94 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 07319732c76473589774c90edf8a1f1ba4b26d04..b2dd76b79660126cac3b995e9ca2f88dc70937ff 100644 +index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..57e6aaa63c1308baa5e2863b82b7521d5f4a4f31 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -953,7 +953,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper +- return "Paper"; // Paper + return "Purpur"; // Purpur - Purpur > // Pufferfish > // Paper } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 18bfe2fb7efad66f5fae07a30593d640c597bf77..86c234c123fac96b4f94873d1dcfab30e9835e43 100644 +index 05e304f9fc8d0291fa779da589bd060ef4165b49..62c18b61ee58e76a90938976e9ec96ef28a7106c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -266,7 +266,7 @@ import javax.annotation.Nullable; // Paper +@@ -268,7 +268,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { -- private final String serverName = "Pufferfish"; // Paper // Pufferfish +- private final String serverName = "Paper"; // Paper + private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); @@ -237,19 +235,6 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee + this.sendMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); // Purpur } - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index c4a166a0c226c6083c25c58145d9631d4296e615..52c70c2793209aadb88bd4c5f45340747271d3d7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -969,7 +969,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - return EntityCategory.WATER; - } - -- throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Spigot."); -+ throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Purpur."); // Purpur - } - @Override diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java index e85b9bb3f9c225d289a4959921970b9963881199..c1e2d3a75b9d4710ab6d8b5c62af4bc136a2b668 100644 @@ -265,33 +250,33 @@ index e85b9bb3f9c225d289a4959921970b9963881199..c1e2d3a75b9d4710ab6d8b5c62af4bc1 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 94681c5d807019be5caf0b5d5156c0d670f45f8f..e29dc1101c7aa4b7b2a2d2e732e27a1a14a2a234 100644 +index 573b93fc4e392456af2f2cf3900a9d7014f67a22..e3fb34549e2f74e1c00f616c5f0fb60948c42d11 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -502,7 +502,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -508,7 +508,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { -- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish -+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur +- return new com.destroystokyo.paper.PaperVersionFetcher(); ++ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur - TODO: Pufferfish } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 +index 774556a62eb240da42e84db4502e2ed43495be17..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; -- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish +- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); + InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur Properties properties = new Properties(); if (stream != null) { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 9e638f72f180ff5ef63ec3dd6cf548c53f7bd4a5..f7296691cb4af7814de1520347b307ff209082e4 100644 +index 6db566e3111ec08a99aa429624979cb83a85e272..a353eb9f45af7b7f9bfd92a4a89403335b841840 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java @@ -96,7 +96,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa diff --git a/patches/unapplied-server/0004-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch similarity index 95% rename from patches/unapplied-server/0004-Purpur-config-files.patch rename to patches/server/0002-Purpur-config-files.patch index efd080164..a8730427e 100644 --- a/patches/unapplied-server/0004-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 +index 4b002e8b75d117b726b0de274a76d3596fce015b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -593,7 +593,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { -- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish +- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); + Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { @@ -26,21 +26,21 @@ index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f - final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion(); - if (implVersion != null) { - final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1); -- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish +- paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); - } else { - paperVersion = "unknown"; - } -- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish +- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion)); + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur + metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index f341813e9713e39bfe142ca34b751de3d8efd25b..b0d96ae08959cdca9177eb875faa99f4a8e92632 100644 +index e6c7f62ed379a78645933670299e4fcda8540ed1..edb94e5601acc38994dac20a167b145de778d426 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -335,6 +335,30 @@ public class CommandSourceStack implements ExecutionCommandSource resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor 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 @@ -112,7 +112,7 @@ index 9f5cde72a5305572202c316e750ad1b5e778fd87..1513300064314a761adf4a08cc72782e this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 86c234c123fac96b4f94873d1dcfab30e9835e43..f36a87ba93da564b3b2c8b9f9190f8853557bdcd 100644 +index 62c18b61ee58e76a90938976e9ec96ef28a7106c..26eb9ff0f4e77230d1eae793398869e71999982b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1054,6 +1054,7 @@ public final class CraftServer implements Server { @@ -139,7 +139,7 @@ index 86c234c123fac96b4f94873d1dcfab30e9835e43..f36a87ba93da564b3b2c8b9f9190f885 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3033,6 +3036,18 @@ public final class CraftServer implements Server { +@@ -3048,6 +3051,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,10 +159,10 @@ index 86c234c123fac96b4f94873d1dcfab30e9835e43..f36a87ba93da564b3b2c8b9f9190f885 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index ce341f42b3a5e17fb6d1f7de8057e73137ae2a6e..8576ae1f811bdb7fb4f356bcce2e29181838d8ce 100644 +index c097f5d5fbd51cbbc01bbd54101905c59b3f3a4c..66a3b28d7b943d443ff66fdcfbce6e5260b9463e 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -174,6 +174,14 @@ public class Main { +@@ -175,6 +175,14 @@ public class Main { .describedAs("Jar file"); // Paper end diff --git a/patches/unapplied-server/0005-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch similarity index 87% rename from patches/unapplied-server/0005-Purpur-client-support.patch rename to patches/server/0003-Purpur-client-support.patch index f2cc78bc6..856e23759 100644 --- a/patches/unapplied-server/0005-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b3781efbd3edcf102fe1bda5d6149915dc1127c6..ae0c027a49ae6d09c86053945992f4480df5b1d5 100644 +index 8437316888c6056060a2780652147590b6fe7443..8b07eb1c428bc70b8ee07ea2209f1898d6034809 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -281,6 +281,7 @@ public class ServerPlayer extends Player { +@@ -298,6 +298,7 @@ public class ServerPlayer extends Player { public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event @@ -17,10 +17,10 @@ index b3781efbd3edcf102fe1bda5d6149915dc1127c6..ae0c027a49ae6d09c86053945992f448 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7 100644 +index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..4228fd441f8350d43bd545e31c920304f07968bc 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -56,6 +56,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -78,6 +78,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..34559eae0ea3f88d7b9a3c9e4a2350c4 public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit this.server = minecraftserver; -@@ -138,6 +139,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -170,6 +171,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex); this.disconnect("Invalid payload REGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } @@ -43,10 +43,10 @@ index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..34559eae0ea3f88d7b9a3c9e4a2350c4 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 44f4665db613c558078df5bb49106e4ca5679dfe..5da7b468af3dd19491f38140f303e55b7cab21db 100644 +index eddbbd0e9be3cb81d1030c0c9da829b9193ebc16..ee7e484a4dd694f36ab151402bec4ca15dea953c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3456,4 +3456,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3513,4 +3513,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { this.getHandle().setSendViewDistance(viewDistance); } diff --git a/patches/unapplied-server/0006-Fix-decompile-errors.patch b/patches/server/0004-Fix-decompile-errors.patch similarity index 79% rename from patches/unapplied-server/0006-Fix-decompile-errors.patch rename to patches/server/0004-Fix-decompile-errors.patch index 18f759fcf..f16d294f4 100644 --- a/patches/unapplied-server/0006-Fix-decompile-errors.patch +++ b/patches/server/0004-Fix-decompile-errors.patch @@ -32,10 +32,10 @@ index b0d26b0eadb2a43924629424a6c13198aace8f69..9f5c3ec2eae9b30bdb8dbcb328d7f701 for (T executionCommandSource2 : list) { diff --git a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -index b8fa8d5bb62a51281a8ec676066fb02ddeacbebf..682d6d8bd679106a6f07df31adb8dbc568c10d62 100644 +index 7b118a92a6eb779f800ae8f5d8f6e3c861fc4f6a..057a038e8dcacd7496a0b2373de2c20255a5c297 100644 --- a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java +++ b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -@@ -116,10 +116,10 @@ public class ArgumentTypeInfos { +@@ -119,10 +119,10 @@ public class ArgumentTypeInfos { register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension)); register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode)); register(registry, "time", TimeArgument.class, new TimeArgument.Info()); @@ -50,16 +50,3 @@ index b8fa8d5bb62a51281a8ec676066fb02ddeacbebf..682d6d8bd679106a6f07df31adb8dbc5 register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror)); register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation)); register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap)); -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 fee2269b241cbfb10bbbb76b404aa5ef3997dfe0..10ee43de05d9f4e0ab980ee5069fe59c0f137403 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -120,7 +120,7 @@ public class Painting extends HangingEntity implements VariantHolder holder = loadVariant(nbt).orElseGet(Painting::getDefaultVariant); -+ Holder holder = loadVariant(nbt).orElseGet(() -> (Holder.Reference) getDefaultVariant()); // Purpur - decompile error TODO: still needed? - this.setVariant(holder); - this.direction = Direction.from2DDataValue(nbt.getByte("facing")); - super.readAdditionalSaveData(nbt); diff --git a/patches/unapplied-server/0007-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch similarity index 86% rename from patches/unapplied-server/0007-Component-related-conveniences.patch rename to patches/server/0005-Component-related-conveniences.patch index 7eed79d67..934ea5bc3 100644 --- a/patches/unapplied-server/0007-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1d91ce01e7ce806a5b2e937ff855ebf159534f29..d39a3359249e2a312da0645d5abb625d98fe4034 100644 +index 8b07eb1c428bc70b8ee07ea2209f1898d6034809..0b9c85adaf5c7b5dcb23ab74a4fd02e6c0798851 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1884,6 +1884,26 @@ public class ServerPlayer extends Player { +@@ -1978,6 +1978,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -36,10 +36,10 @@ index 1d91ce01e7ce806a5b2e937ff855ebf159534f29..d39a3359249e2a312da0645d5abb625d public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1e5f709115007ff19901c0a6c3cf884d9e4d3a6c..6886f5808ffaaed06dcae122f7cba6a12ad563af 100644 +index a2142930b4d4b05987c90496fb9d733d99040aa0..2d6b6795703431939005aa09d1ed590c3f755163 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1064,6 +1064,20 @@ public abstract class PlayerList { +@@ -1063,6 +1063,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -61,10 +61,10 @@ index 1e5f709115007ff19901c0a6c3cf884d9e4d3a6c..6886f5808ffaaed06dcae122f7cba6a1 Iterator iterator = this.players.iterator(); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index b26e4d58ea1898a5e4b31c3d6ab33f38835ab2c6..61741b6ecf4fa2b0d4a1c44c825e8fcdeb412c0a 100644 +index 160dc3216e8f5db5f9b3cce5e2d655f2b35b208a..43b9a7e8ed9043c4d3f8295258a27209ddb4474b 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -176,6 +176,15 @@ public class DamageSource { +@@ -177,6 +177,15 @@ public class DamageSource { } } @@ -81,10 +81,10 @@ index b26e4d58ea1898a5e4b31c3d6ab33f38835ab2c6..61741b6ecf4fa2b0d4a1c44c825e8fcd return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a1d4ab05a3542320e9b91a1dbabb17859914a922..1ffc486f941046056dab91c861f939ba0202fa69 100644 +index 2bc85351e6e52f90da5fdb29d8d042a06132d742..6c7f80723d67baf0ca036e0a12c3007144352edf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4152,6 +4152,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4190,6 +4190,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } From 9f8e9b08ddee20f00ba65659fe7286ca03e1b622 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 20:02:22 -0700 Subject: [PATCH 098/148] apply ridables patch --- .../0006-Ridables.patch} | 899 +++++++++--------- 1 file changed, 435 insertions(+), 464 deletions(-) rename patches/{unapplied-server/0008-Ridables.patch => server/0006-Ridables.patch} (89%) diff --git a/patches/unapplied-server/0008-Ridables.patch b/patches/server/0006-Ridables.patch similarity index 89% rename from patches/unapplied-server/0008-Ridables.patch rename to patches/server/0006-Ridables.patch index b26c940c2..0ca6b0490 100644 --- a/patches/unapplied-server/0008-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index 70f9e737b3b9f80395afc3542aafe4a0c774c722..70fa9893c7af6387df9e5c33be21653e73222b36 100644 +index 665e88b2dedf9d5bb50914d5f3d377f2d19f40b0..f70a80b496bd1498778e82fc221c3b1b39308b75 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java -@@ -47,6 +47,12 @@ public class BlockPos extends Vec3i { +@@ -61,6 +61,12 @@ public class BlockPos extends Vec3i { private static final int X_OFFSET = 38; // Paper end - Optimize Bit Operations by inlining @@ -22,22 +22,22 @@ index 70f9e737b3b9f80395afc3542aafe4a0c774c722..70fa9893c7af6387df9e5c33be21653e super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9094dacbdac148062f9f600556fe6588a6ae75f9..4dc2e55fb12c184b0fb8fe1e638f0e082b201192 100644 +index 57e6aaa63c1308baa5e2863b82b7521d5f4a4f31..73b77367039eb6a4445d1ef2d66fb3410e91f4b8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1712,6 +1712,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation + worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur this.profiler.push(() -> { - return worldserver + " " + worldserver.dimension().location(); + String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 881ba370b098a4a202fbfb9c5c3d9304719d155e..4e67fcb6fb8e02f8ad1a356fc27e90f4c93c7862 100644 +index 0981d440d0dbfe4df668d1f3f1b5706a93bc4434..fc791a66d299905798c2c1ca542467e4c7933caf 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) @@ -46,12 +46,12 @@ index 881ba370b098a4a202fbfb9c5c3d9304719d155e..4e67fcb6fb8e02f8ad1a356fc27e90f4 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e10999f90a695ac8399f1089aae6b8c0a225f5da..afca9734927fd003e249972439494c561f0c0966 100644 +index 0b9c85adaf5c7b5dcb23ab74a4fd02e6c0798851..2820333cbcd2cb972c4408cb0d9cc1be37a844cf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -763,6 +763,15 @@ public class ServerPlayer extends Player { - this.trackStartFallingPosition(); +@@ -814,6 +814,15 @@ public class ServerPlayer extends Player { this.trackEnteredOrExitedLavaOnVehicle(); + this.updatePlayerAttributes(); this.advancements.flushDirty(this); + + // Purpur start @@ -64,12 +64,12 @@ index e10999f90a695ac8399f1089aae6b8c0a225f5da..afca9734927fd003e249972439494c56 + // Purpur end } - public void doTick() { + private void updatePlayerAttributes() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e725c1c0496383007ffb94c46fc18340666b5e29..ccf2ab27e73903ee4ae5e60838d694ed4ccad79c 100644 +index 8e67853a7a93fa736c147e8b2df537746dc8e94f..c0abcc3db4a392163dd97ff696c39c18d0ba08a0 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2722,6 +2722,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2787,6 +2787,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -77,12 +77,12 @@ index e725c1c0496383007ffb94c46fc18340666b5e29..ccf2ab27e73903ee4ae5e60838d694ed + // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { - entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. + entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 535dde3eb226663b9d83a5cdfe6e92f8b7c1cc86..75d1990cc33b06652ba0cdf5ee631594cf259d31 100644 +index 6c7f80723d67baf0ca036e0a12c3007144352edf..9c99a3df80c5f0a0d81e1f6a6516d088438a0b1e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -379,7 +379,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -381,7 +381,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index 535dde3eb226663b9d83a5cdfe6e92f8b7c1cc86..75d1990cc33b06652ba0cdf5ee631594 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3027,6 +3027,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3080,6 +3080,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 535dde3eb226663b9d83a5cdfe6e92f8b7c1cc86..75d1990cc33b06652ba0cdf5ee631594 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3066,6 +3073,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3119,6 +3126,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index 535dde3eb226663b9d83a5cdfe6e92f8b7c1cc86..75d1990cc33b06652ba0cdf5ee631594 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -5011,4 +5026,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -5009,4 +5024,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -166,7 +166,7 @@ index 535dde3eb226663b9d83a5cdfe6e92f8b7c1cc86..75d1990cc33b06652ba0cdf5ee631594 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 5de938f4a7f16fd3caff783564cbb7e6b2924f9a..4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1 100644 +index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -23,6 +23,19 @@ public class GlowSquid extends Squid { @@ -190,10 +190,10 @@ index 5de938f4a7f16fd3caff783564cbb7e6b2924f9a..4d4b57d40d8bac8d666716b0f36e1af2 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 366121188c5abb550ed0a5f99d25c001628685bb..98907fee8d85e7b7dc66807a0717134db3a94c33 100644 +index 6e043457a29a890bcefd27fc5bb07c1a7e4e30f7..72bd60f691a639a0e7b6b5a98e5a3816305cfdaf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -229,9 +229,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -206,33 +206,33 @@ index 366121188c5abb550ed0a5f99d25c001628685bb..98907fee8d85e7b7dc66807a0717134d protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.effectsDirty = true; +@@ -300,7 +300,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); + this.appliedScale = 1.0F; - this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type)); + this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -350,6 +350,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { - return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION); + return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION).add(Attributes.STEP_HEIGHT).add(Attributes.SCALE).add(Attributes.GRAVITY).add(Attributes.SAFE_FALL_DISTANCE).add(Attributes.FALL_DAMAGE_MULTIPLIER).add(Attributes.JUMP_STRENGTH); } + public boolean shouldSendAttribute(Attribute attribute) { return true; } // Purpur @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2750,7 +2751,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2781,7 +2782,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper - Prevent excessive velocity through repeated crits - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public - Vec3 vec3d = this.getDeltaMovement(); - // Paper start - Prevent excessive velocity through repeated crits - long time = System.nanoTime(); -@@ -3528,8 +3529,10 @@ public abstract class LivingEntity extends Entity implements Attackable { + float f = this.getJumpPower(); + + if (f > 1.0E-5F) { +@@ -3494,8 +3495,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start - Add EntityMoveEvent @@ -245,7 +245,7 @@ index 366121188c5abb550ed0a5f99d25c001628685bb..98907fee8d85e7b7dc66807a0717134d Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3539,6 +3542,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3505,6 +3508,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -268,10 +268,10 @@ index 366121188c5abb550ed0a5f99d25c001628685bb..98907fee8d85e7b7dc66807a0717134d // Paper end - Add EntityMoveEvent if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index a6b48b4eab6e0e98205fd9cafc3cde5ad39651af..6b8b1f391dac79e9ce3229684e4d198787b92776 100644 +index e89f9c3e887601d8461eb967ae0bf582b672f631..26b03594b6ccd69ca35156472e27543d11ba2077 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -149,8 +149,8 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -165,8 +165,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti this.restrictRadius = -1.0F; this.goalSelector = new GoalSelector(world.getProfilerSupplier()); this.targetSelector = new GoalSelector(world.getProfilerSupplier()); @@ -282,7 +282,7 @@ index a6b48b4eab6e0e98205fd9cafc3cde5ad39651af..6b8b1f391dac79e9ce3229684e4d1987 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1399,7 +1399,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1525,7 +1525,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -291,7 +291,7 @@ index a6b48b4eab6e0e98205fd9cafc3cde5ad39651af..6b8b1f391dac79e9ce3229684e4d1987 } public boolean isWithinRestriction() { -@@ -1788,4 +1788,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1902,4 +1902,56 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -349,13 +349,13 @@ index a6b48b4eab6e0e98205fd9cafc3cde5ad39651af..6b8b1f391dac79e9ce3229684e4d1987 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 8d6954d05d2bf6d6c1c4953db3127b011a858cec..49c45a0987b8393a9c92ab756c721f17c232ddb1 100644 +index 9ef8f014af332da129bfcd3370da983ec035ecc6..c51b429822d56761f69c49ecd4addfab7b90bad8 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -24,14 +24,21 @@ public class AttributeMap { - private final Set dirtyAttributes = Sets.newHashSet(); +@@ -22,13 +22,20 @@ public class AttributeMap { + private final Map, AttributeInstance> attributes = new Object2ObjectOpenHashMap<>(); + private final Set dirtyAttributes = new ObjectOpenHashSet<>(); private final AttributeSupplier supplier; - private final java.util.function.Function createInstance; // Pufferfish + private final net.minecraft.world.entity.LivingEntity entity; // Purpur public AttributeMap(AttributeSupplier defaultAttributes) { @@ -366,29 +366,28 @@ index 8d6954d05d2bf6d6c1c4953db3127b011a858cec..49c45a0987b8393a9c92ab756c721f17 + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; - this.createInstance = attributex -> this.supplier.createInstance(this::onAttributeModified, attributex); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { -- if (instance.getAttribute().isClientSyncable()) { -+ if (instance.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(instance.getAttribute()))) { // Purpur +- if (instance.getAttribute().value().isClientSyncable()) { ++ if (instance.getAttribute().value().isClientSyncable() && (entity == null || entity.shouldSendAttribute(instance.getAttribute().value()))) { // Purpur this.dirtyAttributes.add(instance); } } -@@ -41,7 +48,7 @@ public class AttributeMap { +@@ -38,7 +45,7 @@ public class AttributeMap { } public Collection getSyncableAttributes() { -- return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable()).collect(Collectors.toList()); -+ return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute()))).collect(Collectors.toList()); // Purpur +- return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().value().isClientSyncable()).collect(Collectors.toList()); ++ return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().value().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute().value()))).collect(Collectors.toList()); // Purpur } - + @Nullable diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index c92583b6d1527db32f4a644f30c8f8468e9e2fc2..b8f65dc8f0db4bbe5f9c223e4ba129738fbfd795 100644 +index 10a1434313b11dae8210484583c6bf3b627416f7..35af18f371b3beaf81fcdca79fefe85e0a862b50 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -123,7 +123,7 @@ public class DefaultAttributes { +@@ -129,7 +129,7 @@ public class DefaultAttributes { .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) .put(EntityType.PARROT, Parrot.createAttributes().build()) @@ -398,7 +397,7 @@ index c92583b6d1527db32f4a644f30c8f8468e9e2fc2..b8f65dc8f0db4bbe5f9c223e4ba12973 .put(EntityType.PIGLIN, Piglin.createAttributes().build()) .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) diff --git a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java -index ca02566b20dd52a59bc7b150529a1d68bc560ab0..10265fd19c90cea34372a786bb272dbcdd91b993 100644 +index c8fd5696de7c3623cdb4f498190a5c2708cf843e..e403d9dfeeaa3dcf53be790d761e7e922419efb0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -445,18 +444,10 @@ index fbfc2f2515ad709b2c1212aef9521e795547d66b..e77bd11af62682d5eca41f6c9e1aed30 this.lookAtCooldown--; this.getYRotD().ifPresent(yaw -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, yaw + 20.0F, this.yMaxRotSpeed)); diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1 100644 +index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..f8a649b0fee040bbf53084ca7094583ab4ffd900 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -19,6 +19,7 @@ import net.minecraft.world.entity.EntityDimensions; - import net.minecraft.world.entity.EntityType; - import net.minecraft.world.entity.Mob; - import net.minecraft.world.entity.MobSpawnType; -+import net.minecraft.world.entity.MoverType; - import net.minecraft.world.entity.Pose; - import net.minecraft.world.entity.ai.attributes.AttributeSupplier; - import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -46,12 +47,59 @@ public class Bat extends AmbientCreature { +@@ -44,12 +44,59 @@ public class Bat extends AmbientCreature { public Bat(EntityType type, Level world) { super(type, world); @@ -507,7 +498,7 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f + float speed = (float) getAttributeValue(Attributes.FLYING_SPEED) * 2; + setSpeed(speed); + Vec3 mot = getDeltaMovement(); -+ move(MoverType.SELF, mot.multiply(speed, 0.25, speed)); ++ move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, 0.25, speed)); + setDeltaMovement(mot.scale(0.9D)); + } + } @@ -516,7 +507,7 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f @Override public boolean isFlapping() { return !this.isResting() && (float) this.tickCount % 10.0F == 0.0F; -@@ -101,7 +149,7 @@ public class Bat extends AmbientCreature { +@@ -99,7 +146,7 @@ public class Bat extends AmbientCreature { protected void pushEntities() {} public static AttributeSupplier.Builder createAttributes() { @@ -525,7 +516,7 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f } public boolean isResting() { -@@ -134,6 +182,14 @@ public class Bat extends AmbientCreature { +@@ -132,6 +179,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep() { @@ -541,10 +532,10 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f BlockPos blockposition = this.blockPosition(); BlockPos blockposition1 = blockposition.above(); diff --git a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -index 401cffccd3c6adedcbd3986cd13733772953b31b..b8f973505b184cf198b6782a6f423c921c3881a7 100644 +index 3231eaa6af2ddfe4095ff2d650f580ebd4d43aea..e8cb124d232f7316cc8c35dd8bd12f79bbcda7d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -@@ -94,6 +94,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -87,6 +87,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); @@ -552,7 +543,7 @@ index 401cffccd3c6adedcbd3986cd13733772953b31b..b8f973505b184cf198b6782a6f423c92 this.goalSelector.addGoal(0, new PanicGoal(this, 1.25)); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 1.6, 1.4, EntitySelector.NO_SPECTATORS::test)); this.goalSelector.addGoal(4, new AbstractFish.FishSwimGoal(this)); -@@ -107,7 +108,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -100,7 +101,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override public void travel(Vec3 movementInput) { if (this.isEffectiveAi() && this.isInWater()) { @@ -561,7 +552,7 @@ index 401cffccd3c6adedcbd3986cd13733772953b31b..b8f973505b184cf198b6782a6f423c92 this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (this.getTarget() == null) { -@@ -168,7 +169,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -161,7 +162,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { protected void playStepSound(BlockPos pos, BlockState state) { } @@ -570,7 +561,7 @@ index 401cffccd3c6adedcbd3986cd13733772953b31b..b8f973505b184cf198b6782a6f423c92 private final AbstractFish fish; FishMoveControl(AbstractFish owner) { -@@ -176,14 +177,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -169,14 +170,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { this.fish = owner; } @@ -596,18 +587,10 @@ index 401cffccd3c6adedcbd3986cd13733772953b31b..b8f973505b184cf198b6782a6f423c92 double d = this.wantedX - this.fish.getX(); double e = this.wantedY - this.fish.getY(); 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 f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb828830964 100644 +index 0dfb8109fd8c022b079da00f6a0e3fc85b57bf7a..4b84cf76d052112e00cd13c330182abfbe618820 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -43,6 +43,7 @@ import net.minecraft.world.entity.EntityType; - import net.minecraft.world.entity.LivingEntity; - import net.minecraft.world.entity.Mob; - import net.minecraft.world.entity.MobType; -+import net.minecraft.world.entity.MoverType; - import net.minecraft.world.entity.NeutralMob; - import net.minecraft.world.entity.PathfinderMob; - import net.minecraft.world.entity.Pose; -@@ -147,6 +148,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -143,6 +143,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType type, Level world) { super(type, world); this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60); @@ -615,7 +598,7 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 // Paper start - Fix MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -155,11 +157,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -151,11 +152,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -640,8 +623,8 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end - Fix MC-167279 -@@ -171,6 +186,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { - this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); +@@ -167,6 +181,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { + this.setPathfindingMalus(PathType.FENCE, -1.0F); } + // Purpur start @@ -672,16 +655,16 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 + float speed = (float) getAttributeValue(Attributes.FLYING_SPEED) * 2; + setSpeed(speed); + Vec3 mot = getDeltaMovement(); -+ move(MoverType.SELF, mot.multiply(speed, speed, speed)); ++ move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, speed, speed)); + setDeltaMovement(mot.scale(0.9D)); + } + } + // Purpur end + @Override - protected void defineSynchedData() { - super.defineSynchedData(); -@@ -185,6 +234,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); +@@ -181,6 +229,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -689,7 +672,7 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -@@ -200,6 +250,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -198,6 +247,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); @@ -697,14 +680,14 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -888,16 +939,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -872,16 +922,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } - private class BeeLookControl extends LookControl { + private class BeeLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur - BeeLookControl(Mob entity) { + BeeLookControl(final Mob entity) { super(entity); } @@ -718,11 +701,11 @@ index f9521a6e115f0c975a7885b024c99eae300b63bf..78e802a4bd994b6988ae415cf2958bb8 } 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 f760ce7d9df79ef58f8963de3e901cba3e12fcaa..25636efbdb55605303e390f63276ef0bfd4929ba 100644 +index 07559b9629d4ecb40b511256f400a781e39820e0..3826c794ddde6b915e233e2d0395557e3ea867e0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -98,6 +98,31 @@ public class Cat extends TamableAnimal implements VariantHolder { - super(type, world); +@@ -104,6 +104,31 @@ public class Cat extends TamableAnimal implements VariantHolder { - protected void registerGoals() { - this.temptGoal = new Cat.CatTemptGoal(this, 0.6D, Cat.TEMPT_INGREDIENT, true); +@@ -114,6 +139,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -126,6 +152,7 @@ public class Cat extends TamableAnimal implements VariantHolder(this, Rabbit.class, false, (Predicate) null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -374,6 +401,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -377,6 +404,7 @@ public class Cat extends TamableAnimal implements VariantHolder { diff --git a/src/main/java/net/minecraft/world/entity/animal/Cod.java b/src/main/java/net/minecraft/world/entity/animal/Cod.java index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..e2a98b45e56a368de19bb65e304370a5998c7cb9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cod.java @@ -833,10 +816,10 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..e2a98b45e56a368de19bb65e304370a5 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb6395de84 100644 +index 5a7b1be351834a6b8889b1380cede1be025cb302..41b6c79c31414378d433500a35e434e546738e42 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -45,9 +45,27 @@ public class Cow extends Animal { +@@ -44,9 +44,27 @@ public class Cow extends Animal { super(type, world); } @@ -863,8 +846,8 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -88,6 +106,7 @@ public class Cow extends Animal { + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> { +@@ -94,6 +112,7 @@ public class Cow extends Animal { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -872,7 +855,7 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb ItemStack itemstack = player.getItemInHand(hand); if (itemstack.is(Items.BUCKET) && !this.isBaby()) { -@@ -95,7 +114,7 @@ public class Cow extends Animal { +@@ -101,7 +120,7 @@ public class Cow extends Animal { PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); if (event.isCancelled()) { @@ -882,10 +865,10 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb // CraftBukkit end 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 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c863d1eb89 100644 +index 1b1cb0e4d54e52ebe794199e386c54c5d84b3719..3af2017a4b860992a6db88edec3624fcb9884ae1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -83,14 +83,82 @@ public class Dolphin extends WaterAnimal { +@@ -81,14 +81,82 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -968,8 +951,8 @@ index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c8 + @Nullable @Override - public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -160,6 +228,7 @@ public class Dolphin extends WaterAnimal { + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { +@@ -158,6 +226,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -977,7 +960,7 @@ index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c8 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -170,6 +239,7 @@ public class Dolphin extends WaterAnimal { +@@ -168,6 +237,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -985,7 +968,7 @@ index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c8 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -221,7 +291,7 @@ public class Dolphin extends WaterAnimal { +@@ -214,7 +284,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -994,7 +977,7 @@ index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c8 } @Override -@@ -256,6 +326,11 @@ public class Dolphin extends WaterAnimal { +@@ -249,6 +319,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1007,10 +990,10 @@ index 45646c69ea73936a8916756fde37dd3f39db0d04..18380c1ee458507de98a8aeb53c8b0c8 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef1a9dc2e8 100644 +index e705449496b1a06270ecbc13f4dce5357479845b..935dff4d167d8b6ef4b7cdc95bf000a2ce761f92 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -148,6 +148,44 @@ public class Fox extends Animal implements VariantHolder { +@@ -145,6 +145,44 @@ public class Fox extends Animal implements VariantHolder { this.setCanPickUpLoot(true); } @@ -1053,9 +1036,9 @@ index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef + // Purpur end + @Override - protected void defineSynchedData() { - super.defineSynchedData(); -@@ -167,6 +205,7 @@ public class Fox extends Animal implements VariantHolder { + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); +@@ -164,6 +202,7 @@ public class Fox extends Animal implements VariantHolder { return entityliving instanceof AbstractSchoolingFish; }); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); @@ -1063,7 +1046,7 @@ index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2D)); -@@ -193,6 +232,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -190,6 +229,7 @@ public class Fox extends Animal implements VariantHolder { this.goalSelector.addGoal(11, new Fox.FoxSearchForItemsGoal()); this.goalSelector.addGoal(12, new Fox.FoxLookAtPlayerGoal(this, Player.class, 24.0F)); this.goalSelector.addGoal(13, new Fox.PerchAndSearchGoal()); @@ -1071,7 +1054,7 @@ index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); -@@ -785,16 +825,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -769,16 +809,16 @@ public class Fox extends Animal implements VariantHolder { return new Vec3(0.0D, (double) (0.55F * this.getEyeHeight()), (double) (this.getBbWidth() * 0.4F)); } @@ -1091,7 +1074,7 @@ index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef } } -@@ -805,16 +845,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -789,16 +829,16 @@ public class Fox extends Animal implements VariantHolder { } } @@ -1112,11 +1095,11 @@ index f7a7810fdc2f74b79fa14470493485e4b74539ab..c63634825ffffed2eccc560af9e9fcef } diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 6cfe0d6c46caa122db107c607d27a2bdcd82f7a8..cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7 100644 +index 932fae98c551052cadba4c6fc6e575fc30a25d58..4cc9138201b08aff8bb47720c6fe1e3447f03967 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -66,8 +66,27 @@ public class IronGolem extends AbstractGolem implements NeutralMob { - this.setMaxUpStep(1.0F); +@@ -61,8 +61,27 @@ public class IronGolem extends AbstractGolem implements NeutralMob { + super(type, world); } + // Purpur start @@ -1143,7 +1126,7 @@ index 6cfe0d6c46caa122db107c607d27a2bdcd82f7a8..cb05267fb287b9de9d1829e90d9bb9c9 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); -@@ -75,6 +94,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -70,6 +89,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.goalSelector.addGoal(5, new OfferFlowerGoal(this)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); @@ -1151,7 +1134,7 @@ index 6cfe0d6c46caa122db107c607d27a2bdcd82f7a8..cb05267fb287b9de9d1829e90d9bb9c9 this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -270,13 +290,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -265,13 +285,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { ItemStack itemstack = player.getItemInHand(hand); if (!itemstack.is(Items.IRON_INGOT)) { @@ -1168,7 +1151,7 @@ index 6cfe0d6c46caa122db107c607d27a2bdcd82f7a8..cb05267fb287b9de9d1829e90d9bb9c9 float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 161c128d27f50f145f88142191f1a5c93649ea65..b59d6a3f799f100702efb1fd10bbc48da4f4bd8f 100644 +index 0c21959f57ae88fcd0a4d6dc911c1ce347c96528..11944ee34fc7e3e5551b9e18a563164f96898a54 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -64,6 +64,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder> optional = this.getEffectsFromItemStack(itemstack); +@@ -150,7 +167,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder optional = this.getEffectsFromItemStack(itemstack); if (optional.isEmpty()) { - return InteractionResult.PASS; + return tryRide(player, hand); // Purpur } - if (!player.getAbilities().instabuild) { + itemstack.consume(1, player); 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 4300fab61765dd224fab084d118aae7294fc9de6..66f80ec010909648278c4e74c80d3766b9cf6c6a 100644 +index 2c7491edbb60e7ec6a208ea7292cd28a3f8f9e31..2b074f68c1be2ff591543685bbb4e7ea1c7784f8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -70,6 +70,23 @@ public class Ocelot extends Animal { +@@ -66,6 +66,23 @@ public class Ocelot extends Animal { this.reassessTrustingGoals(); } @@ -1241,9 +1224,9 @@ index 4300fab61765dd224fab084d118aae7294fc9de6..66f80ec010909648278c4e74c80d3766 public boolean isTrusting() { return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } -@@ -101,12 +118,14 @@ public class Ocelot extends Animal { - protected void registerGoals() { - this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6D, Ocelot.TEMPT_INGREDIENT, true); +@@ -99,12 +116,14 @@ public class Ocelot extends Animal { + return itemstack.is(ItemTags.OCELOT_FOOD); + }, true); this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(3, this.temptGoal); @@ -1257,10 +1240,10 @@ index 4300fab61765dd224fab084d118aae7294fc9de6..66f80ec010909648278c4e74c80d3766 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } 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 d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f431e0e0b89 100644 +index db60b91c2b26ca8cdb66e05deab7742ffe212767..5f9b7ae2ed4acff0fa7cfee07a29a28b5c0d67f8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -115,6 +115,32 @@ public class Panda extends Animal { +@@ -120,6 +120,32 @@ public class Panda extends Animal { } @@ -1293,7 +1276,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -276,6 +302,7 @@ public class Panda extends Animal { +@@ -281,6 +307,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1301,7 +1284,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); -@@ -291,6 +318,7 @@ public class Panda extends Animal { +@@ -298,6 +325,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); @@ -1309,7 +1292,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -637,7 +665,7 @@ public class Panda extends Animal { +@@ -655,7 +683,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1318,7 +1301,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level().isClientSide); -@@ -655,7 +683,7 @@ public class Panda extends Animal { +@@ -673,7 +701,7 @@ public class Panda extends Animal { this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying } else { if (this.level().isClientSide || this.isSitting() || this.isInWater()) { @@ -1327,7 +1310,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 } this.tryToSit(); -@@ -674,7 +702,7 @@ public class Panda extends Animal { +@@ -692,7 +720,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1336,8 +1319,8 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 } } -@@ -719,7 +747,7 @@ public class Panda extends Animal { - return new Vector3f(0.0F, dimensions.height - (this.isBaby() ? 0.4375F : 0.0F) * scaleFactor, 0.0F); +@@ -737,7 +765,7 @@ public class Panda extends Animal { + return this.isBaby() ? Panda.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } - private static class PandaMoveControl extends MoveControl { @@ -1345,7 +1328,7 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 private final Panda panda; -@@ -729,9 +757,9 @@ public class Panda extends Animal { +@@ -747,9 +775,9 @@ public class Panda extends Animal { } @Override @@ -1358,10 +1341,10 @@ index d683c49fdf2d1e5b0f2620641f9c241e82f96825..c900776b626b2f038b92dedc86bb9f43 } } 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 f3f48225c2a1e4bd3d0091d1b4b7e4e150850ed2..06568c109d806a4e98b092016d0efd5b2cdfd359 100644 +index 5ca96541abbb754f4d9fbe01f37ebaf19c532bbb..12200cca54304d567a1880527a49f3e26ad08c7b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -131,12 +131,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, Level world) { super(type, world); @@ -1389,9 +1372,9 @@ index f3f48225c2a1e4bd3d0091d1b4b7e4e150850ed2..06568c109d806a4e98b092016d0efd5b + } + this.moveControl = new ParrotMoveControl(this, 10, false); + // Purpur end - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, -1.0F); - this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); + this.setPathfindingMalus(PathType.DAMAGE_FIRE, -1.0F); + this.setPathfindingMalus(PathType.COCOA, -1.0F); } + // Purpur start @@ -1430,8 +1413,8 @@ index f3f48225c2a1e4bd3d0091d1b4b7e4e150850ed2..06568c109d806a4e98b092016d0efd5b + @Nullable @Override - public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -155,8 +211,10 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index c9e10d4ce00b711b30de5d346a5ac26e7b441390..a1195a7465883b944bd12a793701e4774944be68 100644 +index c87a57e8ceac32a6c8a603aa24f8cb053610e47c..d97314380b69ea2ad83b86c0f1bcaaccd4a1644f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -59,11 +59,40 @@ public class PolarBear extends Animal implements NeutralMob { @@ -1557,10 +1540,10 @@ index c9e10d4ce00b711b30de5d346a5ac26e7b441390..a1195a7465883b944bd12a793701e477 public float getStandingAnimationScale(float tickDelta) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index a197337f2e09f53cf382022569c8836745d78769..95383e246a8e1b311e4f26a66372966b6bc51de5 100644 +index 3f0fad476fe573c3ba946a9436d1b3f7c5260ee2..d75016647c513841358d08e5931821ecf8c21c2a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -@@ -45,6 +45,18 @@ public class Pufferfish extends AbstractFish { +@@ -51,6 +51,18 @@ public class Pufferfish extends AbstractFish { this.refreshDimensions(); } @@ -1577,13 +1560,13 @@ index a197337f2e09f53cf382022569c8836745d78769..95383e246a8e1b311e4f26a66372966b + // Purpur end + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc0add1797 100644 +index b58300e114e2e27ac68d7a9489bc52b127c9bc17..ba408a4195e03b484f143fbe66d5d3b13ebb8f11 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -87,6 +87,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -86,6 +86,7 @@ public class Rabbit extends Animal implements VariantHolder { private boolean wasOnGround; private int jumpDelayTicks; public int moreCarrotTicks; @@ -1591,7 +1574,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc public Rabbit(EntityType type, Level world) { super(type, world); -@@ -94,9 +95,55 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -93,9 +94,55 @@ public class Rabbit extends Animal implements VariantHolder { this.moveControl = new Rabbit.RabbitMoveControl(this); } @@ -1647,7 +1630,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D)); -@@ -111,6 +158,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -112,6 +159,14 @@ public class Rabbit extends Animal implements VariantHolder { @Override protected float getJumpPower() { @@ -1662,7 +1645,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc float f = 0.3F; if (this.horizontalCollision || this.moveControl.hasWanted() && this.moveControl.getWantedY() > this.getY() + 0.5D) { -@@ -135,7 +190,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -136,7 +191,7 @@ public class Rabbit extends Animal implements VariantHolder { } @Override @@ -1671,7 +1654,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc super.jumpFromGround(); double d0 = this.moveControl.getSpeedModifier(); -@@ -185,6 +240,13 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -186,6 +241,13 @@ public class Rabbit extends Animal implements VariantHolder { @Override public void customServerAiStep() { @@ -1685,7 +1668,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc if (this.jumpDelayTicks > 0) { --this.jumpDelayTicks; } -@@ -469,7 +531,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -466,7 +528,7 @@ public class Rabbit extends Animal implements VariantHolder { } } @@ -1694,7 +1677,7 @@ index cf4859814a60468f683e3afe285b4934d35e9704..f8989e0db656389fe04487d5d407aacc private final Rabbit rabbit; private double nextJumpSpeed; -@@ -480,14 +542,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -477,14 +539,14 @@ public class Rabbit extends Animal implements VariantHolder { } @Override @@ -1735,10 +1718,10 @@ index 0af79daa357f53a8871e293b57e16c099e5d3f64..87c442fb198cad8671ad1419e589a5a6 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 1d80678f7e8f658e43616f0baf723f096a99122a..ffcb68cd299370d5a17ed92ba3814c8afe613cf9 100644 +index 3ce86f952a18cae7fda1903916903b31a63a40b4..7c1da46554aefde8e5e2b33a3644c9cbd771d7bc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -119,10 +119,28 @@ public class Sheep extends Animal implements Shearable { +@@ -117,10 +117,28 @@ public class Sheep extends Animal implements Shearable { super(type, world); } @@ -1766,12 +1749,12 @@ index 1d80678f7e8f658e43616f0baf723f096a99122a..ffcb68cd299370d5a17ed92ba3814c8a + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, (itemstack) -> { diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5094a4bb1 100644 +index 5c2ed3c39c8eb850f3be1e2ea5b5a7ea266e16d1..d51b486afb83bf3e12046ed5e61e73eec5bd7c7c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -52,12 +52,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM super(type, world); } @@ -1803,7 +1786,7 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entityliving) -> { return entityliving instanceof Enemy; })); -@@ -107,6 +126,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -105,6 +124,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return; } @@ -1811,7 +1794,7 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 BlockState iblockdata = Blocks.SNOW.defaultBlockState(); for (int i = 0; i < 4; ++i) { -@@ -158,7 +178,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -151,7 +171,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -1820,7 +1803,7 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 } drops = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getDrops()); } -@@ -174,7 +194,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -165,7 +185,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return InteractionResult.sidedSuccess(this.level().isClientSide); } else { @@ -1830,10 +1813,10 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 } 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 36506dc4b99f9de19a23a99c1bccdcb4e7102e72..7b6e1f5a44a5a690dca97693bb053d3186ff1b69 100644 +index 43b4ea96c5c4a6234e5b83d41db9b85c1fe27b8f..37402f7df48f04a6df2211e079519ed95d3735bc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -48,9 +48,32 @@ public class Squid extends WaterAnimal { +@@ -46,9 +46,32 @@ public class Squid extends WaterAnimal { this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } @@ -1866,7 +1849,7 @@ index 36506dc4b99f9de19a23a99c1bccdcb4e7102e72..7b6e1f5a44a5a690dca97693bb053d31 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -292,6 +315,37 @@ public class Squid extends WaterAnimal { +@@ -290,6 +313,37 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -1905,10 +1888,10 @@ index 36506dc4b99f9de19a23a99c1bccdcb4e7102e72..7b6e1f5a44a5a690dca97693bb053d31 if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 6e9e86b6d547d7437c990b65718b95ad0d60f020..3ec6caf965c9a69eb56e507e2c452129064d3c68 100644 +index 3d03ffe2e12eca82dfa2f414471d12bb362d4552..18dcb67d246b63637d8c948b6c3f48c58d71c339 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -65,6 +65,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -67,6 +67,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder super(type, world); } @@ -1928,11 +1911,11 @@ index 6e9e86b6d547d7437c990b65718b95ad0d60f020..3ec6caf965c9a69eb56e507e2c452129 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff585842ed27 100644 +index 30b87b5cb18c25cdd04eab64cfbe5acd6c1b6d84..4742d90ca38c1d8034b0cfcf7f336e225fade197 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -86,6 +86,23 @@ public class Turtle extends Animal { - this.setMaxUpStep(1.0F); +@@ -87,6 +87,23 @@ public class Turtle extends Animal { + this.moveControl = new Turtle.TurtleMoveControl(this); } + // Purpur start @@ -1955,7 +1938,7 @@ index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff58 public void setHomePos(BlockPos pos) { this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } -@@ -188,6 +205,7 @@ public class Turtle extends Animal { +@@ -189,6 +206,7 @@ public class Turtle extends Animal { @Override protected void registerGoals() { @@ -1963,8 +1946,8 @@ index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff58 this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0D)); -@@ -344,13 +362,15 @@ public class Turtle extends Animal { - return new Vector3f(0.0F, dimensions.height + (this.isBaby() ? 0.0F : 0.15625F) * scaleFactor, -0.25F * scaleFactor); +@@ -342,13 +360,15 @@ public class Turtle extends Animal { + return this.isBaby() ? Turtle.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } - private static class TurtleMoveControl extends MoveControl { @@ -1980,7 +1963,7 @@ index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff58 } private void updateSpeed() { -@@ -370,7 +390,7 @@ public class Turtle extends Animal { +@@ -368,7 +388,7 @@ public class Turtle extends Animal { } @Override @@ -1989,7 +1972,7 @@ index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff58 this.updateSpeed(); if (this.operation == MoveControl.Operation.MOVE_TO && !this.turtle.getNavigation().isDone()) { double d0 = this.wantedX - this.turtle.getX(); -@@ -386,7 +406,7 @@ public class Turtle extends Animal { +@@ -384,7 +404,7 @@ public class Turtle extends Animal { this.turtle.setYRot(this.rotlerp(this.turtle.getYRot(), f, 90.0F)); this.turtle.yBodyRot = this.turtle.getYRot(); @@ -1999,11 +1982,11 @@ index 2eb099957a3d0bae3339ff4edbab103fb348abed..29788b801e1faba6d7671e64e280ff58 this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); 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 2d20b2c1f58beb1ad8c9012d8124e476899e6be6..0c3d29e55c3c1aacbf337cc24ac220c92866b84e 100644 +index b5ee82e5abfecc59e2362628f288b76881855f36..731909acd1e18dcfbd25becb0ddff30fb2a6a0f5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -105,9 +105,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F); +@@ -124,9 +124,32 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Llama.class, 24.0F, 1.5D, 1.5D)); -@@ -119,6 +142,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -138,6 +161,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); -@@ -225,7 +260,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -218,6 +253,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override protected void customServerAiStep() { this.level().getProfiler().push("allayBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 33c160994f70f71446d665e7487913437c9f9db4..a1bc178165f3481c2b4e399f0284f4482ba246c1 100644 +index a8cc6ddbf45370fe632e5c5fb7ceef3d299e62a4..045ac081120f65987251d04d1522a5b7197e1d88 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; -@@ -279,7 +296,7 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { +@@ -103,6 +103,8 @@ public class Frog extends Animal implements VariantHolder> { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2213,10 +2194,10 @@ index 1767fd2df8cb37e9c36fa3008b5131ff4bdad12c..709a5b786b56b92e00e25fbc9cf7ac07 public Frog(EntityType type, Level world) { super(type, world); - this.lookControl = new Frog.FrogLookControl(this); - this.setPathfindingMalus(BlockPathTypes.WATER, 4.0F); - this.setPathfindingMalus(BlockPathTypes.TRAPDOOR, -1.0F); -- this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); +@@ -110,7 +112,55 @@ public class Frog extends Animal implements VariantHolder> { + this.setPathfindingMalus(PathType.WATER, 4.0F); + this.setPathfindingMalus(PathType.TRAPDOOR, -1.0F); + this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + // Purpur start + this.purpurLandController = new org.purpurmc.purpur.controller.MoveControllerWASD(this, 0.2F); + this.purpurWaterController = new org.purpurmc.purpur.controller.WaterMoveControllerWASD(this, 0.5F); @@ -2237,9 +2218,8 @@ index 1767fd2df8cb37e9c36fa3008b5131ff4bdad12c..709a5b786b56b92e00e25fbc9cf7ac07 + } + }; + // Purpur end - this.setMaxUpStep(1.0F); - } - ++ } ++ + // Purpur start + @Override + public boolean isRidable() { @@ -2265,35 +2245,33 @@ index 1767fd2df8cb37e9c36fa3008b5131ff4bdad12c..709a5b786b56b92e00e25fbc9cf7ac07 + @Override + public float getJumpPower() { + return (getRider() != null && isControllable()) ? level().purpurConfig.frogRidableJumpHeight * this.getBlockJumpFactor() : super.getJumpPower(); -+ } + } + // Purpur end -+ + @Override protected Brain.Provider brainProvider() { - return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -187,7 +236,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -184,6 +234,7 @@ public class Frog extends Animal implements VariantHolder> { @Override protected void customServerAiStep() { this.level().getProfiler().push("frogBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); -@@ -376,7 +425,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -371,7 +422,7 @@ public class Frog extends Animal implements VariantHolder> { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } - class FrogLookControl extends LookControl { + class FrogLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur - FrogLookControl(Mob entity) { + FrogLookControl(final Mob entity) { super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 415afe3473d9f8a50b1edab8cfda6158e59836e6..c19513b3b35bbb05c3159606caacee0559366610 100644 +index 290d41136f5ec7671bc4990dfe50da0a770c124d..b98a34357e59168bbb22c967b86a449fc91f47f0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -48,13 +48,50 @@ public class Tadpole extends AbstractFish { +@@ -51,13 +51,50 @@ public class Tadpole extends AbstractFish { protected static final ImmutableList>> SENSOR_TYPES = ImmutableList.of(SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.HURT_BY, SensorType.FROG_TEMPTATIONS); protected static final ImmutableList> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.LOOK_TARGET, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.NEAREST_VISIBLE_ADULT, MemoryModuleType.TEMPTATION_COOLDOWN_TICKS, MemoryModuleType.IS_TEMPTED, MemoryModuleType.TEMPTING_PLAYER, MemoryModuleType.BREED_TARGET, MemoryModuleType.IS_PANICKING); public boolean ageLocked; // Paper @@ -2345,21 +2323,19 @@ index 415afe3473d9f8a50b1edab8cfda6158e59836e6..c19513b3b35bbb05c3159606caacee05 @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); -@@ -84,8 +121,7 @@ public class Tadpole extends AbstractFish { +@@ -86,6 +123,7 @@ public class Tadpole extends AbstractFish { @Override protected void customServerAiStep() { this.level().getProfiler().push("tadpoleBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -- this.getBrain().tick((ServerLevel) this.level(), this); -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("tadpoleActivityUpdate"); - TadpoleAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 2e4177cfb02616ef6fa689f6d378976e39484cfb..961f808caa60aba70075572161bcb91cd7201008 100644 +index 02e49c7ae5e120302b6479cf3e3934b9217eebf0..9cd8220a1e5e43c141ad27df4969e66ef3746ecd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -92,6 +92,23 @@ public class Goat extends Animal { +@@ -91,6 +91,23 @@ public class Goat extends Animal { return InstrumentItem.create(Items.GOAT_HORN, (Holder) holderset.getRandomElement(randomsource).get()); } @@ -2383,26 +2359,24 @@ index 2e4177cfb02616ef6fa689f6d378976e39484cfb..961f808caa60aba70075572161bcb91c @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -195,7 +212,7 @@ public class Goat extends Animal { +@@ -193,6 +210,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { this.level().getProfiler().push("goatBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 815eb15086976b8f9e03bf8182d9ed50aec14720..41777079871eef2bb4d319f28c8f441d7f2607a1 100644 +index 9357cf0179d19fbdfe76413e909a99b924c85780..12a137665f93d992094e86327a496057890d1018 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -149,12 +149,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -217,11 +217,21 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, protected AbstractHorse(EntityType type, Level world) { super(type, world); + this.moveControl = new net.minecraft.world.entity.ai.control.MoveControl(this); // Purpur - use vanilla controller + this.lookControl = new net.minecraft.world.entity.ai.control.LookControl(this); // Purpur - use vanilla controller - this.setMaxUpStep(1.0F); this.createInventory(); } @@ -2419,7 +2393,7 @@ index 815eb15086976b8f9e03bf8182d9ed50aec14720..41777079871eef2bb4d319f28c8f441d this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class)); -@@ -165,6 +175,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -232,6 +242,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, if (this.canPerformRearing()) { this.goalSelector.addGoal(9, new RandomStandGoal(this)); } @@ -2428,7 +2402,7 @@ index 815eb15086976b8f9e03bf8182d9ed50aec14720..41777079871eef2bb4d319f28c8f441d this.addBehaviourGoals(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 8c14f9f2ad383f87c498126f135b460a241da410..5242059484fb5f407a2da2b0c01a8feeaf1c3a64 100644 +index ff02169ba14f5264cea8beaf1779e2890c5d74b8..1febe8e173886d501e40331c12261701bd36b0f6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -15,6 +15,13 @@ public class Donkey extends AbstractChestedHorse { @@ -2446,10 +2420,10 @@ index 8c14f9f2ad383f87c498126f135b460a241da410..5242059484fb5f407a2da2b0c01a8fee 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 2181d74ad955197eb4f1925a64914a6197fa9023..5efed70522657c2a02f869affc6755332082cf97 100644 +index 6e299770fca78699f7e1988db4cdef37b99d74c1..816c698a81a77f217a606468aa157bdaed779479 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 -@@ -40,6 +40,13 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -44,6 +44,13 @@ public class Horse extends AbstractHorse implements VariantHolder { super(type, world); } @@ -2464,7 +2438,7 @@ index 2181d74ad955197eb4f1925a64914a6197fa9023..5efed70522657c2a02f869affc675533 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 6623674136b0f865d5b3d7a10d3bf05793b82f87..1c6be506804b9622c4d0094814939f894ca857df 100644 +index 1dd4290287725898ace29e46b439b55df8fdd1af..3943ca63aaeecfb98c34ceef9b0c40e71de4e832 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 @@ -78,7 +78,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -130,6 +131,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -128,6 +129,37 @@ public class EnderDragon extends Mob implements Enemy { this.noCulling = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY, ParticleTypes.EXPLOSION, ParticleTypes.EXPLOSION_EMITTER, SoundEvents.GENERIC_EXPLODE); // CraftBukkit @@ -2751,7 +2725,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b } public void setDragonFight(EndDragonFight fight) { -@@ -144,6 +176,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -142,6 +174,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2769,7 +2743,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -205,6 +248,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -203,6 +246,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2807,7 +2781,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -231,6 +305,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -229,6 +303,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2816,7 +2790,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -243,9 +319,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -241,9 +317,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2828,7 +2802,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -279,7 +355,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -277,7 +353,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2837,7 +2811,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -348,7 +424,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -346,7 +422,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -2846,7 +2820,7 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b this.knockBack(this.level().getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.knockBack(this.level().getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.hurt(this.level().getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -392,7 +468,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -390,7 +466,7 @@ public class EnderDragon extends Mob implements Enemy { } if (!this.level().isClientSide) { @@ -2856,11 +2830,11 @@ index 1df13af62af7d0bbd92c84d424a07da66bb8583f..3d4ecd05af1794b37102996305a2346b this.dragonFight.updateDragon(this); } 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 de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd0376d03e 100644 +index 7ddca52f7fe3f289b4b867e134326b1ead1a2aee..14f9ded1b44d05d69f1a9394fdacab5b145e4c45 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 -@@ -85,16 +85,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob - return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); +@@ -88,16 +88,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob + return !entityliving.getType().is(EntityTypeTags.WITHER_FRIENDS) && entityliving.attackable(); }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); + private int shootCooldown = 0; // Purpur @@ -2891,7 +2865,7 @@ index de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd this.setHealth(this.getMaxHealth()); this.xpReward = 50; } -@@ -109,13 +123,113 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -112,13 +126,113 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return navigationflying; } @@ -3005,7 +2979,7 @@ index de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -264,6 +378,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -3022,7 +2996,7 @@ index de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd int i; if (this.getInvulnerableTicks() > 0) { -@@ -585,11 +709,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -580,11 +704,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3037,10 +3011,10 @@ index de2471cfa96a23944f229f33ffdff88b6b7756e4..8fbfd134005c0813406fecbce8a918cd @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..9d259d7e2aa3e44e350eb5927314cfceaffaf3f3 100644 +index 0c5fe46d2da113beff3e220843593d616e37d4ca..8f71739a4b23bc53994f1cbff8500b6bad288a42 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -70,12 +70,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -69,12 +69,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override protected void registerGoals() { @@ -3056,7 +3030,7 @@ index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..9d259d7e2aa3e44e350eb5927314cfce this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 58c2b8b8bfd5a40259aa6252243884d14c183ef2..b48bb11029e2726cde2e8f624b8c1ad159740e3a 100644 +index aee2fa184bc5723dfd3d54f460a173982d874c8b..0e1aa9a00284ce43436b1290f9ebe243c4d09fdc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -32,6 +32,7 @@ public class Blaze extends Monster { @@ -3064,9 +3038,9 @@ index 58c2b8b8bfd5a40259aa6252243884d14c183ef2..b48bb11029e2726cde2e8f624b8c1ad1 public Blaze(EntityType type, Level world) { super(type, world); + this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); + this.setPathfindingMalus(PathType.WATER, -1.0F); + this.setPathfindingMalus(PathType.LAVA, 8.0F); + this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); @@ -39,19 +40,55 @@ public class Blaze extends Monster { this.xpReward = 10; } @@ -3139,10 +3113,10 @@ index 58c2b8b8bfd5a40259aa6252243884d14c183ef2..b48bb11029e2726cde2e8f624b8c1ad1 if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -index 70d25bb45ad603095a1f5812cc396dfc5f16a1e1..562faf0257388d9c22146a418f25716cef7471b8 100644 +index 87e4b300ac248f6c13d9b4a8f24fd78b24b565b4..504996c8309fcd11de1dd166dee12d7e7db8db56 100644 --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -@@ -29,6 +29,23 @@ public class CaveSpider extends Spider { +@@ -26,6 +26,23 @@ public class CaveSpider extends Spider { return Spider.createAttributes().add(Attributes.MAX_HEALTH, 12.0D); } @@ -3167,13 +3141,13 @@ index 70d25bb45ad603095a1f5812cc396dfc5f16a1e1..562faf0257388d9c22146a418f25716c public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 9657796d08f4a102d9d5ff7685f2a152d1a87fda..30b4c8513e97463ce1a96775b1c22a1d95bd6fbd 100644 +index cbcb2bfa8f91099e5c374f590f48885390bdf7a7..6e812033323b1d1ace9023d57f0405e0d546c337 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -60,21 +60,98 @@ public class Creeper extends Monster implements PowerableMob { - public int maxSwell = 30; +@@ -61,21 +61,98 @@ public class Creeper extends Monster implements PowerableMob { public int explosionRadius = 3; private int droppedSkulls; + private Player entityIgniter; // CraftBukkit + // Purpur start + private int spacebarCharge = 0; + private int prevSpacebarCharge = 0; @@ -3269,7 +3243,7 @@ index 9657796d08f4a102d9d5ff7685f2a152d1a87fda..30b4c8513e97463ce1a96775b1c22a1d this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); } -@@ -325,6 +402,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -323,6 +400,7 @@ public class Creeper extends Monster implements PowerableMob { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.entityData.set(Creeper.DATA_IS_IGNITED, event.isIgnited()); @@ -3278,11 +3252,11 @@ index 9657796d08f4a102d9d5ff7685f2a152d1a87fda..30b4c8513e97463ce1a96775b1c22a1d } // Paper end - CreeperIgniteEvent diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc2316a7e419f 100644 +index cff1b5e0e3fd32d82157d5f13d83d4abdfad7378..2b93338db154e6c0c3c8814adabaab761f08af08 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -68,6 +68,23 @@ public class Drowned extends Zombie implements RangedAttackMob { - this.groundNavigation = new GroundPathNavigation(this, world); +@@ -71,6 +71,23 @@ public class Drowned extends Zombie implements RangedAttackMob { + return Zombie.createAttributes().add(Attributes.STEP_HEIGHT, 1.0D); } + // Purpur start @@ -3305,7 +3279,7 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); -@@ -259,8 +276,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -262,8 +279,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.searchingForLand = targetingUnderwater; } @@ -3315,7 +3289,7 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 private final Drowned drowned; public DrownedMoveControl(Drowned drowned) { -@@ -269,7 +285,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -272,7 +288,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3324,7 +3298,7 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 LivingEntity entityliving = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { -@@ -292,7 +308,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -295,7 +311,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), f, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3333,7 +3307,7 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 float f2 = Mth.lerp(0.125F, this.drowned.getSpeed(), f1); this.drowned.setSpeed(f2); -@@ -302,7 +318,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -305,7 +321,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0D, -0.008D, 0.0D)); } @@ -3343,10 +3317,10 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 } diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index 91ff663b2260d1cdd1388c93068e4cd9d0331aea..865f2bf27674f46cbf87cf3433915701273473c3 100644 +index fd995b1f29c47884e9db2cb92f1dd615d62ae032..430899602940aa04c21d45ae94bcc506352389cf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -@@ -36,6 +36,18 @@ public class ElderGuardian extends Guardian { +@@ -33,6 +33,18 @@ public class ElderGuardian extends Guardian { } @@ -3366,11 +3340,11 @@ index 91ff663b2260d1cdd1388c93068e4cd9d0331aea..865f2bf27674f46cbf87cf3433915701 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca68eda95bb 100644 +index 260202fab3ac300552c557b44dcf251f083c6a78..0c1e3b00bdc1e6b033e6e9e37400a475cee2500e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -98,9 +98,27 @@ public class EnderMan extends Monster implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); +@@ -93,9 +93,27 @@ public class EnderMan extends Monster implements NeutralMob { + this.setPathfindingMalus(PathType.WATER, -1.0F); } + // Purpur start @@ -3397,7 +3371,7 @@ index 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca6 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); -@@ -108,6 +126,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -103,6 +121,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); @@ -3405,7 +3379,7 @@ index 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca6 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); -@@ -294,7 +313,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -279,7 +298,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep() { @@ -3414,7 +3388,7 @@ index 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca6 float f = this.getLightLevelDependentMagicValue(); if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper - EndermanEscapeEvent -@@ -415,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -394,6 +413,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -3423,10 +3397,10 @@ index 6563e625ebae47fc68e5010d36bd4b4d327c07b7..01dd5347bc8fa25b9b1f6cb746c25ca6 boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index b8ce2a9ad151b20f0f4e9e8e34a57069d8d77128..75de003b4f7556cd9c5137fe324b66348835141a 100644 +index 9c78905762d9a484878fa9cf03a2ca3850e7e613..ee88933c7baba3bc82c6dc9d52291d5f9fc0f25d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -43,14 +43,33 @@ public class Endermite extends Monster { +@@ -38,14 +38,33 @@ public class Endermite extends Monster { this.xpReward = 3; } @@ -3461,10 +3435,10 @@ index b8ce2a9ad151b20f0f4e9e8e34a57069d8d77128..75de003b4f7556cd9c5137fe324b6634 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index e67cb165a0d706d38e4970fb3d63f59a29808a76..937e5d59743f1e45e426ac34f301884f1ba6e197 100644 +index 38e866571c35ebc4843a8d4fa39691902a5fcc91..0d1931398f1f6bad941ff133a0d872ffabb00bd3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -51,10 +51,28 @@ public class Evoker extends SpellcasterIllager { +@@ -52,10 +52,28 @@ public class Evoker extends SpellcasterIllager { this.xpReward = 10; } @@ -3493,7 +3467,7 @@ index e67cb165a0d706d38e4970fb3d63f59a29808a76..937e5d59743f1e45e426ac34f301884f this.goalSelector.addGoal(1, new Evoker.EvokerCastingSpellGoal()); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D)); this.goalSelector.addGoal(4, new Evoker.EvokerSummonSpellGoal()); -@@ -63,6 +81,7 @@ public class Evoker extends SpellcasterIllager { +@@ -64,6 +82,7 @@ public class Evoker extends SpellcasterIllager { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3502,10 +3476,10 @@ index e67cb165a0d706d38e4970fb3d63f59a29808a76..937e5d59743f1e45e426ac34f301884f this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8eeac57ab4 100644 +index 373a4f036157017b0d95e8f1849780582235a549..862ad83b536fd0b5eb38ac0f2940cc46aed1fba2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -@@ -45,11 +45,47 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -43,11 +43,47 @@ public class Ghast extends FlyingMob implements Enemy { this.moveControl = new Ghast.GhastMoveControl(this); } @@ -3553,7 +3527,7 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -104,7 +140,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -102,7 +138,7 @@ public class Ghast extends FlyingMob implements Enemy { } public static AttributeSupplier.Builder createAttributes() { @@ -3562,8 +3536,8 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e } @Override -@@ -171,7 +207,7 @@ public class Ghast extends FlyingMob implements Enemy { - return 2.6F; +@@ -154,7 +190,7 @@ public class Ghast extends FlyingMob implements Enemy { + } - private static class GhastMoveControl extends MoveControl { @@ -3571,7 +3545,7 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e private final Ghast ghast; private int floatDuration; -@@ -182,7 +218,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -165,7 +201,7 @@ public class Ghast extends FlyingMob implements Enemy { } @Override @@ -3581,10 +3555,10 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e if (this.floatDuration-- <= 0) { this.floatDuration += this.ghast.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index a329395dd8ff2d5428de19018111373806fc8796..9f8c47bcaace9bd4cb276d0dc252f3d0f259a3af 100644 +index 118521ae54254b0a73bb7cba7b2871c9c26f89fc..868e8383a890d76b4cfeac8b77b06e8f58d0a6dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -15,6 +15,29 @@ public class Giant extends Monster { +@@ -12,6 +12,29 @@ public class Giant extends Monster { super(type, world); } @@ -3611,16 +3585,16 @@ index a329395dd8ff2d5428de19018111373806fc8796..9f8c47bcaace9bd4cb276d0dc252f3d0 + } + // Purpur end + - @Override - protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { - return 10.440001F; + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); + } diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3ae9abd44f 100644 +index 6c2e2fd5826a5f8070502e20d1d140c3d70bd0d3..9a1b1a1b0b6d59d599a2ab87f047121f47cf2bec 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -@@ -70,15 +70,36 @@ public class Guardian extends Monster { +@@ -66,15 +66,36 @@ public class Guardian extends Monster { this.xpReward = 10; - this.setPathfindingMalus(BlockPathTypes.WATER, 0.0F); + this.setPathfindingMalus(PathType.WATER, 0.0F); this.moveControl = new Guardian.GuardianMoveControl(this); + // Purpur start + this.lookControl = new org.purpurmc.purpur.controller.LookControllerWASD(this) { @@ -3655,7 +3629,7 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a this.goalSelector.addGoal(4, this.guardianAttackGoal = new Guardian.GuardianAttackGoal(this)); // CraftBukkit - assign field this.goalSelector.addGoal(5, pathfindergoalmovetowardsrestriction); this.goalSelector.addGoal(7, this.randomStrollGoal); -@@ -87,6 +108,7 @@ public class Guardian extends Monster { +@@ -83,6 +104,7 @@ public class Guardian extends Monster { this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); this.randomStrollGoal.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); pathfindergoalmovetowardsrestriction.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); @@ -3663,7 +3637,7 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, new Guardian.GuardianAttackSelector(this))); } -@@ -347,7 +369,7 @@ public class Guardian extends Monster { +@@ -333,7 +355,7 @@ public class Guardian extends Monster { @Override public void travel(Vec3 movementInput) { if (this.isControlledByLocalInstance() && this.isInWater()) { @@ -3672,8 +3646,8 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); if (!this.isMoving() && this.getTarget() == null) { -@@ -364,7 +386,7 @@ public class Guardian extends Monster { - return new Vector3f(0.0F, dimensions.height + 0.125F * scaleFactor, 0.0F); +@@ -345,7 +367,7 @@ public class Guardian extends Monster { + } - private static class GuardianMoveControl extends MoveControl { @@ -3681,7 +3655,7 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a private final Guardian guardian; -@@ -373,8 +395,17 @@ public class Guardian extends Monster { +@@ -354,8 +376,17 @@ public class Guardian extends Monster { this.guardian = guardian; } @@ -3700,7 +3674,7 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a if (this.operation == MoveControl.Operation.MOVE_TO && !this.guardian.getNavigation().isDone()) { Vec3 vec3d = new Vec3(this.wantedX - this.guardian.getX(), this.wantedY - this.guardian.getY(), this.wantedZ - this.guardian.getZ()); double d0 = vec3d.length(); -@@ -385,7 +416,7 @@ public class Guardian extends Monster { +@@ -366,7 +397,7 @@ public class Guardian extends Monster { this.guardian.setYRot(this.rotlerp(this.guardian.getYRot(), f, 90.0F)); this.guardian.yBodyRot = this.guardian.getYRot(); @@ -3710,10 +3684,10 @@ index fd41ef66e2e12ec3a888bb376ef4363343914fcd..159821730981b78a973e58e7a69e5d3a this.guardian.setSpeed(f2); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 72b8290bebe8ed9bc3c464b30cfe5d2d664310f5..bfc6dcafe79fa3bb6e450a23e91a772b41488561 100644 +index c34c8483a026f61fe20935697d321d7ef5d8dfbc..20ea3187626a667815245974df88189f7d6ffc76 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -24,6 +24,23 @@ public class Husk extends Zombie { +@@ -22,6 +22,23 @@ public class Husk extends Zombie { super(type, world); } @@ -3738,10 +3712,10 @@ index 72b8290bebe8ed9bc3c464b30cfe5d2d664310f5..bfc6dcafe79fa3bb6e450a23e91a772b return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910cede8ffc3 100644 +index a7964208c952cb4e34916ae6523850fc3921b07e..bef63bb69ea81298a1021eadd6c260943e18eba7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -59,10 +59,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { +@@ -56,10 +56,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { } @@ -3770,7 +3744,7 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910c this.goalSelector.addGoal(1, new SpellcasterIllager.SpellcasterCastingSpellGoal()); this.goalSelector.addGoal(4, new Illusioner.IllusionerMirrorSpellGoal()); this.goalSelector.addGoal(5, new Illusioner.IllusionerBlindnessSpellGoal()); -@@ -70,6 +88,7 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { +@@ -67,6 +85,7 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3779,10 +3753,10 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910c this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index c4b4ff79bfdf9e34bf73a7760369e24b28dbbd70..b60e01a6cfce467f2e0a95a52f5ad7379d9fe574 100644 +index 7be2393dc3cb79556d9767b09f43be0f81308a12..6a03a5f1c209d248207b6835ba1d7c0f59dec557 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -25,6 +25,28 @@ public class MagmaCube extends Slime { +@@ -24,6 +24,28 @@ public class MagmaCube extends Slime { super(type, world); } @@ -3811,7 +3785,7 @@ index c4b4ff79bfdf9e34bf73a7760369e24b28dbbd70..b60e01a6cfce467f2e0a95a52f5ad737 public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } -@@ -70,11 +92,12 @@ public class MagmaCube extends Slime { +@@ -64,11 +86,12 @@ public class MagmaCube extends Slime { } @Override @@ -3826,11 +3800,11 @@ index c4b4ff79bfdf9e34bf73a7760369e24b28dbbd70..b60e01a6cfce467f2e0a95a52f5ad737 @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 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69251dbb04 100644 +index 68f8945292753535a3b73acb9f48c1594f0789a4..03c873b830f45d848af076ac7921fc4d019f69c8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -61,6 +61,64 @@ public class Phantom extends FlyingMob implements Enemy { - this.lookControl = new Phantom.PhantomLookControl(this); +@@ -59,6 +59,64 @@ public class Phantom extends FlyingMob implements Enemy { + this.lookControl = new Phantom.PhantomLookControl(this, this); } + // Purpur start @@ -3894,7 +3868,7 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0; -@@ -73,9 +131,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -71,9 +129,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { @@ -3906,15 +3880,15 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -146,6 +206,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -139,6 +199,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { - if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API + if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API + if (getRider() == null || !this.isControllable()) // Purpur - this.setSecondsOnFire(8); + this.igniteForSeconds(8); } -@@ -273,7 +334,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -254,7 +315,7 @@ public class Phantom extends FlyingMob implements Enemy { private AttackPhase() {} } @@ -3923,7 +3897,7 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 private float speed = 0.1F; -@@ -281,8 +342,19 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -262,8 +323,19 @@ public class Phantom extends FlyingMob implements Enemy { super(entity); } @@ -3944,15 +3918,15 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 if (Phantom.this.horizontalCollision) { Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; -@@ -328,14 +400,20 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -309,14 +381,20 @@ public class Phantom extends FlyingMob implements Enemy { } } - private class PhantomLookControl extends LookControl { + private class PhantomLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur - public PhantomLookControl(Mob entity) { - super(entity); + public PhantomLookControl(final Phantom entity, final Mob phantom) { + super(phantom); } + // Purpur start @@ -3968,10 +3942,10 @@ index 187037c43ebb5b245ffa4b50163d443490668744..98ced015ceb4f68364ff5ee6f7ee1a69 private class PhantomBodyRotationControl extends BodyRotationControl { diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index 05ed2f06a41f3b12e0432a37faf98d0b1fea7a8b..3eca357a82eebedc56237a03503017a17f17d3a6 100644 +index ac411202c0029052a962b51b015da191b124de5f..6bfe582390dcb6111dcaf8325bd2773b9f5fd6a9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -@@ -66,15 +66,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -58,15 +58,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve super(type, world); } @@ -3997,7 +3971,7 @@ index 05ed2f06a41f3b12e0432a37faf98d0b1fea7a8b..3eca357a82eebedc56237a03503017a1 super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(2, new Raider.HoldGroundAttackGoal(this, 10.0F)); + this.goalSelector.addGoal(2, new Raider.HoldGroundAttackGoal(this, 10.0F)); // Paper - decomp fix this.goalSelector.addGoal(3, new RangedCrossbowAttackGoal<>(this, 1.0D, 8.0F)); this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 15.0F, 1.0F)); @@ -4007,11 +3981,11 @@ index 05ed2f06a41f3b12e0432a37faf98d0b1fea7a8b..3eca357a82eebedc56237a03503017a1 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 151acc43c96b4545ce92d3d559d8e1591874b4b5..73220bd6989855ac82420219c841421612cb3f11 100644 +index 2d7b7c949faaaaae94c0043132a4a822f55df104..1248a48c0146258d14efcaa805a82ce1a79c623d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -71,14 +71,39 @@ public class Ravager extends Raider { - this.setPathfindingMalus(BlockPathTypes.LEAVES, 0.0F); +@@ -68,14 +68,39 @@ public class Ravager extends Raider { + this.setPathfindingMalus(PathType.LEAVES, 0.0F); } + // Purpur start @@ -4050,7 +4024,7 @@ index 151acc43c96b4545ce92d3d559d8e1591874b4b5..73220bd6989855ac82420219c8414216 this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> { -@@ -136,7 +161,7 @@ public class Ravager extends Raider { +@@ -128,7 +153,7 @@ public class Ravager extends Raider { @Override public void aiStep() { super.aiStep(); @@ -4060,7 +4034,7 @@ index 151acc43c96b4545ce92d3d559d8e1591874b4b5..73220bd6989855ac82420219c8414216 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index f3c2a2ffb74daa89a516db4c188ce675c79932bf..a695ac9b9e4c3e423d74d082e24928581333947e 100644 +index 5215fa54666979ef4da074ddfdb082e7274f2957..78433d0b7624019018012c55e8dd6fec029f8cd1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -97,12 +97,31 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 92974452d8f63fde8524cfac305ee2ef5212f840..3568c4b7ecfa250bbeb1799685b487df53537919 100644 +index 5642bddc8268d70e5bb5446b65be1d8ce34feb9b..2f4f38fe7b7640b6658884b826d7f7a335370bd3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -26,6 +26,23 @@ public class Skeleton extends AbstractSkeleton { @@ -4168,13 +4142,13 @@ index 92974452d8f63fde8524cfac305ee2ef5212f840..3568c4b7ecfa250bbeb1799685b487df + // Purpur end + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da73330139 100644 +index f223e78eb1204bbf5f2de38a7ce5b663800f7dc4..2c73e80d916529cb0433846a2e57bc845bf7f3d4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -62,6 +62,7 @@ public class Slime extends Mob implements Enemy { +@@ -61,6 +61,7 @@ public class Slime extends Mob implements Enemy { public float squish; public float oSquish; private boolean wasOnGround; @@ -4182,7 +4156,7 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da public Slime(EntityType type, Level world) { super(type, world); -@@ -69,12 +70,48 @@ public class Slime extends Mob implements Enemy { +@@ -68,12 +69,48 @@ public class Slime extends Mob implements Enemy { this.moveControl = new Slime.SlimeMoveControl(this); } @@ -4231,7 +4205,7 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -386,11 +423,12 @@ public class Slime extends Mob implements Enemy { +@@ -382,11 +419,12 @@ public class Slime extends Mob implements Enemy { } @Override @@ -4245,8 +4219,8 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da } @Nullable -@@ -424,7 +462,7 @@ public class Slime extends Mob implements Enemy { - return super.getDimensions(pose).scale(0.255F * (float) this.getSize()); +@@ -420,7 +458,7 @@ public class Slime extends Mob implements Enemy { + return super.getDefaultDimensions(pose).scale((float) this.getSize()); } - private static class SlimeMoveControl extends MoveControl { @@ -4254,7 +4228,7 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da private float yRot; private int jumpDelay; -@@ -443,21 +481,33 @@ public class Slime extends Mob implements Enemy { +@@ -439,21 +477,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4291,7 +4265,7 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -474,7 +524,7 @@ public class Slime extends Mob implements Enemy { +@@ -470,7 +520,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4301,10 +4275,10 @@ index 3d9107d2c19a09215445aa0e0aacc32f9f82a536..bb1d0cae9d51a64e0752a59218dc71da } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 7618364e5373fe17cfe45a5a4ee9ab25e591581c..dd1a6fc505ce2214903dbe703bcabe7d264fbe90 100644 +index fa0316e9d2a4cf213982994dc8bf310299cca984..87f63373ccef3de9ce77a92933ff332be4fd6305 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java -@@ -53,14 +53,33 @@ public class Spider extends Monster { +@@ -51,9 +51,27 @@ public class Spider extends Monster { super(type, world); } @@ -4329,8 +4303,10 @@ index 7618364e5373fe17cfe45a5a4ee9ab25e591581c..dd1a6fc505ce2214903dbe703bcabe7d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(3, new LeapAtTargetGoal(this, 0.4F)); - this.goalSelector.addGoal(4, new Spider.SpiderAttackGoal(this)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Armadillo.class, 6.0F, 1.0D, 1.2D, (entityliving) -> { + return !((Armadillo) entityliving).isScared(); + })); +@@ -62,6 +80,7 @@ public class Spider extends Monster { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.8D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); @@ -4367,11 +4343,11 @@ index 207a649d737adff440bd3f7cba15b0dbca338a35..44006bcb7d70661a6990e3fc4375dd6d BlockPos blockPos = pos; diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 61162ecd43dc5e6f7898daecdec49f444e6d869b..bfd69abf24d788b5e539498d56ade57fcb78f580 100644 +index fe85900a610afd0b237d8b5a164181c03afbdfc7..7e5ad9d52db7a39be60e0b2f24e13e8ed82785e1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -100,6 +100,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); +@@ -97,6 +97,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { + this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); } + // Purpur start @@ -4394,14 +4370,14 @@ index 61162ecd43dc5e6f7898daecdec49f444e6d869b..bfd69abf24d788b5e539498d56ade57f public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); -@@ -161,6 +178,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -158,6 +175,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override protected void registerGoals() { this.goalSelector.addGoal(1, new PanicGoal(this, 1.65D)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.temptGoal = new TemptGoal(this, 1.4D, Strider.TEMPT_ITEMS, false); - this.goalSelector.addGoal(3, this.temptGoal); + this.temptGoal = new TemptGoal(this, 1.4D, (itemstack) -> { + return itemstack.is(ItemTags.STRIDER_TEMPT_ITEMS); @@ -468,7 +486,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { if (!enuminteractionresult.consumesAction()) { ItemStack itemstack = player.getItemInHand(hand); @@ -4412,10 +4388,10 @@ index 61162ecd43dc5e6f7898daecdec49f444e6d869b..bfd69abf24d788b5e539498d56ade57f if (flag && !this.isSilent()) { this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf5f14a7d6 100644 +index fd3b37dde54623ba38186efb2a64d364c86b81d2..98c9d7080595a5d9ffa3d65a153780b68aec0e47 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java -@@ -63,6 +63,50 @@ public class Vex extends Monster implements TraceableEntity { +@@ -60,6 +60,50 @@ public class Vex extends Monster implements TraceableEntity { this.xpReward = 3; } @@ -4464,9 +4440,9 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf + // Purpur end + @Override - protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { - return dimensions.height - 0.28125F; -@@ -81,7 +125,7 @@ public class Vex extends Monster implements TraceableEntity { + public boolean isFlapping() { + return this.tickCount % Vex.TICKS_PER_FLAP == 0; +@@ -73,7 +117,7 @@ public class Vex extends Monster implements TraceableEntity { @Override public void tick() { @@ -4475,7 +4451,7 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf super.tick(); this.noPhysics = false; this.setNoGravity(true); -@@ -96,17 +140,19 @@ public class Vex extends Monster implements TraceableEntity { +@@ -88,17 +132,19 @@ public class Vex extends Monster implements TraceableEntity { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -4496,14 +4472,14 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf } @Override -@@ -251,14 +297,14 @@ public class Vex extends Monster implements TraceableEntity { - return new Vector3f(0.0F, dimensions.height - 0.0625F * scaleFactor, 0.0F); +@@ -230,14 +276,14 @@ public class Vex extends Monster implements TraceableEntity { + this.setDropChance(EquipmentSlot.MAINHAND, 0.0F); } - private class VexMoveControl extends MoveControl { + private class VexMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - public VexMoveControl(Vex entityvex) { + public VexMoveControl(final Vex entityvex) { super(entityvex); } @@ -4513,7 +4489,7 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf if (this.operation == MoveControl.Operation.MOVE_TO) { Vec3 vec3d = new Vec3(this.wantedX - Vex.this.getX(), this.wantedY - Vex.this.getY(), this.wantedZ - Vex.this.getZ()); double d0 = vec3d.length(); -@@ -267,7 +313,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -246,7 +292,7 @@ public class Vex extends Monster implements TraceableEntity { this.operation = MoveControl.Operation.WAIT; Vex.this.setDeltaMovement(Vex.this.getDeltaMovement().scale(0.5D)); } else { @@ -4523,10 +4499,10 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf Vec3 vec3d1 = Vex.this.getDeltaMovement(); 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 0ee020848cdfd0c069f1e8d3a9516a339d82467c..6301985e0906a06f41030f7a90bc862907caf9c5 100644 +index b3da310d6fd1d533da805c38c2f449cf06d01492..c6d12c939cd3fbd9facf88cdc0c7c51744089484 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -56,14 +56,33 @@ public class Vindicator extends AbstractIllager { +@@ -50,14 +50,33 @@ public class Vindicator extends AbstractIllager { super(type, world); } @@ -4561,10 +4537,10 @@ index 0ee020848cdfd0c069f1e8d3a9516a339d82467c..6301985e0906a06f41030f7a90bc8629 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index f9ffc5f4cbfdcf5c7351a883d2e5c26492175283..881e026f86916cf3ec5bc3c30f5c0f3cee4e5e1b 100644 +index 5803c1d36b769f0186baa0665976749765b4cb61..b5f44495f0a384c8a7d8d96e3a0f16999fba86fe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java -@@ -59,6 +59,23 @@ public class Witch extends Raider implements RangedAttackMob { +@@ -55,6 +55,23 @@ public class Witch extends Raider implements RangedAttackMob { super(type, world); } @@ -4588,7 +4564,7 @@ index f9ffc5f4cbfdcf5c7351a883d2e5c26492175283..881e026f86916cf3ec5bc3c30f5c0f3c @Override protected void registerGoals() { super.registerGoals(); -@@ -67,10 +84,12 @@ public class Witch extends Raider implements RangedAttackMob { +@@ -63,10 +80,12 @@ public class Witch extends Raider implements RangedAttackMob { }); this.attackPlayersGoal = new NearestAttackableWitchTargetGoal<>(this, Player.class, 10, true, false, (Predicate) null); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -4602,11 +4578,11 @@ index f9ffc5f4cbfdcf5c7351a883d2e5c26492175283..881e026f86916cf3ec5bc3c30f5c0f3c this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 20a65c11ededcd7170704b70118da6200151fbab..4235684e533e744bb1eb90a5cc69001e43782bc2 100644 +index 3f1191795e58f31b7e2fe34ef2774df13b9a789f..355ed17da77256c84d8ba7d4d99b5c73d729a48d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -@@ -35,6 +35,23 @@ public class WitherSkeleton extends AbstractSkeleton { - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); +@@ -32,6 +32,23 @@ public class WitherSkeleton extends AbstractSkeleton { + this.setPathfindingMalus(PathType.LAVA, 8.0F); } + // Purpur start @@ -4630,10 +4606,10 @@ index 20a65c11ededcd7170704b70118da6200151fbab..4235684e533e744bb1eb90a5cc69001e protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 728f3dff42678ed48c8921ea0e960f48724a9183..f34803f4bebf2eafba483628b20784c2134002fa 100644 +index cfdb2b793f11544ec5e2d1e726134089994b2b0f..2cb65bc3e2a2f990f4036f4f0418d9cd5226381e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -82,6 +82,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -80,6 +80,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4657,7 +4633,7 @@ index 728f3dff42678ed48c8921ea0e960f48724a9183..f34803f4bebf2eafba483628b20784c2 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -242,6 +259,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -235,6 +252,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("zoglinBrain"); @@ -4666,10 +4642,10 @@ index 728f3dff42678ed48c8921ea0e960f48724a9183..f34803f4bebf2eafba483628b20784c2 this.level().getProfiler().pop(); this.updateActivity(); 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 5c40e994007dbf46ebc12c1e6a6ca90379471b74..3be3e46408b2d43f2cbb27b516be8c466ab0ed79 100644 +index e42dfc62bb179be1ab01b0096c05c6549d38abbc..7c78b243164a517818565845b1a6c7d40c8839d8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -107,11 +107,30 @@ public class Zombie extends Monster { +@@ -104,11 +104,30 @@ public class Zombie extends Monster { this(EntityType.ZOMBIE, world); } @@ -4701,10 +4677,10 @@ index 5c40e994007dbf46ebc12c1e6a6ca90379471b74..3be3e46408b2d43f2cbb27b516be8c46 } 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 7de9d012e7416eaa0189b513a0972c846e93c4b6..ba391ae0f8c361fb0ffbe0b65f12a008c21e4676 100644 +index f38acc96f71298e40ce9433e7759fd223ca55e48..cc3d9f47ef6d1efa589c8bed5c51ed9e61d7c07d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -82,6 +82,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -80,6 +80,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { }); } @@ -4726,14 +4702,14 @@ index 7de9d012e7416eaa0189b513a0972c846e93c4b6..ba391ae0f8c361fb0ffbe0b65f12a008 + // Purpur end + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + 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 fbabbd0808304f5d0d12f987d00c9e43a89fb1c9..2121de85765d535effb3ef4e0c4a873238dd7576 100644 +index a6def4133f06c41be287e9942643e80a7b8e8218..2ff0ce04ce210b77c555f59967182ed4dd3fe9aa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -64,6 +64,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); +@@ -62,6 +62,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { + this.setPathfindingMalus(PathType.LAVA, 8.0F); } + // Purpur start @@ -4757,10 +4733,10 @@ index fbabbd0808304f5d0d12f987d00c9e43a89fb1c9..2121de85765d535effb3ef4e0c4a8732 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 1299f93d4f983e6715e447add65df91ef9e9090a..42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1 100644 +index c583d883118ded5e1884c757427dc5e73c10dd27..6e86e0597af66bad8f2e97661b588e950b2679ba 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -92,6 +92,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -90,6 +90,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4784,20 +4760,19 @@ index 1299f93d4f983e6715e447add65df91ef9e9090a..42e56f0d6d1c5e913f9c9c4e0c53e4ca @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -159,7 +176,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -156,6 +173,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("hoglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 83d83e3f84bb6bd58761671c6cd4c8683545ff4c..015bb57c73c7b38622329fc3001b6369fa183cd1 100644 +index a8ab486c7e11ec137da48174af6f1030dfd48056..6632cab4ed43bbfd10b4d8f3b2c447a35eba735e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -96,6 +96,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -94,6 +94,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.xpReward = 5; } @@ -4821,20 +4796,19 @@ index 83d83e3f84bb6bd58761671c6cd4c8683545ff4c..015bb57c73c7b38622329fc3001b6369 @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -@@ -304,7 +321,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -297,6 +314,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); this.level().getProfiler().pop(); PiglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 1afd5245267866c498d4b0d90ca55cda2ede8ca9..0ec07be03e871caf5a30748f540cac8ce50f1f4b 100644 +index fcadd7f28ccb81bbb36e97d8b8d8a8ba3f3d6a16..17e2457bc83e7ee4402c10ee7d2ef5aa36901565 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -63,6 +63,23 @@ public class PiglinBrute extends AbstractPiglin { +@@ -62,6 +62,23 @@ public class PiglinBrute extends AbstractPiglin { this.xpReward = 20; } @@ -4858,7 +4832,7 @@ index 1afd5245267866c498d4b0d90ca55cda2ede8ca9..0ec07be03e871caf5a30748f540cac8c public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } -@@ -114,6 +131,7 @@ public class PiglinBrute extends AbstractPiglin { +@@ -107,6 +124,7 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBruteBrain"); @@ -4867,13 +4841,13 @@ index 1afd5245267866c498d4b0d90ca55cda2ede8ca9..0ec07be03e871caf5a30748f540cac8c this.level().getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 0a151c679b0dc943598180942d6d4b3886211688..384e7b29215cadfa40af07a183a9c9c6a5b4a80a 100644 +index ddd60be52dce5773c80934be5aa5705db239e3dd..9f5325444cc4f64fc88f85794fbad09ddd4f7860 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -123,8 +123,32 @@ public class Warden extends Monster implements VibrationSystem { - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); + this.setPathfindingMalus(PathType.LAVA, 8.0F); + this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); + this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); + this.moveControl = new org.purpurmc.purpur.controller.MoveControllerWASD(this, 0.5F); // Purpur } @@ -4903,16 +4877,14 @@ index 0a151c679b0dc943598180942d6d4b3886211688..384e7b29215cadfa40af07a183a9c9c6 @Override public Packet getAddEntityPacket() { return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -398,19 +422,16 @@ public class Warden extends Monster implements VibrationSystem { +@@ -392,17 +416,14 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { - boolean flag; - + if (getRider() != null && isControllable()) return false; // Purpur - if (entity instanceof LivingEntity) { - LivingEntity entityliving = (LivingEntity) entity; - + if (entity instanceof LivingEntity entityliving) { if (this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) && !this.isAlliedTo(entity) && entityliving.getType() != EntityType.ARMOR_STAND && entityliving.getType() != EntityType.WARDEN && !entityliving.isInvulnerable() && !entityliving.isDeadOrDying() && this.level().getWorldBorder().isWithinBounds(entityliving.getBoundingBox())) { - flag = true; - return flag; @@ -4927,10 +4899,10 @@ index 0a151c679b0dc943598180942d6d4b3886211688..384e7b29215cadfa40af07a183a9c9c6 public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { 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 96ca567af2d8fb2ba39f995be80b935344550124..8e3e9bfe614057450ec771f72c9b1d7ea061d66e 100644 +index a7930f9875aa4aca997caaead46ecdc21e5e11d7..980f48b546f0da5696c110357ea42352a48fbd42 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -158,6 +158,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -156,6 +156,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -4959,22 +4931,19 @@ index 96ca567af2d8fb2ba39f995be80b935344550124..8e3e9bfe614057450ec771f72c9b1d7e @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -258,11 +280,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - protected void customServerAiStep(final boolean inactive) { +@@ -256,6 +278,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper end this.level().getProfiler().push("villagerBrain"); -- // Pufferfish start -- if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) { -+ // Purpur start + if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ /*// Purpur start // Purpur - TODO: Pufferfish + if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level(), this); // Paper - } -- // Pufferfish end -+ // Purpur end ++ this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ } ++ // Purpur end*/ // Purpur - TODO: Pufferfish this.level().getProfiler().pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -319,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -312,7 +339,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -4983,7 +4952,7 @@ index 96ca567af2d8fb2ba39f995be80b935344550124..8e3e9bfe614057450ec771f72c9b1d7e } else { boolean flag = this.getOffers().isEmpty(); -@@ -332,8 +354,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -325,8 +352,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { @@ -4995,7 +4964,7 @@ index 96ca567af2d8fb2ba39f995be80b935344550124..8e3e9bfe614057450ec771f72c9b1d7e this.startTrading(player); } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 8d1cc1a644415be251f469ab1cb2ebc09fe5c3eb..80b9c2043f2a84dc44b082a9c97a7b5dbbb93dc2 100644 +index 0854e9b7ee2e6b23b6c1ee6a324a5a253c9d4679..6bdf3d1e3652a661282d61f1dc2bfc2712339953 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -71,6 +71,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -5034,10 +5003,10 @@ index 8d1cc1a644415be251f469ab1cb2ebc09fe5c3eb..80b9c2043f2a84dc44b082a9c97a7b5d this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 567704f61034363e48ef2a5b5566ebdc91682297..8a6acc19e9f3afb778420495a5ed41ce78227f1a 100644 +index 72b3e64cf6d184e90a6e2c0d822b83312312d67d..90e44c7281935bc7ceb3b220bbcd73187fed44fb 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -194,6 +194,19 @@ public abstract class Player extends LivingEntity { +@@ -206,6 +206,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5058,10 +5027,10 @@ index 567704f61034363e48ef2a5b5566ebdc91682297..8a6acc19e9f3afb778420495a5ed41ce super(EntityType.PLAYER, world); this.lastItemInMainHand = ItemStack.EMPTY; diff --git a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -index 8f5376543cca9cbfb2a014f67ec373d984b0df64..3673d1442778331ece25f8faca95b3499cafe46e 100644 +index ffd01d24cbfc90e2a8807757e61b2cf20a944354..a419820d5001079ed839e67c757bc8fa591a20b3 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -@@ -29,6 +29,12 @@ public class LlamaSpit extends Projectile { +@@ -30,6 +30,12 @@ public class LlamaSpit extends Projectile { this.setPos(owner.getX() - (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.sin(owner.yBodyRot * 0.017453292F), owner.getEyeY() - 0.10000000149011612D, owner.getZ() + (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(owner.yBodyRot * 0.017453292F)); } @@ -5072,30 +5041,32 @@ index 8f5376543cca9cbfb2a014f67ec373d984b0df64..3673d1442778331ece25f8faca95b349 + // Purpur end + @Override - public void tick() { - super.tick(); + protected double getDefaultGravity() { + return 0.06D; 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 6f49b9b8707d74330adb973e0db3cd5bccf138b6..f5e1aa316a90bf2cd9c997b76830096d4fbbee42 100644 +index 55b4b5ad5f084c9a271a716d076672478d6486ba..4117260538e47c978ea31c76f439d43369ebedfb 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -111,6 +111,12 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -111,6 +111,14 @@ public class WitherSkull extends AbstractHurtingProjectile { } ++ // Purpur start + @Override + public boolean canHitEntity(Entity target) { + // do not hit rider + return target != this.getRider() && super.canHitEntity(target); + } ++ // Purpur end + @Override - public boolean isPickable() { + public boolean hurt(DamageSource source, float amount) { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index e8e4489bcd64fde1b3226bdc7a7cc612508bda3f..85d154f18e240cac77e023b4b5983ad7a95912b5 100644 +index a2d336ceb52b63db5c03432ee7bc94dc6a742b82..a6268b3df9691278606501284b5504da718703c2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1270,4 +1270,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1280,4 +1280,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5124,10 +5095,10 @@ index e8e4489bcd64fde1b3226bdc7a7cc612508bda3f..85d154f18e240cac77e023b4b5983ad7 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c0823c612de9dc2a64cc797f061eef25c5f31359..171efb1ab482d0042bead18df0880f038cfda16a 100644 +index 5a9c68b60cf3bf694fe1fcd3b095516b6481f8a2..2391a0c59bfbf315f00ce41c5e0a03ea23a25448 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -593,6 +593,15 @@ public class CraftEventFactory { +@@ -592,6 +592,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5143,7 +5114,7 @@ index c0823c612de9dc2a64cc797f061eef25c5f31359..171efb1ab482d0042bead18df0880f03 return event; } -@@ -1182,6 +1191,7 @@ public class CraftEventFactory { +@@ -1179,6 +1188,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); From 34c9973102a464409806f4e61b71d963d036581b Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 21:34:57 -0700 Subject: [PATCH 099/148] first 50 patches applied --- .../0011-LivingEntity-safeFallDistance.patch | 8 +- ...0016-LivingEntity-broadcastItemBreak.patch | 6 +- ...025-API-for-any-mob-to-burn-daylight.patch | 4 +- ...Configurable-entity-base-attributes.patch} | 355 +++++++++--------- ...0008-Barrels-and-enderchests-6-rows.patch} | 32 +- .../0009-Llama-API.patch} | 28 +- .../0010-AFK-API.patch} | 36 +- .../0011-Bring-back-server-name.patch} | 10 +- .../0012-Configurable-server-mod-name.patch} | 4 +- .../0013-LivingEntity-safeFallDistance.patch | 27 ++ .../0014-Lagging-threshold.patch} | 10 +- ...15-PlayerSetSpawnerTypeWithEggEvent.patch} | 15 +- .../0016-Anvil-API.patch} | 56 +-- ...0017-Alternative-Keepalive-Handling.patch} | 18 +- .../0018-Silk-touch-spawners.patch} | 10 +- .../0019-Add-turtle-egg-block-options.patch} | 4 +- ...settings-suppressing-pointless-logs.patch} | 12 +- .../0021-Disable-outdated-build-check.patch} | 4 +- .../0022-Giants-AI-settings.patch} | 26 +- .../0023-Zombie-horse-naturally-spawn.patch} | 6 +- ...024-Charged-creeper-naturally-spawn.patch} | 4 +- ...it-naturally-spawn-toast-and-killer.patch} | 8 +- ...er-showing-in-ping-before-server-fu.patch} | 2 +- .../0027-Tulips-change-fox-type.patch} | 10 +- .../0028-Breedable-Polar-Bears.patch} | 2 +- .../0029-Chickens-can-retaliate.patch} | 13 +- ...ption-to-set-armorstand-step-height.patch} | 20 +- .../0031-Cat-spawning-options.patch} | 8 +- .../0032-Cows-eat-mushrooms.patch} | 27 +- ...ow-rotation-when-shearing-mooshroom.patch} | 4 +- .../0034-Pigs-give-saddle-back.patch} | 2 +- ...5-Snowman-drop-and-put-back-pumpkin.patch} | 6 +- ...6-Ender-dragon-always-drop-full-exp.patch} | 4 +- ...oisten-from-water-directly-under-it.patch} | 4 +- ...Minecart-settings-and-WASD-controls.patch} | 26 +- ...ble-loot-drops-on-death-by-cramming.patch} | 6 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 19 +- ...ould-check-if-entity-can-use-portal.patch} | 10 +- ...Skip-events-if-there-s-no-listeners.patch} | 6 +- .../0043-Add-permission-for-F3-N-debug.patch} | 4 +- .../0044-Configurable-TPS-Catchup.patch} | 29 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 4 +- ...erman-and-creeper-griefing-controls.patch} | 14 +- ...047-Villagers-follow-emerald-blocks.patch} | 14 +- .../0048-Allow-leashing-villagers.patch} | 12 +- .../0015-LivingEntity-safeFallDistance.patch | 91 ----- 46 files changed, 473 insertions(+), 547 deletions(-) rename patches/{unapplied-server/0009-Configurable-entity-base-attributes.patch => server/0007-Configurable-entity-base-attributes.patch} (91%) rename patches/{unapplied-server/0010-Barrels-and-enderchests-6-rows.patch => server/0008-Barrels-and-enderchests-6-rows.patch} (90%) rename patches/{unapplied-server/0011-Llama-API.patch => server/0009-Llama-API.patch} (83%) rename patches/{unapplied-server/0012-AFK-API.patch => server/0010-AFK-API.patch} (93%) rename patches/{unapplied-server/0013-Bring-back-server-name.patch => server/0011-Bring-back-server-name.patch} (81%) rename patches/{unapplied-server/0014-Configurable-server-mod-name.patch => server/0012-Configurable-server-mod-name.patch} (91%) create mode 100644 patches/server/0013-LivingEntity-safeFallDistance.patch rename patches/{unapplied-server/0016-Lagging-threshold.patch => server/0014-Lagging-threshold.patch} (87%) rename patches/{unapplied-server/0017-PlayerSetSpawnerTypeWithEggEvent.patch => server/0015-PlayerSetSpawnerTypeWithEggEvent.patch} (84%) rename patches/{unapplied-server/0018-Anvil-API.patch => server/0016-Anvil-API.patch} (74%) rename patches/{unapplied-server/0019-Alternative-Keepalive-Handling.patch => server/0017-Alternative-Keepalive-Handling.patch} (82%) rename patches/{unapplied-server/0020-Silk-touch-spawners.patch => server/0018-Silk-touch-spawners.patch} (96%) rename patches/{unapplied-server/0021-Add-turtle-egg-block-options.patch => server/0019-Add-turtle-egg-block-options.patch} (94%) rename patches/{unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch => server/0020-Logger-settings-suppressing-pointless-logs.patch} (88%) rename patches/{unapplied-server/0023-Disable-outdated-build-check.patch => server/0021-Disable-outdated-build-check.patch} (89%) rename patches/{unapplied-server/0024-Giants-AI-settings.patch => server/0022-Giants-AI-settings.patch} (88%) rename patches/{unapplied-server/0025-Zombie-horse-naturally-spawn.patch => server/0023-Zombie-horse-naturally-spawn.patch} (93%) rename patches/{unapplied-server/0026-Charged-creeper-naturally-spawn.patch => server/0024-Charged-creeper-naturally-spawn.patch} (94%) rename patches/{unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch => server/0025-Rabbit-naturally-spawn-toast-and-killer.patch} (89%) rename patches/{unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch => server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (92%) rename patches/{unapplied-server/0029-Tulips-change-fox-type.patch => server/0027-Tulips-change-fox-type.patch} (91%) rename patches/{unapplied-server/0030-Breedable-Polar-Bears.patch => server/0028-Breedable-Polar-Bears.patch} (97%) rename patches/{unapplied-server/0031-Chickens-can-retaliate.patch => server/0029-Chickens-can-retaliate.patch} (88%) rename patches/{unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch => server/0030-Add-option-to-set-armorstand-step-height.patch} (75%) rename patches/{unapplied-server/0033-Cat-spawning-options.patch => server/0031-Cat-spawning-options.patch} (92%) rename patches/{unapplied-server/0034-Cows-eat-mushrooms.patch => server/0032-Cows-eat-mushrooms.patch} (86%) rename patches/{unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch => server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch} (88%) rename patches/{unapplied-server/0036-Pigs-give-saddle-back.patch => server/0034-Pigs-give-saddle-back.patch} (96%) rename patches/{unapplied-server/0037-Snowman-drop-and-put-back-pumpkin.patch => server/0035-Snowman-drop-and-put-back-pumpkin.patch} (89%) rename patches/{unapplied-server/0038-Ender-dragon-always-drop-full-exp.patch => server/0036-Ender-dragon-always-drop-full-exp.patch} (93%) rename patches/{unapplied-server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch => server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch} (91%) rename patches/{unapplied-server/0040-Minecart-settings-and-WASD-controls.patch => server/0038-Minecart-settings-and-WASD-controls.patch} (92%) rename patches/{unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch => server/0039-Disable-loot-drops-on-death-by-cramming.patch} (91%) rename patches/{unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch => server/0040-Option-to-toggle-milk-curing-bad-omen.patch} (67%) rename patches/{unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch => server/0041-End-gateway-should-check-if-entity-can-use-portal.patch} (74%) rename patches/{unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch => server/0042-Skip-events-if-there-s-no-listeners.patch} (88%) rename patches/{unapplied-server/0045-Add-permission-for-F3-N-debug.patch => server/0043-Add-permission-for-F3-N-debug.patch} (83%) rename patches/{unapplied-server/0046-Configurable-TPS-Catchup.patch => server/0044-Configurable-TPS-Catchup.patch} (59%) rename patches/{unapplied-server/0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => server/0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (93%) rename patches/{unapplied-server/0048-Add-enderman-and-creeper-griefing-controls.patch => server/0046-Add-enderman-and-creeper-griefing-controls.patch} (89%) rename patches/{unapplied-server/0049-Villagers-follow-emerald-blocks.patch => server/0047-Villagers-follow-emerald-blocks.patch} (90%) rename patches/{unapplied-server/0050-Allow-leashing-villagers.patch => server/0048-Allow-leashing-villagers.patch} (90%) delete mode 100644 patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch diff --git a/patches/api/0011-LivingEntity-safeFallDistance.patch b/patches/api/0011-LivingEntity-safeFallDistance.patch index 07a515657..a858bf887 100644 --- a/patches/api/0011-LivingEntity-safeFallDistance.patch +++ b/patches/api/0011-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index b777e530122549455dcce6fac8d4a151c1c0af42..c79633aa059a13753069cf06444e1834137f86c4 100644 +index b777e530122549455dcce6fac8d4a151c1c0af42..57a3e330043077f042a284c99e2631e1582cb32c 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1447,4 +1447,24 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end - body yaw API @@ -18,14 +18,18 @@ index b777e530122549455dcce6fac8d4a151c1c0af42..c79633aa059a13753069cf06444e1834 + * Gets the distance (in blocks) this entity can safely fall without taking damage + * + * @return Safe fall distance ++ * @deprecated use {@link org.bukkit.attribute.Attribute#GENERIC_SAFE_FALL_DISTANCE} instead + */ ++ @Deprecated + float getSafeFallDistance(); + + /** + * Set the distance (in blocks) this entity can safely fall without taking damage + * + * @param safeFallDistance Safe fall distance ++ * @deprecated use {@link org.bukkit.attribute.Attribute#GENERIC_SAFE_FALL_DISTANCE} instead + */ ++ @Deprecated + void setSafeFallDistance(float safeFallDistance); + // Purpur end } diff --git a/patches/api/0016-LivingEntity-broadcastItemBreak.patch b/patches/api/0016-LivingEntity-broadcastItemBreak.patch index 3b4acd3da..55595febc 100644 --- a/patches/api/0016-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0016-LivingEntity-broadcastItemBreak.patch @@ -5,12 +5,12 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index c79633aa059a13753069cf06444e1834137f86c4..6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c 100644 +index 57a3e330043077f042a284c99e2631e1582cb32c..3c5df0d60777dc6bc4dd38017423c38fcb6ed065 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1462,5 +1462,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource - * @param safeFallDistance Safe fall distance +@@ -1466,5 +1466,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ + @Deprecated void setSafeFallDistance(float safeFallDistance); + + /** diff --git a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch index 91934d89e..9d7eb1a62 100644 --- a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 50344412a04f3008439e337ecf9dd09c7f853bc9..f482467ae784b134da97eb38afb7f125 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c..4cbad9f23f232297ca1254c000b456042ffa26df 100644 +index 3c5df0d60777dc6bc4dd38017423c38fcb6ed065..b6c928d1e0d659280d9a61456be8534604cc166b 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1469,5 +1469,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1473,5 +1473,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/unapplied-server/0009-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch similarity index 91% rename from patches/unapplied-server/0009-Configurable-entity-base-attributes.patch rename to patches/server/0007-Configurable-entity-base-attributes.patch index 821f29b68..47c653034 100644 --- a/patches/unapplied-server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 75d1990cc33b06652ba0cdf5ee631594cf259d31..9ced09b01af013cd2e4e64e106dee147ae369dec 100644 +index 9c99a3df80c5f0a0d81e1f6a6516d088438a0b1e..e49dda27dd609ebf377f679c4f60c13a5f610c8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; +@@ -163,7 +163,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end - public abstract class Entity implements Nameable, EntityAccess, CommandSource, ScoreHolder { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder { - + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur // CraftBukkit start private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd804b5f978 100644 +index aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4..8211c152e6f4232e82e452b08047e4579465d770 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -36,6 +36,11 @@ public class GlowSquid extends Squid { @@ -34,18 +34,18 @@ index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd8 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fcb1e4f1ff 100644 +index 72bd60f691a639a0e7b6b5a98e5a3816305cfdaf..a3ee2af337acef86a15b12c9e6d8cd8452980a87 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.useItem = ItemStack.EMPTY; +@@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.lastClimbablePos = Optional.empty(); + this.appliedScale = 1.0F; this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur + this.initAttributes(); // Purpur this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -302,6 +303,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -315,6 +316,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -55,10 +55,10 @@ index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fc return this.brain; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1..8910aaaa1fdabecec4740d6212db3114bd1197fc 100644 +index f8a649b0fee040bbf53084ca7094583ab4ffd900..cea588d68c7e23ad8831bc611f1030d63354d91c 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -268,6 +268,18 @@ public class Bat extends AmbientCreature { +@@ -265,6 +265,18 @@ public class Bat extends AmbientCreature { } } @@ -78,10 +78,10 @@ index f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1..8910aaaa1fdabecec4740d6212db3114 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 78e802a4bd994b6988ae415cf2958bb828830964..c1f71bf53dac227e6b8c6dbd88473fe79b6a2c64 100644 +index 4b84cf76d052112e00cd13c330182abfbe618820..ae4b53f4cdd78368deb7d510be4936ffefce4d9c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -478,6 +478,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -467,6 +467,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -94,26 +94,28 @@ index 78e802a4bd994b6988ae415cf2958bb828830964..c1f71bf53dac227e6b8c6dbd88473fe7 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 25636efbdb55605303e390f63276ef0bfd4929ba..83e715c9604efc9586171fd32c7cd2b339bc2349 100644 +index 3826c794ddde6b915e233e2d0395557e3ea867e0..7930e9735abf8357df737798e80b08295c2e06ec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -123,6 +123,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -129,6 +129,13 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -183,6 +183,11 @@ public class Fox extends Animal implements VariantHolder { } // Purpur end @@ -187,13 +189,13 @@ index c63634825ffffed2eccc560af9e9fcef1a9dc2e8..3faa945f9687abeba7a36f8198cb3076 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7..46e28d807a72b6d302d29d65c52ab0813cd82b1a 100644 +index 4cc9138201b08aff8bb47720c6fe1e3447f03967..2919d055e2136a956aa038bd0bf4c1a2ff5afa2f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -81,6 +81,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -76,6 +76,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public boolean isControllable() { return level().purpurConfig.ironGolemControllable; } @@ -206,7 +208,7 @@ index cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7..46e28d807a72b6d302d29d65c52ab081 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index b59d6a3f799f100702efb1fd10bbc48da4f4bd8f..0ff5902dde47c4bb9922d6605d874868fb4820b9 100644 +index 11944ee34fc7e3e5551b9e18a563164f96898a54..b47dddb2fc6058a90665ccbd362088d9a2e837b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -81,6 +81,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -137,6 +137,11 @@ public class Rabbit extends Animal implements VariantHolder { } wasOnGround = onGround; } @@ -363,10 +365,10 @@ index 87c442fb198cad8671ad1419e589a5a67c4fdca8..742805994f29a18af444912b10af631d public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index ffcb68cd299370d5a17ed92ba3814c8afe613cf9..1d69558cccc6add5f02f1ff070c985bd5ec406c0 100644 +index 7c1da46554aefde8e5e2b33a3644c9cbd771d7bc..b68886cc72d3055e7745fe4a955192bbad90dc13 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -136,6 +136,11 @@ public class Sheep extends Animal implements Shearable { +@@ -134,6 +134,11 @@ public class Sheep extends Animal implements Shearable { } // Purpur end @@ -379,10 +381,10 @@ index ffcb68cd299370d5a17ed92ba3814c8afe613cf9..1d69558cccc6add5f02f1ff070c985bd protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058eb13ff73 100644 +index d51b486afb83bf3e12046ed5e61e73eec5bd7c7c..a54893d51cc1ce204e59a6ffe8b84228775af4da 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -71,6 +71,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -69,6 +69,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end @@ -395,10 +397,10 @@ index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 7b6e1f5a44a5a690dca97693bb053d3186ff1b69..9f598ff84b836d10e215c7e8fe79735f7f41e32b 100644 +index 37402f7df48f04a6df2211e079519ed95d3735bc..e38416189d9dc72f0b5951a1f6430dbc4578c422 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { +@@ -68,6 +68,11 @@ public class Squid extends WaterAnimal { } // Purpur end @@ -411,10 +413,10 @@ index 7b6e1f5a44a5a690dca97693bb053d3186ff1b69..9f598ff84b836d10e215c7e8fe79735f protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 3ec6caf965c9a69eb56e507e2c452129064d3c68..b8b4ca31ad2fc5292082905c979a974a4ed42dab 100644 +index 18dcb67d246b63637d8c948b6c3f48c58d71c339..327b1805d9d4069212a8772ff189c9ab24ae1183 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -77,6 +77,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -79,6 +79,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder } // Purpur end @@ -427,10 +429,10 @@ index 3ec6caf965c9a69eb56e507e2c452129064d3c68..b8b4ca31ad2fc5292082905c979a974a return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f37210daf929a 100644 +index 4742d90ca38c1d8034b0cfcf7f336e225fade197..b8dcf3d632c79585ec7e9f50fa040fa9fac5d7c5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -103,6 +103,11 @@ public class Turtle extends Animal { +@@ -104,6 +104,11 @@ public class Turtle extends Animal { } // Purpur end @@ -443,10 +445,10 @@ index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f3721 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 0c3d29e55c3c1aacbf337cc24ac220c92866b84e..b5c1efc1a67cdf163420b55e49baef9d78d9518f 100644 +index 731909acd1e18dcfbd25becb0ddff30fb2a6a0f5..8aaac4e86ec6d9c40999f6198cda7d367ece54e3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -127,6 +127,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -146,6 +146,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 7183cd107218d36962803facb63cd6f384de8611..74ca2442008b0dea9f9762bbec8d6de1390f2582 100644 +index 4477f201ff02a5e0758af5431b7d9b7c5e11d642..07a5599a9370ba167e985006d74caa3c80288e28 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 -@@ -325,6 +325,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -316,6 +316,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl return this.dashCooldown; } @@ -503,10 +505,10 @@ index 7183cd107218d36962803facb63cd6f384de8611..74ca2442008b0dea9f9762bbec8d6de1 protected SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55465b1edb 100644 +index 12a137665f93d992094e86327a496057890d1018..59829fb7342696d29aa709d392f89bf263257fd3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -162,6 +162,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -229,6 +229,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, } // Purpur end @@ -551,17 +553,17 @@ index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur -@@ -1242,7 +1280,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -1260,7 +1298,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, entityData = new AgeableMob.AgeableMobGroupData(0.2F); } - this.randomizeAttributes(world.getRandom()); + // this.randomizeAttributes(world.getRandom()); // Purpur - replaced by initAttributes() - return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d5eea896f 100644 +index 1febe8e173886d501e40331c12261701bd36b0f6..b47a72ffb8b947cea5d4bc6ee37b824c4161be31 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -22,6 +22,21 @@ public class Donkey extends AbstractChestedHorse { @@ -587,10 +589,10 @@ index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d 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 5efed70522657c2a02f869affc6755332082cf97..2971b868210ffb3390d19c7f8079fcc60f7d00b0 100644 +index 816c698a81a77f217a606468aa157bdaed779479..9ad0d3972d1970b11687da174a83e3a0a4180c0e 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 -@@ -47,6 +47,21 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -51,6 +51,21 @@ public class Horse extends AbstractHorse implements VariantHolder { } // Purpur end @@ -613,7 +615,7 @@ index 5efed70522657c2a02f869affc6755332082cf97..2971b868210ffb3390d19c7f8079fcc6 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 1c6be506804b9622c4d0094814939f894ca857df..34d87ab749a62c5d897b7bc66b116a801324b6a7 100644 +index 3943ca63aaeecfb98c34ceef9b0c40e71de4e832..697895661826e4a1ecbdfd2c3a195b9d0ee7e00a 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 @@ -124,6 +124,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa457420395 100644 +index 2cb65bc3e2a2f990f4036f4f0418d9cd5226381e..698076b0e958aadf9736d7753df64a73dd3c17cd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -99,6 +99,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -97,6 +97,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { } // Purpur end @@ -1353,10 +1356,10 @@ index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa4 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254eee4af4d 100644 +index 7c78b243164a517818565845b1a6c7d40c8839d8..9af1c4b794ddaf8640076f172cf0317acad6bcb2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -124,6 +124,11 @@ public class Zombie extends Monster { +@@ -121,6 +121,11 @@ public class Zombie extends Monster { } // Purpur end @@ -1368,7 +1371,7 @@ index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -607,7 +612,7 @@ public class Zombie extends Monster { +@@ -596,7 +601,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { @@ -1378,10 +1381,10 @@ index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254 @Override 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 ba391ae0f8c361fb0ffbe0b65f12a008c21e4676..9fb70aabb68d5d14ab15420d8677e46c399912b2 100644 +index cc3d9f47ef6d1efa589c8bed5c51ed9e61d7c07d..8e7f0f2069c3382f3a7b08b80f829398e62377f7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -99,6 +99,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -97,6 +97,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end @@ -1396,13 +1399,13 @@ index ba391ae0f8c361fb0ffbe0b65f12a008c21e4676..9fb70aabb68d5d14ab15420d8677e46c + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + 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 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d790a50321 100644 +index 2ff0ce04ce210b77c555f59967182ed4dd3fe9aa..138f3f6a9b0754d54e5f8000962bb52b224f677d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -81,6 +81,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -79,6 +79,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end @@ -1414,7 +1417,7 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Override public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; -@@ -263,7 +268,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -261,7 +266,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1424,10 +1427,10 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627c3c95bc1 100644 +index 6e86e0597af66bad8f2e97661b588e950b2679ba..3bfc073fb142e3446044a42c33be6c30587cc3c4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -109,6 +109,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -107,6 +107,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end @@ -1440,10 +1443,10 @@ index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78f06cd46a 100644 +index 6632cab4ed43bbfd10b4d8f3b2c447a35eba735e..06e0f737615c90bd733a89a731156598ccfe447f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -113,6 +113,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -111,6 +111,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end @@ -1456,10 +1459,10 @@ index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52bc836901c 100644 +index 17e2457bc83e7ee4402c10ee7d2ef5aa36901565..362f3fddd8090799278f4b4e58c5af5de00315f2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -80,6 +80,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -79,6 +79,11 @@ public class PiglinBrute extends AbstractPiglin { } // Purpur end @@ -1472,10 +1475,10 @@ index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52b return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652a8bcb0a8 100644 +index 980f48b546f0da5696c110357ea42352a48fbd42..ff86c7d4878e43fc9d375b9b60213a2271b92cff 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -180,6 +180,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -178,6 +178,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end @@ -1488,7 +1491,7 @@ index 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 80b9c2043f2a84dc44b082a9c97a7b5dbbb93dc2..80a157aa57fe5e6725b6e06a93b841d66cf62455 100644 +index 6bdf3d1e3652a661282d61f1dc2bfc2712339953..ac3cca0db4478841f91d966bd49ca4e5b5e91229 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0008-Barrels-and-enderchests-6-rows.patch similarity index 90% rename from patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch rename to patches/server/0008-Barrels-and-enderchests-6-rows.patch index d0d27b999..c21c377e1 100644 --- a/patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0008-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6886f5808ffaaed06dcae122f7cba6a12ad563af..f8a6d48200dae42cb73ed4f7eb52f957e7530e8c 100644 +index 2d6b6795703431939005aa09d1ed590c3f755163..f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1189,6 +1189,27 @@ public abstract class PlayerList { +@@ -1188,6 +1188,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,11 +37,11 @@ index 6886f5808ffaaed06dcae122f7cba6a12ad563af..f8a6d48200dae42cb73ed4f7eb52f957 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 8a6acc19e9f3afb778420495a5ed41ce78227f1a..cad2ff51d79d584312a03f35266774b297883c0c 100644 +index 90e44c7281935bc7ceb3b220bbcd73187fed44fb..0641e448e0e98694976b820c2e9c4868f2b76909 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { - public float hurtDir; // Paper - protected -> public +@@ -195,6 +195,7 @@ public abstract class Player extends LivingEntity { + public boolean ignoreFallDamageFromCurrentImpulse; public boolean affectsSpawning = true; // Paper - Affects Spawning API public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage + public int sixRowEnderchestSlotCount = -1; // Purpur @@ -84,10 +84,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216 return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); } diff --git a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee80fbe221 100644 +index a15d5ff872dbd77f3c3145e0328f3d02e431ff8c..1dcf36d502990d32fc4cd3ea69c3ea334baed69a 100644 --- a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java -@@ -30,11 +30,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { +@@ -31,11 +31,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { } public PlayerEnderChestContainer(Player owner) { @@ -108,19 +108,19 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86ddbb3f7f6 100644 +index 5f9858ef8d0ec1a74d469ab4426eb1db068873fd..d7ef772444b301d0a3f167679027195e4150b064 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -92,7 +92,7 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -91,7 +91,7 @@ public class EnderChestBlock extends AbstractChestBlock i EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; playerEnderChestContainer.setActiveChest(enderChestBlockEntity); player.openMenu( -- new SimpleMenuProvider((syncId, inventory, playerx) -> ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) -+ new SimpleMenuProvider((syncId, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(syncId, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur +- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) ++ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur ); player.awardStat(Stats.OPEN_ENDERCHEST); PiglinAi.angerNearbyPiglins(player, true); -@@ -103,6 +103,35 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -102,6 +102,35 @@ public class EnderChestBlock extends AbstractChestBlock i } } @@ -157,10 +157,10 @@ index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86d public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2d989a3b5 100644 +index 6186e55014bbb9d5bedaa0e9d196879c55339d42..f4f11292d6d00f4a7c65e3e2a157bba595f70889 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -@@ -67,7 +67,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { public BarrelBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BARREL, pos, state); @@ -178,7 +178,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 this.openersCounter = new ContainerOpenersCounter() { @Override protected void onOpen(Level world, BlockPos pos, BlockState state) { -@@ -118,7 +127,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -119,7 +128,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override public int getContainerSize() { @@ -196,7 +196,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 } @Override -@@ -138,7 +156,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -139,7 +157,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) { diff --git a/patches/unapplied-server/0011-Llama-API.patch b/patches/server/0009-Llama-API.patch similarity index 83% rename from patches/unapplied-server/0011-Llama-API.patch rename to patches/server/0009-Llama-API.patch index 9a6f7cb1b..784f0c6a1 100644 --- a/patches/unapplied-server/0011-Llama-API.patch +++ b/patches/server/0009-Llama-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Llama API diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827a0113225 100644 +index df695b444fa2a993d381e2f197182c3e91a68502..eb0faf58fa1a408f294fc62120b140def97f998d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -25,7 +25,7 @@ index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827 double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); if (d > 676.0) { 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 34d87ab749a62c5d897b7bc66b116a801324b6a7..b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660 100644 +index 697895661826e4a1ecbdfd2c3a195b9d0ee7e00a..05614fb50a5509331ac15bb819e827365a4cefcf 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 @@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); -@@ -170,7 +171,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder -1) { -@@ -391,6 +405,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -399,6 +413,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -115,7 +115,7 @@ index ccf2ab27e73903ee4ae5e60838d694ed4ccad79c..cb5fc10f7ca81f608cdbd5a3f2554c31 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -638,6 +658,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -658,6 +678,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -124,16 +124,16 @@ index ccf2ab27e73903ee4ae5e60838d694ed4ccad79c..cb5fc10f7ca81f608cdbd5a3f2554c31 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1505,7 +1527,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - if (!event.isAllowed()) { +@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl movedWrongly = true; if (event.getLogWarning()) + // Paper end - ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); + ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur - } + } // Paper } -@@ -1572,6 +1594,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1562,6 +1584,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -177,7 +177,7 @@ index d8cc5614502db7025349e085381b6b32ad32296a..f1b9e83206cc67e6ef29ebe088351b0a private EntitySelector() {} // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 28cff997a1b263784e245f692adbff2a888a2d53..13b8141bdb2a1663431be645eb091f9e7638f3d0 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..7463eefb7d09ea55fe8780210e7e967c2fe7896d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -192,10 +192,10 @@ index 28cff997a1b263784e245f692adbff2a888a2d53..13b8141bdb2a1663431be645eb091f9e if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index cad2ff51d79d584312a03f35266774b297883c0c..97805659af862213e9217c408519563de2be5b35 100644 +index 0641e448e0e98694976b820c2e9c4868f2b76909..d5383e9cbbee2f9d4223319ae38abed41a13cfb3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -189,6 +189,13 @@ public abstract class Player extends LivingEntity { +@@ -201,6 +201,13 @@ public abstract class Player extends LivingEntity { public boolean fauxSleeping; public int oldLevel = -1; @@ -223,10 +223,10 @@ index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452aba if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5da7b468af3dd19491f38140f303e55b7cab21db..8fec2e517cc57940348f4bee33212a9aae34b102 100644 +index ee7e484a4dd694f36ab151402bec4ca15dea953c..33f229c13b3b77f967d81e9d4453e6afa9157fd9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -489,10 +489,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -565,10 +565,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -243,7 +243,7 @@ index 5da7b468af3dd19491f38140f303e55b7cab21db..8fec2e517cc57940348f4bee33212a9a if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -3462,5 +3467,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3519,5 +3524,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,10 +317,10 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index d7c7e12c0b8f77e59d94de130972f762ed227726..88bac31994679c6a1b65e237fd44b239817fa2cf 100644 +index 3283ed99c35ffed6805567705e0518d9f84feedc..a9a39f0da7b09410d8171172a4219c7d509fdb99 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -205,6 +205,7 @@ public class ActivationRange +@@ -201,6 +201,7 @@ public class ActivationRange continue; } diff --git a/patches/unapplied-server/0013-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch similarity index 81% rename from patches/unapplied-server/0013-Bring-back-server-name.patch rename to patches/server/0011-Bring-back-server-name.patch index 575821089..d72709ac6 100644 --- a/patches/unapplied-server/0013-Bring-back-server-name.patch +++ b/patches/server/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index bab2471616404821671264ccefd729cab8d0bf58..ae75edfaa9e4c72f11fbb7ffc66294be47c206cc 100644 +index 9d10cdacb3aed2c00dc60aeb6f2cbeb48905e21f..842f382de43df5d5c321422372ec30ccdd7859d7 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -57,6 +57,7 @@ public class DedicatedServerProperties extends Settings +Date: Sun, 5 May 2019 12:58:45 -0500 +Subject: [PATCH] LivingEntity safeFallDistance + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +index aa351df679f300018367244c7ccb3e5a59e9276f..39c2a9f732b8e2452fd2dca07193a173d0c2ba1c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -1173,4 +1173,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + this.getHandle().setYBodyRot(bodyYaw); + } + // Paper end - body yaw API ++ ++ // Purpur start ++ @Override ++ public float getSafeFallDistance() { ++ return (float) getHandle().getAttributeValue(Attributes.SAFE_FALL_DISTANCE); ++ } ++ ++ @Override ++ public void setSafeFallDistance(float safeFallDistance) { ++ getHandle().getAttribute(Attributes.SAFE_FALL_DISTANCE).setBaseValue(safeFallDistance); ++ } ++ // Purpur end + } diff --git a/patches/unapplied-server/0016-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch similarity index 87% rename from patches/unapplied-server/0016-Lagging-threshold.patch rename to patches/server/0014-Lagging-threshold.patch index abb35ce3c..bad5618fe 100644 --- a/patches/unapplied-server/0016-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 66bacce6f3cfa94341fa663a55c5e99a51f0e437..0c7681a431e1986484319bf2de89d3cc3f7a6275 100644 +index 8a6f7681d97c48886f5a78b61763e718e56ec015..dfa332c4ff52033eb95248518bc44bbd22697697 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -308,6 +308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT +@@ -330,6 +330,16 @@ public class EntityType implements FeatureElement, EntityTypeT return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error } @@ -25,7 +25,7 @@ index dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994..22f2b1b445f383b2e784688908a92b90 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -531,6 +541,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -537,6 +547,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -43,13 +43,13 @@ index dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994..22f2b1b445f383b2e784688908a92b90 if (this.descriptionId == null) { this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this)); diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -index 3bfbf7daa190b03f978b9fc72233c18c383b6659..32996934bb47f4b7b2aa65dfd8739d8f67c740ef 100644 +index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582c1fd6bcb 100644 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -@@ -68,6 +68,16 @@ public class SpawnEggItem extends Item { +@@ -74,6 +74,15 @@ public class SpawnEggItem extends Item { Spawner spawner = (Spawner) tileentity; - entitytypes = this.getType(itemstack.getTag()); + entitytypes = this.getType(itemstack); + + // Purpur start + org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); @@ -59,7 +59,6 @@ index 3bfbf7daa190b03f978b9fc72233c18c383b6659..32996934bb47f4b7b2aa65dfd8739d8f + } + entitytypes = EntityType.getFromBukkitType(event.getEntityType()); + // Purpur end -+ spawner.setEntityId(entitytypes, world.getRandom()); world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3); - world.gameEvent((Entity) context.getPlayer(), GameEvent.BLOCK_CHANGE, blockposition); + world.gameEvent((Entity) context.getPlayer(), (Holder) GameEvent.BLOCK_CHANGE, blockposition); diff --git a/patches/unapplied-server/0018-Anvil-API.patch b/patches/server/0016-Anvil-API.patch similarity index 74% rename from patches/unapplied-server/0018-Anvil-API.patch rename to patches/server/0016-Anvil-API.patch index 59cd81495..8de9cfd9e 100644 --- a/patches/unapplied-server/0018-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1af23da6b3ccb4759e46e37cfa2ca85cf78f3ec2 100644 +index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f051ff92d3 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { @@ -17,10 +17,10 @@ index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1af23da6b3ccb4759e46e37cfa2ca85c // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe46619d24 100644 +index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..3d0a4380de7885c85d85f4ec1d4cf8a5044e93de 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -23,6 +23,13 @@ import org.slf4j.Logger; +@@ -25,6 +25,13 @@ import org.slf4j.Logger; import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit end @@ -34,7 +34,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; -@@ -51,6 +58,8 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -53,6 +60,8 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; private CraftInventoryView bukkitEntity; // CraftBukkit end @@ -43,12 +43,12 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe public AnvilMenu(int syncId, Inventory inventory) { this(syncId, inventory, ContainerLevelAccess.NULL); -@@ -78,12 +87,15 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -80,12 +89,15 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean present) { -- return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item -+ return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur +- return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item ++ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur } @Override @@ -60,7 +60,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe player.giveExperienceLevels(-this.cost.get()); } -@@ -134,6 +146,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -136,6 +148,12 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -73,25 +73,25 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe ItemStack itemstack = this.inputSlots.getItem(0); this.cost.set(1); -@@ -210,7 +228,7 @@ public class AnvilMenu extends ItemCombinerMenu { - int i2 = (Integer) map1.get(enchantment); +@@ -143,7 +161,7 @@ public class AnvilMenu extends ItemCombinerMenu { + long j = 0L; + byte b0 = 0; - i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); -- boolean flag3 = enchantment.canEnchant(itemstack); -+ boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur - - if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { - flag3 = true; +- if (!itemstack.isEmpty() && EnchantmentHelper.canStoreEnchantments(itemstack)) { ++ if (!itemstack.isEmpty() && canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur + ItemStack itemstack1 = itemstack.copy(); + ItemStack itemstack2 = this.inputSlots.getItem(1); + ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1)); @@ -222,7 +240,7 @@ public class AnvilMenu extends ItemCombinerMenu { - Enchantment enchantment1 = (Enchantment) iterator1.next(); + Holder holder1 = (Holder) iterator1.next(); - if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { -- flag3 = false; -+ flag3 = canDoUnsafeEnchants; // Purpur - ++i; - } + if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) { +- flag3 = false; ++ flag3 = canDoUnsafeEnchants; // Purpur + ++i; } -@@ -293,6 +311,13 @@ public class AnvilMenu extends ItemCombinerMenu { + } +@@ -280,6 +298,13 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } @@ -105,7 +105,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -315,6 +340,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -301,6 +326,12 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); @@ -115,11 +115,11 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe + ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); + } + // Purpur end - } - } - + } else { + org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit + this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -index c2cf5a8e788637c6264cf43d712a5be223ff1cc5..a578882b64c581ef4f47fa483a9f2988cfa4c8cf 100644 +index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..7215af6cc91f48b040c23c54536d4aac8d293497 100644 --- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java @@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { diff --git a/patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch b/patches/server/0017-Alternative-Keepalive-Handling.patch similarity index 82% rename from patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch rename to patches/server/0017-Alternative-Keepalive-Handling.patch index b5adba82f..224feaaf5 100644 --- a/patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch +++ b/patches/server/0017-Alternative-Keepalive-Handling.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493edbdbd5d 100644 +index 4228fd441f8350d43bd545e31c920304f07968bc..3a15085e0421f46800f779066d235ef21b463289 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - private long keepAliveTime = Util.getMillis(); // Paper - private boolean keepAlivePending; +@@ -73,6 +73,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack private long keepAliveChallenge; + private long closedListenerTime; + private boolean closed = false; + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur private int latency; private volatile boolean suspendFlushingOnServerThread = false; public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks -@@ -92,6 +93,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -124,6 +125,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -33,7 +33,7 @@ index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493 //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); -@@ -217,6 +228,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -260,6 +271,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -52,9 +52,9 @@ index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493 + } else + // Purpur end + - if (this.keepAlivePending) { - if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected - ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info + if (!this.isSingleplayerOwner() && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected + if (this.keepAlivePending && !this.processedDisconnect) { // Paper + this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 9c5bba0ae119f8d42274455e322530ceb5f67d9b..a14cf3a5dc2ba265de5e400404afcbd9faa3f25a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/unapplied-server/0020-Silk-touch-spawners.patch b/patches/server/0018-Silk-touch-spawners.patch similarity index 96% rename from patches/unapplied-server/0020-Silk-touch-spawners.patch rename to patches/server/0018-Silk-touch-spawners.patch index 93df704bd..91b675b66 100644 --- a/patches/unapplied-server/0020-Silk-touch-spawners.patch +++ b/patches/server/0018-Silk-touch-spawners.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Silk touch spawners diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0 100644 +index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9da39596a 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -316,7 +316,7 @@ public class Items { +@@ -338,7 +338,7 @@ public class Items { public static final Item PURPUR_BLOCK = registerBlock(Blocks.PURPUR_BLOCK); public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR); public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS); - public static final Item SPAWNER = registerBlock(Blocks.SPAWNER); + public static final Item SPAWNER = registerBlock(new org.purpurmc.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur - public static final Item CHEST = registerBlock(Blocks.CHEST); + public static final Item CHEST = registerBlock(Blocks.CHEST, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..1ac38424a44aa2225b9bd3fa0fbbe61b7b24875c 100644 +index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..06c914983a285c1a4e973f1c55088ad6e561cd20 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -42,6 +42,60 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -80,7 +80,7 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..1ac38424a44aa2225b9bd3fa0fbbe61b + // Purpur end + @Override - public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { + protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); @@ -50,6 +104,7 @@ public class SpawnerBlock extends BaseEntityBlock { diff --git a/patches/unapplied-server/0021-Add-turtle-egg-block-options.patch b/patches/server/0019-Add-turtle-egg-block-options.patch similarity index 94% rename from patches/unapplied-server/0021-Add-turtle-egg-block-options.patch rename to patches/server/0019-Add-turtle-egg-block-options.patch index 8aca84766..efb936f2b 100644 --- a/patches/unapplied-server/0021-Add-turtle-egg-block-options.patch +++ b/patches/server/0019-Add-turtle-egg-block-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b4646e26965e0f1f26c5019e7c6a13fdf22bdb47..a98f04c892d6e11e311b16af36e824857dd3bc76 100644 +index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c6d6f6d08 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -202,6 +202,25 @@ public class TurtleEggBlock extends Block { +@@ -203,6 +203,25 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(Level world, Entity entity) { diff --git a/patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch similarity index 88% rename from patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0020-Logger-settings-suppressing-pointless-logs.patch index a4716e9ce..06fe35a02 100644 --- a/patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Logger settings (suppressing pointless logs) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f655e0ae4a287886d0291cd0089bad2000249d0f..fcb5965ff0a9623a8e63a4b7413ad55416d269d9 100644 +index c7e1f2bac3eca9bb72bf1f8c26cccb2905e1ddfc..94893039363b5fe2d7d0622d0592bce2c867b1c3 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -199,6 +199,7 @@ public class PlayerAdvancements { @@ -17,17 +17,17 @@ index f655e0ae4a287886d0291cd0089bad2000249d0f..fcb5965ff0a9623a8e63a4b7413ad554 } else { this.startProgress(advancementholder, advancementprogress); diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 5ece375eaf6bcc61864997a389bb5e24625e4505..aee4ab6c7ea09006bec4a1c6df0005718c6d86bd 100644 +index 1351423a12c19a01f602a202832372a399e6a867..1e2025674eafcf56460c741083c91e2e42d61b19 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -318,6 +318,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -326,6 +326,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start - Buffer OOB setBlock calls + if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressSetBlockFarChunk) // Purpur if (!hasSetFarWarned) { - Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); - hasSetFarWarned = true; + Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStatus) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); + hasSetFarWarned = true; diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b8967829d0530e 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -41,7 +41,7 @@ index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b89678 } else { handler.accept((RecipeHolder) optional.get()); diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index fde9aadd6c688b9797a6755f9d214918047598a0..ffaa80b645da3ddf2da828071090e01aa667504d 100644 +index 71d057dc8c7362f8e7aaca5e31c9f02b2bf3f281..9d9405af0db28c0f3ffff2881b54f1dc84675a9d 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java @@ -256,6 +256,7 @@ public final class CraftLegacy { diff --git a/patches/unapplied-server/0023-Disable-outdated-build-check.patch b/patches/server/0021-Disable-outdated-build-check.patch similarity index 89% rename from patches/unapplied-server/0023-Disable-outdated-build-check.patch rename to patches/server/0021-Disable-outdated-build-check.patch index e2fc69e4c..a082f35b6 100644 --- a/patches/unapplied-server/0023-Disable-outdated-build-check.patch +++ b/patches/server/0021-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 4f81321727b754c0e101bb05bc6474203412e89e..cce747b8a2d87d81429dfaf1e0073b1ea4b1a5d2 100644 +index 66a3b28d7b943d443ff66fdcfbce6e5260b9463e..222865a3cee62f244a566092a7d814efe478ee01 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -301,7 +301,7 @@ public class Main { +@@ -302,7 +302,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/unapplied-server/0024-Giants-AI-settings.patch b/patches/server/0022-Giants-AI-settings.patch similarity index 88% rename from patches/unapplied-server/0024-Giants-AI-settings.patch rename to patches/server/0022-Giants-AI-settings.patch index fdf5dfe27..1f14b308e 100644 --- a/patches/unapplied-server/0024-Giants-AI-settings.patch +++ b/patches/server/0022-Giants-AI-settings.patch @@ -5,22 +5,19 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673abe091bc 100644 +index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..3c1217d36522b1fd3d1a099d3a12d99016f34c4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -1,14 +1,37 @@ +@@ -1,11 +1,34 @@ package net.minecraft.world.entity.monster; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.Difficulty; +import net.minecraft.world.DifficultyInstance; - import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.MobSpawnType; - import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.SpawnGroupData; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -46,7 +43,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 public class Giant extends Monster { public Giant(EntityType type, Level world) { -@@ -34,8 +57,23 @@ public class Giant extends Monster { +@@ -30,8 +53,23 @@ public class Giant extends Monster { @Override protected void registerGoals() { @@ -70,15 +67,15 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 + } + } } - // Purpur end -@@ -46,6 +84,32 @@ public class Giant extends Monster { - this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage); + @Override +@@ -47,8 +85,34 @@ public class Giant extends Monster { + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); } + @Override -+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -+ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); ++ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { ++ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData); + if (groupData == null) { + populateDefaultEquipmentSlots(this.random, difficulty); + populateDefaultEquipmentEnchantments(this.random, difficulty); @@ -102,11 +99,6 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 + return level().purpurConfig.giantJumpHeight; + } + - @Override - protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { - return 10.440001F; -@@ -62,6 +126,6 @@ public class Giant extends Monster { - @Override public float getWalkTargetValue(BlockPos pos, LevelReader world) { - return world.getPathfindingCostFromLightLevels(pos); @@ -114,7 +106,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8142559d9d4eccd9d105acb1ff3aa131d8ea67b0..6d94dc88a470b7e51aafad6c912ff516d114f179 100644 +index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e19ca58c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -554,6 +554,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch similarity index 93% rename from patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch rename to patches/server/0023-Zombie-horse-naturally-spawn.patch index 43c1f328c..8ff2f18f1 100644 --- a/patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cdc17904cdf3d6669503e09debfbb156a80f0020..0ae833018867b9f347fa8261898ec7353368ba4e 100644 +index fc791a66d299905798c2c1ca542467e4c7933caf..b02d9db8442b209a9df27e417be71b11d426878b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1016,10 +1016,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1006,10 +1006,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses if (flag1) { @@ -30,7 +30,7 @@ index cdc17904cdf3d6669503e09debfbb156a80f0020..0ae833018867b9f347fa8261898ec735 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d94dc88a470b7e51aafad6c912ff516d114f179..06ea43ddbbaf3165b74303a713f55512b9701765 100644 +index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523f89af57f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1487,6 +1487,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch b/patches/server/0024-Charged-creeper-naturally-spawn.patch similarity index 94% rename from patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch rename to patches/server/0024-Charged-creeper-naturally-spawn.patch index ed722a27b..719013b12 100644 --- a/patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0024-Charged-creeper-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index e6542240c317be28a7b536a736f7ccdc9f050dca..bc3d0654759b330c473de080b8a51c0a04cf3a19 100644 +index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..38241cd51086eb4dedc7fe47e9b199d443e5e033 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -256,6 +256,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -257,6 +257,14 @@ public class Creeper extends Monster implements PowerableMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth); } diff --git a/patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 89% rename from patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch index 6809dd89e..da9dd0eab 100644 --- a/patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606b2f9b9b2 100644 +index 9eb1158213064ddb37ae76e445b5861b963a1f55..4abcde662ed78b16632ee575f695ee4329f11b2f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -469,10 +469,23 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -466,10 +466,23 @@ public class Rabbit extends Animal implements VariantHolder { } this.setVariant(entityrabbit_variant); @@ -19,7 +19,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606 + } + // Purpur end + - return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData); } private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) { @@ -33,7 +33,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c7956dfe6ef01868106d7c0989d5c6a612e07b7d..6087141b308c1998a6be13dbf6e1ef75d6ddc6a8 100644 +index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1910cc8af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -988,6 +988,8 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 92% rename from patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch index f840a5a9f..7699f3fc7 100644 --- a/patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch +++ b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix 'outdated server' showing in ping before server fully diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index e5006e7672ba79ed4bcf2c4173c5a9ed4c68395b..6338c52e0082d36d3b80038fdb44abf2772adb30 100644 +index 6f1c9fa89e718cbc01a8d72de34154f49c5f46db..2455f8e9679914660ec4fcd081138dabfe9c225b 100644 --- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java @@ -153,6 +153,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene diff --git a/patches/unapplied-server/0029-Tulips-change-fox-type.patch b/patches/server/0027-Tulips-change-fox-type.patch similarity index 91% rename from patches/unapplied-server/0029-Tulips-change-fox-type.patch rename to patches/server/0027-Tulips-change-fox-type.patch index d3f71bc69..50f08714b 100644 --- a/patches/unapplied-server/0029-Tulips-change-fox-type.patch +++ b/patches/server/0027-Tulips-change-fox-type.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb512c1c51 100644 +index 8666d82775570b812d5bdd80336c8e14db6ddf47..d2be8c1c23f291e98b9a31a63ba5fa7d44fc7402 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -36,6 +36,7 @@ import net.minecraft.util.RandomSource; +@@ -37,6 +37,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.InteractionHand; @@ -16,7 +16,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; -@@ -394,6 +395,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -389,6 +390,11 @@ public class Fox extends Animal implements VariantHolder { } private void setTargetGoals() { @@ -28,7 +28,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb if (this.getVariant() == Fox.Type.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -427,6 +433,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -422,6 +428,7 @@ public class Fox extends Animal implements VariantHolder { public void setVariant(Fox.Type variant) { this.entityData.set(Fox.DATA_TYPE_ID, variant.getId()); @@ -36,7 +36,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb } List getTrustedUUIDs() { -@@ -773,6 +780,29 @@ public class Fox extends Animal implements VariantHolder { +@@ -762,6 +769,29 @@ public class Fox extends Animal implements VariantHolder { } // Paper end diff --git a/patches/unapplied-server/0030-Breedable-Polar-Bears.patch b/patches/server/0028-Breedable-Polar-Bears.patch similarity index 97% rename from patches/unapplied-server/0030-Breedable-Polar-Bears.patch rename to patches/server/0028-Breedable-Polar-Bears.patch index 34dc78b85..952012279 100644 --- a/patches/unapplied-server/0030-Breedable-Polar-Bears.patch +++ b/patches/server/0028-Breedable-Polar-Bears.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 5e6941abe1372ea4cba893de36ab20d2a3a42a21..5db17e4fc120e32e66a3a5c6313471ce5b090346 100644 +index 00afde0ec4811992aac306a42d473026b7e7e468..067bb175c457d6de089f18826dfce6c3661dad67 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -98,6 +98,27 @@ public class PolarBear extends Animal implements NeutralMob { diff --git a/patches/unapplied-server/0031-Chickens-can-retaliate.patch b/patches/server/0029-Chickens-can-retaliate.patch similarity index 88% rename from patches/unapplied-server/0031-Chickens-can-retaliate.patch rename to patches/server/0029-Chickens-can-retaliate.patch index a18d7b4bb..b7479c92c 100644 --- a/patches/unapplied-server/0031-Chickens-can-retaliate.patch +++ b/patches/server/0029-Chickens-can-retaliate.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae25692b09 100644 +index a7c76e1d89f54f0dc3b27a8a8db168ea4570bf60..14210dac8a4fa8caaf69ec830f83d15525bb1bea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -75,19 +75,30 @@ public class Chicken extends Animal { +@@ -74,13 +74,16 @@ public class Chicken extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth); @@ -24,8 +24,9 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae - this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); + // this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); // Purpur - moved down this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Chicken.FOOD_ITEMS, false)); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, (itemstack) -> { + return itemstack.is(ItemTags.CHICKEN_FOOD); +@@ -89,6 +92,14 @@ public class Chicken extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); @@ -40,7 +41,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae } @Override -@@ -96,7 +107,7 @@ public class Chicken extends Animal { +@@ -97,7 +108,7 @@ public class Chicken extends Animal { } public static AttributeSupplier.Builder createAttributes() { @@ -50,7 +51,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6f0e69093594fffcdb616d319be1b416909a64..c76957ae7e9f2aa6b34d0a1098cfbc036b723237 100644 +index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f930922ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -299,6 +299,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch similarity index 75% rename from patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0030-Add-option-to-set-armorstand-step-height.patch index 96fce4658..cb9752a8c 100644 --- a/patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch @@ -5,23 +5,31 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index aa1e2c05c65391b5fbfce203c5095afd50682874..f8db28b15e551fc0e0c7f37c355237685c637529 100644 +index e49dda27dd609ebf377f679c4f60c13a5f610c8e..429d1a3fd7a75fe3dc8eb8d467ad4f2bd99e0212 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -337,7 +337,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -340,6 +340,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; -- private float maxUpStep; -+ public float maxUpStep; // Purpur - private -> public ++ public float maxUpStep; // Purpur public boolean noPhysics; public final RandomSource random; public int tickCount; +@@ -4852,7 +4853,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + } + + public float maxUpStep() { +- return 0.0F; ++ return maxUpStep; + } + + public void onExplosionHit(@Nullable Entity entity) {} diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index eadcebd7845ee716e33c0ac0544502da1a6c5941..8cb248a185d880bf82ea4746341fe3db5dc89459 100644 +index c2bd2e303f956d390319f6bbbe9a6492ebec5154..5abbc0caf90cafc1a06dfff158c158b1538f827c 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -678,6 +678,7 @@ public class ArmorStand extends LivingEntity { +@@ -676,6 +676,7 @@ public class ArmorStand extends LivingEntity { @Override public void tick() { diff --git a/patches/unapplied-server/0033-Cat-spawning-options.patch b/patches/server/0031-Cat-spawning-options.patch similarity index 92% rename from patches/unapplied-server/0033-Cat-spawning-options.patch rename to patches/server/0031-Cat-spawning-options.patch index dd5a15479..862db1dc6 100644 --- a/patches/unapplied-server/0033-Cat-spawning-options.patch +++ b/patches/server/0031-Cat-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d152251cce431 100644 +index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45f6d88990 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -28,7 +28,7 @@ public class CatSpawner implements CustomSpawner { +@@ -27,7 +27,7 @@ public class CatSpawner implements CustomSpawner { if (this.nextTick > 0) { return 0; } else { @@ -17,7 +17,7 @@ index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d1522 Player player = world.getRandomPlayer(); if (player == null) { return 0; -@@ -62,8 +62,12 @@ public class CatSpawner implements CustomSpawner { +@@ -61,8 +61,12 @@ public class CatSpawner implements CustomSpawner { private int spawnInVillage(ServerLevel world, BlockPos pos) { int i = 48; @@ -32,7 +32,7 @@ index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d1522 if (list.size() < 5) { return this.spawnCat(pos, world); } -@@ -74,7 +78,11 @@ public class CatSpawner implements CustomSpawner { +@@ -73,7 +77,11 @@ public class CatSpawner implements CustomSpawner { private int spawnInHut(ServerLevel world, BlockPos pos) { int i = 16; diff --git a/patches/unapplied-server/0034-Cows-eat-mushrooms.patch b/patches/server/0032-Cows-eat-mushrooms.patch similarity index 86% rename from patches/unapplied-server/0034-Cows-eat-mushrooms.patch rename to patches/server/0032-Cows-eat-mushrooms.patch index 7a70e2b82..4b9bf527b 100644 --- a/patches/unapplied-server/0034-Cows-eat-mushrooms.patch +++ b/patches/server/0032-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df50feef90 100644 +index bee1a275f242866206dc461461b7962e04289ddc..bda0d933ccbee613aa7fb31534351a0d2dbab0a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -16,23 +16,24 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; -@@ -30,6 +31,7 @@ import net.minecraft.world.item.ItemUtils; +@@ -29,6 +30,7 @@ import net.minecraft.world.item.ItemStack; + import net.minecraft.world.item.ItemUtils; import net.minecraft.world.item.Items; - import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; - import org.joml.Vector3f; - -@@ -73,6 +75,7 @@ public class Cow extends Animal { - this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + // CraftBukkit start + import org.bukkit.craftbukkit.event.CraftEventFactory; +@@ -73,7 +75,7 @@ public class Cow extends Animal { this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -+ if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> { +- return itemstack.is(ItemTags.COW_FOOD); ++ return level().purpurConfig.cowFeedMushrooms > 0 && (itemstack.is(Blocks.RED_MUSHROOM.asItem()) || itemstack.is(Blocks.BROWN_MUSHROOM.asItem())) || itemstack.is(ItemTags.COW_FOOD); // Purpur + }, false)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); -@@ -128,6 +131,10 @@ public class Cow extends Animal { +@@ -134,6 +136,10 @@ public class Cow extends Animal { player.setItemInHand(hand, itemstack1); return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -43,9 +44,9 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df } else { return super.mobInteract(player, hand); } -@@ -148,4 +155,69 @@ public class Cow extends Animal { - protected Vector3f getPassengerAttachmentPoint(Entity passenger, EntityDimensions dimensions, float scaleFactor) { - return new Vector3f(0.0F, dimensions.height - 0.03125F * scaleFactor, 0.0F); +@@ -149,4 +155,69 @@ public class Cow extends Animal { + public EntityDimensions getDefaultDimensions(Pose pose) { + return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } + + // Purpur start - feed mushroom to change to mooshroom diff --git a/patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 88% rename from patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch index 23314c286..b487f483e 100644 --- a/patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 0ff5902dde47c4bb9922d6605d874868fb4820b9..4c3a4a5e79412a570b0dc1fdeaf540b83eb84b82 100644 +index b47dddb2fc6058a90665ccbd362088d9a2e837b5..41b52f128fbc174939a7f2d1cd937ab19432de25 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -222,7 +222,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bbc9052a01 100644 +index 4d7454e5a64fc18e63793a221daa94617f17c666..97172e9c53c381d451111227feb4d1fa19d38ad8 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -102,12 +102,14 @@ public abstract class AbstractMinecart extends VehicleEntity { private double flyingY = 0.95; private double flyingZ = 0.95; public double maxSpeed = 0.4D; @@ -35,7 +35,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb } protected AbstractMinecart(EntityType type, Level world, double x, double y, double z) { -@@ -294,6 +296,12 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -296,6 +298,12 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -48,7 +48,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -451,16 +459,62 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -448,16 +456,62 @@ public abstract class AbstractMinecart extends VehicleEntity { public void activateMinecart(int x, int y, int z, boolean powered) {} @@ -112,10 +112,10 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb this.move(MoverType.SELF, this.getDeltaMovement()); if (!this.onGround()) { diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java -index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976d533d54e 100644 +index 66074445d3908b9bb1c8d70e1e27d057720ec8e5..0fd4f2ab929df479360755a3f1e58a933ae59520 100644 --- a/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java -@@ -119,8 +119,9 @@ public class MinecartItem extends Item { +@@ -120,8 +120,9 @@ public class MinecartItem extends Item { BlockState iblockdata = world.getBlockState(blockposition); if (!iblockdata.is(BlockTags.RAILS)) { @@ -127,7 +127,7 @@ index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976 ItemStack itemstack = context.getItemInHand(); if (world instanceof ServerLevel) { -@@ -145,6 +146,6 @@ public class MinecartItem extends Item { +@@ -146,6 +147,6 @@ public class MinecartItem extends Item { itemstack.shrink(1); return InteractionResult.sidedSuccess(world.isClientSide); @@ -136,20 +136,20 @@ index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 2892e586146cbc560f0bcf4b9af6d0575cb0a82e..63c4d52c348d9297a24abb17e105b2f4c7758740 100644 +index 2034ca2edd3aff61d94416266e75402babd3e741..3c1091f2a729b7d06ba6e21c37f788edb2ad1775 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -92,7 +92,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; - protected final BlockBehaviour.Properties properties; + public final BlockBehaviour.Properties properties; // Purpur - protected -> public @Nullable - protected ResourceLocation drops; + protected ResourceKey drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 113d827713b409cc3093c39a56439d7c0d04e129..24dcdf3ca52129d3d35902c94ae302e35385cd50 100644 +index 41b804abeab390a259eb0c8ed72f75ad403471dd..755d53e04bb0ed678bebc3497476e252dd5a736e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch similarity index 91% rename from patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch index 0af00f4e2..996296e66 100644 --- a/patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5e5485906f1157e52a7082278adcb7b6e56f3f06..a065009d01a5e28a3054241f30e5bedf21350cb5 100644 +index a3ee2af337acef86a15b12c9e6d8cd8452980a87..7b210484fd10e6e994c66afb45f8a28ffb5812f1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1851,6 +1851,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1864,6 +1864,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 5e5485906f1157e52a7082278adcb7b6e56f3f06..a065009d01a5e28a3054241f30e5bedf this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1859,6 +1860,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1872,6 +1873,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch similarity index 67% rename from patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch index cc5f3aa2f..90595d0c8 100644 --- a/patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch @@ -5,30 +5,21 @@ Subject: [PATCH] Option to toggle milk curing bad omen diff --git a/src/main/java/net/minecraft/world/item/MilkBucketItem.java b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af74fe2473 100644 +index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042356e3244 100644 --- a/src/main/java/net/minecraft/world/item/MilkBucketItem.java +++ b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -@@ -5,6 +5,8 @@ import net.minecraft.server.level.ServerPlayer; - import net.minecraft.stats.Stats; - import net.minecraft.world.InteractionHand; - import net.minecraft.world.InteractionResultHolder; -+import net.minecraft.world.effect.MobEffectInstance; -+import net.minecraft.world.effect.MobEffects; - import net.minecraft.world.entity.LivingEntity; - import net.minecraft.world.entity.player.Player; - import net.minecraft.world.level.Level; -@@ -31,7 +33,9 @@ public class MilkBucketItem extends Item { - } +@@ -26,7 +26,9 @@ public class MilkBucketItem extends Item { + stack.consume(1, user); if (!world.isClientSide) { -+ MobEffectInstance badOmen = user.getEffect(MobEffects.BAD_OMEN); ++ net.minecraft.world.effect.MobEffectInstance badOmen = user.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); // Purpur user.removeAllEffects(org.bukkit.event.entity.EntityPotionEffectEvent.Cause.MILK); // CraftBukkit + if (!world.purpurConfig.milkCuresBadOmen && badOmen != null) user.addEffect(badOmen); // Purpur } return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9832d71949025eed99a3e9e8b09f9bee9991e36a..297dfcc634cbe6993e7844209ee564ad530866ac 100644 +index b7bf1a6e59e33d13887ae3d98f37658f52030e37..40493cbb1b14f16549b95aa439e4c25c04a0627c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 74% rename from patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch index f6670747b..d5bd1de5c 100644 --- a/patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch +++ b/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch @@ -5,14 +5,14 @@ Subject: [PATCH] End gateway should check if entity can use portal diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 098fde8200a11f91f934ddab6b1486dac4014dfe..8be3d696f6401189406032dd8d45dc747f546df5 100644 +index 93bd70c1dc2ba8b893a6087730071c81fb1132f4..60b343edc4383c8bc450f106f483349850432fa3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -171,6 +171,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -167,6 +167,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { - if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { + if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) { + if (!entity.canChangeDimensions()) return; // Purpur - ServerLevel worldserver = (ServerLevel) world; - blockEntity.teleportCooldown = 100; + BlockPos blockposition1; + diff --git a/patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch similarity index 88% rename from patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0042-Skip-events-if-there-s-no-listeners.patch index 4513a3086..a34b98f86 100644 --- a/patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index b7f338e982d0dcab99137ab6dc200b82ac6b7cba..32f355b1b33cf2b7b7a276fb0fd98314a962e685 100644 +index aa2fca6917fb67fe0e9ba067d11487c3a274f675..5c7287ef8c2d59215aff81cb138a55676bfa6356 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -506,6 +506,7 @@ public class Commands { +@@ -501,6 +501,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper - Brigadier API @@ -16,7 +16,7 @@ index b7f338e982d0dcab99137ab6dc200b82ac6b7cba..32f355b1b33cf2b7b7a276fb0fd98314 PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -516,6 +517,7 @@ public class Commands { +@@ -511,6 +512,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch b/patches/server/0043-Add-permission-for-F3-N-debug.patch similarity index 83% rename from patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch rename to patches/server/0043-Add-permission-for-F3-N-debug.patch index 05aa3c2d0..8b2ac074b 100644 --- a/patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0043-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index f8a6d48200dae42cb73ed4f7eb52f957e7530e8c..8d4e080540fb24b434e6d01eee6e7c2116c66804 100644 +index f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd..338808ba1138f62d89f3f1338a4c5068426df0e4 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1181,6 +1181,7 @@ public abstract class PlayerList { +@@ -1180,6 +1180,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/unapplied-server/0046-Configurable-TPS-Catchup.patch b/patches/server/0044-Configurable-TPS-Catchup.patch similarity index 59% rename from patches/unapplied-server/0046-Configurable-TPS-Catchup.patch rename to patches/server/0044-Configurable-TPS-Catchup.patch index d661b88ae..2bed1436e 100644 --- a/patches/unapplied-server/0046-Configurable-TPS-Catchup.patch +++ b/patches/server/0044-Configurable-TPS-Catchup.patch @@ -5,29 +5,22 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0c7681a431e1986484319bf2de89d3cc3f7a6275..4c61c1dd393ac13da2f0f2b2c07db3070a172e02 100644 +index dfa332c4ff52033eb95248518bc44bbd22697697..f3ad4ee45ba48a10bbae1084f291ae0bcccdf624 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1233,11 +1233,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 301d985b89b98a644603a6b086889442f4a37d79..6f30c22fe0058320b995570c9af7b15ae917dd76 100644 +index 30f13bc35a96950f05b065b5c77830834e5792d1..9d5eaaf1869a3ecb61947ab0c09af558fa1cd283 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch b/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch deleted file mode 100644 index ccd80fc5a..000000000 --- a/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 5 May 2019 12:58:45 -0500 -Subject: [PATCH] LivingEntity safeFallDistance - - -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3c7c618dd9611485b81336ca4a5059fcb1e4f1ff..09f64c62333ff1fe4c77377d86922de59aa05265 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - protected boolean skipDropExperience; - // CraftBukkit start - public int expToDrop; -+ public float safeFallDistance = 3.0F; // Purpur - public boolean forceDrops; - public ArrayList drops = new ArrayList<>(); // Paper - Restore vanilla drops behavior - public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.tryAddSoulSpeed(); - } - -- if (!this.level().isClientSide && this.fallDistance > 3.0F && onGround && !state.isAir()) { -+ if (!this.level().isClientSide && this.fallDistance > this.safeFallDistance && onGround && !state.isAir()) { // Purpur - double d1 = this.getX(); - double d2 = this.getY(); - double d3 = this.getZ(); -@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; - } - -- float f = (float) Mth.ceil(this.fallDistance - 3.0F); -+ float f = (float) Mth.ceil(this.fallDistance - this.safeFallDistance); // Purpur - double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); - int i = (int) (150.0D * d7); - -@@ -2117,7 +2118,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); - float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); - -- return Mth.ceil((fallDistance - 3.0F - f2) * damageMultiplier); -+ return Mth.ceil((fallDistance - this.safeFallDistance - f2) * damageMultiplier); // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 24fb38499092d8cbee3818bf5c873a55465b1edb..3170f9044f18b8c609433ddbd3ef9ac330644a0f 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -386,7 +386,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, - - @Override - protected int calculateFallDamage(float fallDistance, float damageMultiplier) { -- return Mth.ceil((fallDistance * 0.5F - 3.0F) * damageMultiplier); -+ return Mth.ceil((fallDistance * 0.5F - this.safeFallDistance) * damageMultiplier); - } - - protected int getInventorySize() { -diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/Giant.java -+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -13,6 +13,7 @@ import net.minecraft.world.level.LevelReader; - public class Giant extends Monster { - public Giant(EntityType type, Level world) { - super(type, world); -+ this.safeFallDistance = 10.0F; // Purpur - } - - // Purpur start -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 52c70c2793209aadb88bd4c5f45340747271d3d7..e25c95a904820a84ba18976a30faff289682a47f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1210,4 +1210,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - this.getHandle().setYBodyRot(bodyYaw); - } - // Paper end - body yaw API -+ -+ // Purpur start -+ @Override -+ public float getSafeFallDistance() { -+ return getHandle().safeFallDistance; -+ } -+ -+ @Override -+ public void setSafeFallDistance(float safeFallDistance) { -+ getHandle().safeFallDistance = safeFallDistance; -+ } -+ // Purpur end - } From 74ff4a5910268693bd12996853c963a6a2509bef Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Apr 2024 22:20:28 -0700 Subject: [PATCH 100/148] at 100 now --- .../0049-Implement-infinite-liquids.patch} | 6 +- ...0-Make-lava-flow-speed-configurable.patch} | 0 ...dd-player-death-exp-control-options.patch} | 4 +- ...rable-void-damage-height-and-damage.patch} | 8 +-- .../0053-Add-canSaveToDisk-to-Entity.patch} | 18 ++--- ...spenser-curse-of-binding-protection.patch} | 12 ++-- ...-for-boats-to-eject-players-on-land.patch} | 6 +- ...-mends-most-damages-equipment-first.patch} | 16 ++--- ...057-Add-5-second-tps-average-in-tps.patch} | 12 ++-- .../0058-Implement-elytra-settings.patch} | 66 ++++++++----------- .../0059-Item-entity-immunities.patch} | 12 ++-- .../0060-Add-ping-command.patch} | 6 +- .../0061-Add-demo-command.patch} | 6 +- .../0062-Add-credits-command.patch} | 6 +- .../0063-Configurable-jockey-options.patch} | 34 +++++----- ...d-to-crystals-and-crystals-shoot-ph.patch} | 12 ++-- .../0065-Add-phantom-spawning-options.patch} | 10 +-- ...066-Implement-bed-explosion-options.patch} | 8 +-- ...nt-respawn-anchor-explosion-options.patch} | 4 +- ...Add-allow-water-in-end-world-option.patch} | 12 ++-- .../0069-Entity-lifespan.patch} | 22 +++---- ...eport-to-spawn-if-outside-world-bor.patch} | 8 +-- .../0071-Squid-EAR-immunity.patch} | 4 +- .../0072-Phantoms-burn-in-light.patch} | 19 +++--- ...0073-Configurable-villager-breeding.patch} | 4 +- .../0074-Redstone-deactivates-spawners.patch} | 4 +- .../0075-Totems-work-in-inventory.patch} | 4 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 4 +- ...0077-Dispensers-place-anvils-option.patch} | 7 +- .../0078-Allow-anvil-colors.patch} | 16 ++--- ...-disable-dolphin-treasure-searching.patch} | 4 +- .../0080-Short-enderman-height.patch} | 12 ++-- ...top-squids-floating-on-top-of-water.patch} | 10 +-- ...ng-obsidian-valid-for-portal-frames.patch} | 2 +- ...ities-can-use-portals-configuration.patch} | 6 +- ...084-LivingEntity-broadcastItemBreak.patch} | 6 +- ...tomizable-wither-health-and-healing.patch} | 4 +- ...gling-special-MobSpawners-per-world.patch} | 12 ++-- .../0087-Raid-cooldown-setting.patch} | 20 +++--- ...-config-options-per-projectile-type.patch} | 2 +- ...able-zombie-aggressiveness-towards-.patch} | 12 ++-- ...-to-recipe-s-ExactChoice-ingredient.patch} | 6 +- .../0091-Flying-squids-Oh-my.patch} | 10 +-- .../0092-Infinity-bow-settings.patch} | 36 +++++----- .../0093-Configurable-daylight-cycle.patch} | 22 +++---- ...e-and-mending-enchantments-together.patch} | 4 +- ...5-Furnace-uses-lava-from-underneath.patch} | 8 +-- ...ws-should-not-reset-despawn-counter.patch} | 4 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 6 +- 49 files changed, 263 insertions(+), 273 deletions(-) rename patches/{unapplied-server/0051-Implement-infinite-liquids.patch => server/0049-Implement-infinite-liquids.patch} (95%) rename patches/{unapplied-server/0052-Make-lava-flow-speed-configurable.patch => server/0050-Make-lava-flow-speed-configurable.patch} (100%) rename patches/{unapplied-server/0053-Add-player-death-exp-control-options.patch => server/0051-Add-player-death-exp-control-options.patch} (95%) rename patches/{unapplied-server/0054-Configurable-void-damage-height-and-damage.patch => server/0052-Configurable-void-damage-height-and-damage.patch} (89%) rename patches/{unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch => server/0053-Add-canSaveToDisk-to-Entity.patch} (87%) rename patches/{unapplied-server/0056-Dispenser-curse-of-binding-protection.patch => server/0054-Dispenser-curse-of-binding-protection.patch} (85%) rename patches/{unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch => server/0055-Add-option-for-boats-to-eject-players-on-land.patch} (89%) rename patches/{unapplied-server/0058-Mending-mends-most-damages-equipment-first.patch => server/0056-Mending-mends-most-damages-equipment-first.patch} (86%) rename patches/{unapplied-server/0059-Add-5-second-tps-average-in-tps.patch => server/0057-Add-5-second-tps-average-in-tps.patch} (93%) rename patches/{unapplied-server/0060-Implement-elytra-settings.patch => server/0058-Implement-elytra-settings.patch} (71%) rename patches/{unapplied-server/0061-Item-entity-immunities.patch => server/0059-Item-entity-immunities.patch} (95%) rename patches/{unapplied-server/0062-Add-ping-command.patch => server/0060-Add-ping-command.patch} (95%) rename patches/{unapplied-server/0063-Add-demo-command.patch => server/0061-Add-demo-command.patch} (95%) rename patches/{unapplied-server/0064-Add-credits-command.patch => server/0062-Add-credits-command.patch} (95%) rename patches/{unapplied-server/0065-Configurable-jockey-options.patch => server/0063-Configurable-jockey-options.patch} (91%) rename patches/{unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (96%) rename patches/{unapplied-server/0067-Add-phantom-spawning-options.patch => server/0065-Add-phantom-spawning-options.patch} (93%) rename patches/{unapplied-server/0068-Implement-bed-explosion-options.patch => server/0066-Implement-bed-explosion-options.patch} (92%) rename patches/{unapplied-server/0069-Implement-respawn-anchor-explosion-options.patch => server/0067-Implement-respawn-anchor-explosion-options.patch} (95%) rename patches/{unapplied-server/0070-Add-allow-water-in-end-world-option.patch => server/0068-Add-allow-water-in-end-world-option.patch} (91%) rename patches/{unapplied-server/0072-Entity-lifespan.patch => server/0069-Entity-lifespan.patch} (81%) rename patches/{unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (92%) rename patches/{unapplied-server/0074-Squid-EAR-immunity.patch => server/0071-Squid-EAR-immunity.patch} (94%) rename patches/{unapplied-server/0075-Phantoms-burn-in-light.patch => server/0072-Phantoms-burn-in-light.patch} (86%) rename patches/{unapplied-server/0076-Configurable-villager-breeding.patch => server/0073-Configurable-villager-breeding.patch} (93%) rename patches/{unapplied-server/0077-Redstone-deactivates-spawners.patch => server/0074-Redstone-deactivates-spawners.patch} (91%) rename patches/{unapplied-server/0078-Totems-work-in-inventory.patch => server/0075-Totems-work-in-inventory.patch} (94%) rename patches/{unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch => server/0076-Add-vindicator-johnny-spawn-chance.patch} (93%) rename patches/{unapplied-server/0080-Dispensers-place-anvils-option.patch => server/0077-Dispensers-place-anvils-option.patch} (89%) rename patches/{unapplied-server/0081-Allow-anvil-colors.patch => server/0078-Allow-anvil-colors.patch} (88%) rename patches/{unapplied-server/0082-Add-option-to-disable-dolphin-treasure-searching.patch => server/0079-Add-option-to-disable-dolphin-treasure-searching.patch} (92%) rename patches/{unapplied-server/0083-Short-enderman-height.patch => server/0080-Short-enderman-height.patch} (84%) rename patches/{unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch => server/0081-Stop-squids-floating-on-top-of-water.patch} (87%) rename patches/{unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch => server/0082-Crying-obsidian-valid-for-portal-frames.patch} (96%) rename patches/{unapplied-server/0086-Entities-can-use-portals-configuration.patch => server/0083-Entities-can-use-portals-configuration.patch} (91%) rename patches/{unapplied-server/0087-LivingEntity-broadcastItemBreak.patch => server/0084-LivingEntity-broadcastItemBreak.patch} (77%) rename patches/{unapplied-server/0088-Customizable-wither-health-and-healing.patch => server/0085-Customizable-wither-health-and-healing.patch} (94%) rename patches/{unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch => server/0086-Allow-toggling-special-MobSpawners-per-world.patch} (90%) rename patches/{unapplied-server/0090-Raid-cooldown-setting.patch => server/0087-Raid-cooldown-setting.patch} (78%) rename patches/{unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch => server/0088-Despawn-rate-config-options-per-projectile-type.patch} (96%) rename patches/{unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch => server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (92%) rename patches/{unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (90%) rename patches/{unapplied-server/0094-Flying-squids-Oh-my.patch => server/0091-Flying-squids-Oh-my.patch} (92%) rename patches/{unapplied-server/0095-Infinity-bow-settings.patch => server/0092-Infinity-bow-settings.patch} (54%) rename patches/{unapplied-server/0096-Configurable-daylight-cycle.patch => server/0093-Configurable-daylight-cycle.patch} (86%) rename patches/{unapplied-server/0097-Allow-infinite-and-mending-enchantments-together.patch => server/0094-Allow-infinite-and-mending-enchantments-together.patch} (92%) rename patches/{unapplied-server/0098-Furnace-uses-lava-from-underneath.patch => server/0095-Furnace-uses-lava-from-underneath.patch} (92%) rename patches/{unapplied-server/0099-Arrows-should-not-reset-despawn-counter.patch => server/0096-Arrows-should-not-reset-despawn-counter.patch} (92%) rename patches/{unapplied-server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (87%) diff --git a/patches/unapplied-server/0051-Implement-infinite-liquids.patch b/patches/server/0049-Implement-infinite-liquids.patch similarity index 95% rename from patches/unapplied-server/0051-Implement-infinite-liquids.patch rename to patches/server/0049-Implement-infinite-liquids.patch index 8b4792eff..e52ee6bdf 100644 --- a/patches/unapplied-server/0051-Implement-infinite-liquids.patch +++ b/patches/server/0049-Implement-infinite-liquids.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement infinite liquids diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index 6411aa4ff6bd4cabb25c426fa8f4a7eedb969c03..0fe597d32a0e15ea67b32925c1a62e8c143ff81d 100644 +index c2943d892b067b3f1fb3b93301a092e912d71f08..a091c51476214977d7a9729b5c72e8478fe4a391 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -227,7 +227,7 @@ public abstract class FlowingFluid extends Fluid { +@@ -217,7 +217,7 @@ public abstract class FlowingFluid extends Fluid { } } @@ -17,7 +17,7 @@ index 6411aa4ff6bd4cabb25c426fa8f4a7eedb969c03..0fe597d32a0e15ea67b32925c1a62e8c BlockState iblockdata2 = world.getBlockState(pos.below()); FluidState fluid1 = iblockdata2.getFluidState(); -@@ -336,6 +336,12 @@ public abstract class FlowingFluid extends Fluid { +@@ -301,6 +301,12 @@ public abstract class FlowingFluid extends Fluid { protected abstract boolean canConvertToSource(Level world); diff --git a/patches/unapplied-server/0052-Make-lava-flow-speed-configurable.patch b/patches/server/0050-Make-lava-flow-speed-configurable.patch similarity index 100% rename from patches/unapplied-server/0052-Make-lava-flow-speed-configurable.patch rename to patches/server/0050-Make-lava-flow-speed-configurable.patch diff --git a/patches/unapplied-server/0053-Add-player-death-exp-control-options.patch b/patches/server/0051-Add-player-death-exp-control-options.patch similarity index 95% rename from patches/unapplied-server/0053-Add-player-death-exp-control-options.patch rename to patches/server/0051-Add-player-death-exp-control-options.patch index 10f253acf..ae4a16619 100644 --- a/patches/unapplied-server/0053-Add-player-death-exp-control-options.patch +++ b/patches/server/0051-Add-player-death-exp-control-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 97805659af862213e9217c408519563de2be5b35..e68ed7339d8aed2b97e310edeee3960611ed7bf1 100644 +index d5383e9cbbee2f9d4223319ae38abed41a13cfb3..a838f339dd0085660164b0eb1597e0a14e4de6f4 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1944,9 +1944,19 @@ public abstract class Player extends LivingEntity { +@@ -1962,9 +1962,19 @@ public abstract class Player extends LivingEntity { @Override public int getExperienceReward() { if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { diff --git a/patches/unapplied-server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0052-Configurable-void-damage-height-and-damage.patch similarity index 89% rename from patches/unapplied-server/0054-Configurable-void-damage-height-and-damage.patch rename to patches/server/0052-Configurable-void-damage-height-and-damage.patch index ebba07669..8adbee6ec 100644 --- a/patches/unapplied-server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0052-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 f8db28b15e551fc0e0c7f37c355237685c637529..7fe6f44d25790cd222b700cf5ce1d5f36d89e650 100644 +index 429d1a3fd7a75fe3dc8eb8d467ad4f2bd99e0212..f0ba7603795eb1fde01dc86cd3d8b02d73a55869 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -912,7 +912,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -948,7 +948,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,10 +18,10 @@ index f8db28b15e551fc0e0c7f37c355237685c637529..7fe6f44d25790cd222b700cf5ce1d5f3 && (!(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 a065009d01a5e28a3054241f30e5bedf21350cb5..c80e2c400f264d7d195dbf87f5dec95ba5df7444 100644 +index 7b210484fd10e6e994c66afb45f8a28ffb5812f1..ed8833ed95584cdf9be2b931915277c04beac6ee 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2563,7 +2563,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2592,7 +2592,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { diff --git a/patches/unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/server/0053-Add-canSaveToDisk-to-Entity.patch similarity index 87% rename from patches/unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0053-Add-canSaveToDisk-to-Entity.patch index e20c9a2b9..cd30c40fc 100644 --- a/patches/unapplied-server/0055-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0053-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ 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 a01d19ab227621ffa36e9c1bb840f452a856eaa8..10a0f2b4968600f088677103b0bfbe5f69aa4428 100644 +index f0ba7603795eb1fde01dc86cd3d8b02d73a55869..a99d04b820c230422bc82a3e0e094a79ab0c5c33 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -558,6 +558,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -558,6 +558,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } @@ -20,26 +20,26 @@ index a01d19ab227621ffa36e9c1bb840f452a856eaa8..10a0f2b4968600f088677103b0bfbe5f return this.hardCollides; } 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 f5e1aa316a90bf2cd9c997b76830096d4fbbee42..c37b3486dcc75c5c78d605afeff2e3f723940636 100644 +index 4117260538e47c978ea31c76f439d43369ebedfb..c753f715710ec4bb8337e035ac5a4c11371a84a0 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 { + // do not hit rider return target != this.getRider() && super.canHitEntity(target); } - ++ + @Override + public boolean canSaveToDisk() { + return false; + } -+ + // Purpur end + @Override - public boolean isPickable() { - return false; 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 995fbfa225efe40274c20608b9b30b8afa847698..c70f04cdee1e8ba6f8a15c9e38edbe0023b5ab96 100644 +index bee39dee1b96023c907407877aedf3aafaf5e1b8..5b6bc200381a486c99061f9f5b7121c2c355b477 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 -@@ -111,6 +111,7 @@ public class EntityStorage implements EntityPersistentStorage { +@@ -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 diff --git a/patches/unapplied-server/0056-Dispenser-curse-of-binding-protection.patch b/patches/server/0054-Dispenser-curse-of-binding-protection.patch similarity index 85% rename from patches/unapplied-server/0056-Dispenser-curse-of-binding-protection.patch rename to patches/server/0054-Dispenser-curse-of-binding-protection.patch index dc3c4f0a3..9ceca7396 100644 --- a/patches/unapplied-server/0056-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0054-Dispenser-curse-of-binding-protection.patch @@ -5,18 +5,18 @@ 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 43f2654eb0a396bce98e0840bdc8a8b16f00b2ba..b30292dcc9bbfc0ded94ee8a0f4a5e949327da54 100644 +index 3d5f08d673f6b95c8f87070345f1fb200b5f4bde..c4392a997061aa4939e5ad7dcacf5e39cbecc55a 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -66,6 +66,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; - import net.minecraft.world.item.SpawnEggItem; +@@ -75,6 +75,7 @@ import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.SwordItem; + import net.minecraft.world.item.component.ItemAttributeModifiers; import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; -@@ -1183,6 +1184,12 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1309,6 +1310,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti } @@ -30,10 +30,10 @@ index 43f2654eb0a396bce98e0840bdc8a8b16f00b2ba..b30292dcc9bbfc0ded94ee8a0f4a5e94 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 6b81be03f87967124b046708557e05d519aa79e4..b47cc957f9e4936b15b80a6f685ddddb5b289298 100644 +index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103459054f8 100644 --- a/src/main/java/net/minecraft/world/item/ArmorItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorItem.java -@@ -67,7 +67,7 @@ public class ArmorItem extends Item implements Equipable { +@@ -69,7 +69,7 @@ public class ArmorItem extends Item implements Equipable { return false; } else { LivingEntity entityliving = (LivingEntity) list.get(0); diff --git a/patches/unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch similarity index 89% rename from patches/unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch index 150a08f9c..dfbc74be0 100644 --- a/patches/unapplied-server/0057-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0055-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 c041c0b81be41cfd128c2f5ba56a5329d50b2efc..960bada23cb89a7f270d1ee24d62f2bc108522af 100644 +index b068cff9b5aa457d65b679529956e8210296d799..0b23e05f936cab7a9867828c2d69417cfde1d2ce 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -521,6 +521,7 @@ public class Boat extends VehicleEntity implements VariantHolder { +@@ -514,6 +514,7 @@ public class Boat extends VehicleEntity implements VariantHolder { if (f > 0.0F) { this.landFriction = f; @@ -17,7 +17,7 @@ index c041c0b81be41cfd128c2f5ba56a5329d50b2efc..960bada23cb89a7f270d1ee24d62f2bc } 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 4240c9ce3fec8ae6883fa5762e01349136fe4067..cc373c386ca72c3c6cfd69dc26be6ccdfaae1738 100644 +index 27c1f09be7d664073263a02a8854ff1e8c6f9ab1..76c1cfc35b598eab2ca27656feeb17f79dde7e00 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/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch similarity index 86% rename from patches/unapplied-server/0058-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0056-Mending-mends-most-damages-equipment-first.patch index 21a17932f..d93d2cf9b 100644 --- a/patches/unapplied-server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch @@ -5,10 +5,10 @@ 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 36422fb394a158f36c84ba0ee03cc704956c91b2..c8671996f07f1daafe48448f4a5b837ca2f658c6 100644 +index a207a31d80a302dbdfe80f8727222542d3a78da2..7ca70e9ddda24e2fe661c7b13fa439a6c19726dd 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -332,7 +332,7 @@ public class ExperienceOrb extends Entity { +@@ -338,7 +338,7 @@ public class ExperienceOrb extends Entity { } private int repairPlayerItems(Player player, int amount) { @@ -18,10 +18,10 @@ index 36422fb394a158f36c84ba0ee03cc704956c91b2..c8671996f07f1daafe48448f4a5b837c if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 1ad126d992d95062a3db08374db7a927f23a0cac..38e097807c5034c077a10d3af08bf348a008d229 100644 +index 36e3415b9312d3a80c9f5e1c36b42b7ea30c31c5..f47575bb8cc5e31ef3583cf6ed94604c1da60932 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -613,6 +613,16 @@ public final class ItemStack { +@@ -636,6 +636,16 @@ public final class ItemStack implements DataComponentHolder { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -36,13 +36,13 @@ index 1ad126d992d95062a3db08374db7a927f23a0cac..38e097807c5034c077a10d3af08bf348 + // Purpur end + public int getDamageValue() { - return this.tag == null ? 0 : this.tag.getInt("Damage"); + 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 0d89e2f944e7017cfdac96f8c91f4568e481ff02..496c47eb3b13ba620fde1a2bc96f886c5b01e1de 100644 +index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d825196399158 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -266,6 +266,29 @@ public class EnchantmentHelper { +@@ -237,6 +237,29 @@ public class EnchantmentHelper { return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0; } @@ -70,7 +70,7 @@ index 0d89e2f944e7017cfdac96f8c91f4568e481ff02..496c47eb3b13ba620fde1a2bc96f886c + // Purpur end + @Nullable - public static Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { + public static java.util.Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, stack -> true); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 100644 diff --git a/patches/unapplied-server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0057-Add-5-second-tps-average-in-tps.patch similarity index 93% rename from patches/unapplied-server/0059-Add-5-second-tps-average-in-tps.patch rename to patches/server/0057-Add-5-second-tps-average-in-tps.patch index 98a1625ec..9623dcb7d 100644 --- a/patches/unapplied-server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0057-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 62e715755137426ed2bc7abae148fadc247da239..14c349464970f8f9486e62c26854b87833d3df04 100644 +index f3ad4ee45ba48a10bbae1084f291ae0bcccdf624..3a622f5274f036608950702291c1e624488a6faa 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { +- itemstack.hurtAndBreak(1, this, EquipmentSlot.CHEST); + // Purpur start + int damage = level().purpurConfig.elytraDamagePerSecond; + if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) { @@ -21,43 +21,35 @@ index 2ebe8c165c8b425d437e0b359e3f2ad851b84273..56ffc7ae9bf9dabcbe6e993475a9bf5c + damage *= (int) speed; + } + } -+ itemstack.hurtAndBreak(damage, this, (entityliving) -> { ++ itemstack.hurtAndBreak(damage, this, EquipmentSlot.CHEST); + // Purpur end - entityliving.broadcastBreakEvent(EquipmentSlot.CHEST); - }); } + + this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java -index 409c6d5820d4ab3a84e64a3837a83d3ef28a38c7..b70ed576b304bcc383a3d67f36be6575b39b1280 100644 +index 218f2f085309f04438f8b07bc41cf242583db2dc..c6e8ce19fde69316d9523c90105660992f728cfb 100644 --- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java +++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java -@@ -15,6 +15,7 @@ import net.minecraft.util.ByIdMap; - import net.minecraft.world.InteractionHand; - import net.minecraft.world.InteractionResult; - import net.minecraft.world.InteractionResultHolder; -+import net.minecraft.world.entity.EquipmentSlot; - import net.minecraft.world.entity.player.Player; - import net.minecraft.world.entity.projectile.FireworkRocketEntity; - import net.minecraft.world.item.context.UseOnContext; -@@ -76,6 +77,14 @@ public class FireworkRocketItem extends Item { +@@ -65,6 +65,14 @@ public class FireworkRocketItem extends Item implements ProjectileItem { com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand)); if (event.callEvent() && world.addFreshEntity(fireworkRocketEntity)) { user.awardStat(Stats.ITEM_USED.get(this)); + // Purpur start + if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) { -+ ItemStack chestItem = user.getItemBySlot(EquipmentSlot.CHEST); ++ ItemStack chestItem = user.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.CHEST); + if (chestItem.getItem() == Items.ELYTRA) { -+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, (entityliving) -> entityliving.broadcastBreakEvent(EquipmentSlot.CHEST)); ++ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, (entityliving) -> entityliving.broadcastBreakEvent(net.minecraft.world.entity.EquipmentSlot.CHEST)); + } + } + // Purpur end - if (event.shouldConsume() && !user.getAbilities().instabuild) { - itemStack.shrink(1); + if (event.shouldConsume() && !user.hasInfiniteMaterials()) { + itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 38e097807c5034c077a10d3af08bf348a008d229..5b0816b6c01912c41e588559597edf8b5902fcd3 100644 +index f47575bb8cc5e31ef3583cf6ed94604c1da60932..206f6409a17eb0db1ced8c7a90127ed375329a44 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -642,7 +642,7 @@ public final class ItemStack { +@@ -663,7 +663,7 @@ public final class ItemStack implements DataComponentHolder { int j; if (amount > 0) { @@ -66,24 +58,24 @@ index 38e097807c5034c077a10d3af08bf348a008d229..5b0816b6c01912c41e588559597edf8b int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -697,6 +697,12 @@ public final class ItemStack { - if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - Add EntityDamageItemEvent - breakCallback.accept(entity); - Item item = this.getItem(); -+ // Purpur start -+ if (item == Items.ELYTRA) { -+ setDamageValue(item.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); +@@ -739,6 +739,12 @@ public final class ItemStack implements DataComponentHolder { + this.hurtAndBreak(amount, randomsource, entity, () -> { // Paper - Add EntityDamageItemEvent + entity.broadcastBreakEvent(slot); + Item item = this.getItem(); ++ // Purpur start ++ if (item == Items.ELYTRA) { ++ setDamageValue(item.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 a792c7b7a6179aa88fc473b27ef0ca13bd91a395..c2218c2dd46641ebb4c9278fa0d6015122b1905c 100644 +index 47de500fddb0716d142f8f5876a82a95afaa06fa..129f829cc238ff2f6586511f80eb6da2e8c7ece4 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -128,6 +128,14 @@ public class TridentItem extends Item implements Vanishable { +@@ -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 diff --git a/patches/unapplied-server/0061-Item-entity-immunities.patch b/patches/server/0059-Item-entity-immunities.patch similarity index 95% rename from patches/unapplied-server/0061-Item-entity-immunities.patch rename to patches/server/0059-Item-entity-immunities.patch index 77de6ba12..c45cb2d67 100644 --- a/patches/unapplied-server/0061-Item-entity-immunities.patch +++ b/patches/server/0059-Item-entity-immunities.patch @@ -5,10 +5,10 @@ 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 db55ad9aaabfa1ea998754f3ac352d1698936696..04b98e23eed926d8473cc2464e04a5b9f18f1140 100644 +index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c010b8aeb 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -73,7 +73,7 @@ public class ServerEntity { +@@ -77,7 +77,7 @@ public class ServerEntity { @Nullable private List> trackedDataValues; // CraftBukkit start @@ -18,10 +18,10 @@ index db55ad9aaabfa1ea998754f3ac352d1698936696..04b98e23eed926d8473cc2464e04a5b9 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 c7f06c3cfb737bd17a706798bf9cf0e1af5f0cc0..3cac817351a149935df75ef23d9f9417f6502016 100644 +index 8fd3845c4965843be9c37498760d93f1ebdff541..7dae2a7c759fc3e004f806c59e083f52c3a460b2 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -59,6 +59,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -63,6 +63,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 c7f06c3cfb737bd17a706798bf9cf0e1af5f0cc0..3cac817351a149935df75ef23d9f9417 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -365,7 +371,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -371,7 +377,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public boolean hurt(DamageSource source, float amount) { @@ -52,7 +52,7 @@ index c7f06c3cfb737bd17a706798bf9cf0e1af5f0cc0..3cac817351a149935df75ef23d9f9417 return false; } else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { return false; -@@ -568,6 +583,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -579,6 +594,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 diff --git a/patches/unapplied-server/0062-Add-ping-command.patch b/patches/server/0060-Add-ping-command.patch similarity index 95% rename from patches/unapplied-server/0062-Add-ping-command.patch rename to patches/server/0060-Add-ping-command.patch index 664f718b3..2c351459d 100644 --- a/patches/unapplied-server/0062-Add-ping-command.patch +++ b/patches/server/0060-Add-ping-command.patch @@ -5,12 +5,12 @@ 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 471270f302cbfaf81500976fcc5a02eaed4120f3..0aeee502c60a81e6a9ca765e57ab27f5c588ac1d 100644 +index 5c7287ef8c2d59215aff81cb138a55676bfa6356..a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -250,6 +250,7 @@ public class Commands { - SetPlayerIdleTimeoutCommand.register(this.dispatcher); +@@ -252,6 +252,7 @@ public class Commands { StopCommand.register(this.dispatcher); + TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); + org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur } diff --git a/patches/unapplied-server/0063-Add-demo-command.patch b/patches/server/0061-Add-demo-command.patch similarity index 95% rename from patches/unapplied-server/0063-Add-demo-command.patch rename to patches/server/0061-Add-demo-command.patch index d463bd3a8..0b3873fc7 100644 --- a/patches/unapplied-server/0063-Add-demo-command.patch +++ b/patches/server/0061-Add-demo-command.patch @@ -5,12 +5,12 @@ 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 0aeee502c60a81e6a9ca765e57ab27f5c588ac1d..2bfcd4222daa7c5b5cc8cfa0545241afd3cb8d15 100644 +index a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d..4568c4b02a87deb299ffd77b8e76329bb2b1dd70 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -250,6 +250,7 @@ public class Commands { - SetPlayerIdleTimeoutCommand.register(this.dispatcher); +@@ -252,6 +252,7 @@ public class Commands { StopCommand.register(this.dispatcher); + TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); + org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur diff --git a/patches/unapplied-server/0064-Add-credits-command.patch b/patches/server/0062-Add-credits-command.patch similarity index 95% rename from patches/unapplied-server/0064-Add-credits-command.patch rename to patches/server/0062-Add-credits-command.patch index e43ae0828..9f08a380f 100644 --- a/patches/unapplied-server/0064-Add-credits-command.patch +++ b/patches/server/0062-Add-credits-command.patch @@ -5,12 +5,12 @@ 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 2bfcd4222daa7c5b5cc8cfa0545241afd3cb8d15..575f026c086e24663b5d38222915460923937723 100644 +index 4568c4b02a87deb299ffd77b8e76329bb2b1dd70..6af3e1e08048869ac28ab4a93e03d086872f866b 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -250,6 +250,7 @@ public class Commands { - SetPlayerIdleTimeoutCommand.register(this.dispatcher); +@@ -252,6 +252,7 @@ public class Commands { StopCommand.register(this.dispatcher); + TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); + org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur diff --git a/patches/unapplied-server/0065-Configurable-jockey-options.patch b/patches/server/0063-Configurable-jockey-options.patch similarity index 91% rename from patches/unapplied-server/0065-Configurable-jockey-options.patch rename to patches/server/0063-Configurable-jockey-options.patch index 5544f83cf..8b8ec6285 100644 --- a/patches/unapplied-server/0065-Configurable-jockey-options.patch +++ b/patches/server/0063-Configurable-jockey-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable jockey options diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index e9f14e8d207c99a60a4802b3412048cd1481b9f7..ebfbf67d65dc5a54e9235f44ab391147c23ddd0f 100644 +index 02bceb31c517b94653573380ed29d9401a6b9ce8..1d283484be270497859e23e3bb4ab38c09af23e6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -95,6 +95,21 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -98,6 +98,21 @@ public class Drowned extends Zombie implements RangedAttackMob { this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements); } @@ -31,10 +31,10 @@ index e9f14e8d207c99a60a4802b3412048cd1481b9f7..ebfbf67d65dc5a54e9235f44ab391147 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 4ba01ebfc93d10cd0077e32c30349afda2093fb2..a6d827b39ce9ca13103fb2f9940974e8aaaea037 100644 +index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c2418dc7f59 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -51,6 +51,21 @@ public class Husk extends Zombie { +@@ -49,6 +49,21 @@ public class Husk extends Zombie { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements); } @@ -57,10 +57,10 @@ index 4ba01ebfc93d10cd0077e32c30349afda2093fb2..a6d827b39ce9ca13103fb2f9940974e8 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 f75900e33a08bd6eb13fd480fe62b49346f47bac..52f2d2df03314c8ddf70b240dca82cafa44c6b07 100644 +index 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607db8741e3b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -129,6 +129,18 @@ public class Zombie extends Monster { +@@ -126,6 +126,18 @@ public class Zombie extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth); } @@ -79,10 +79,10 @@ index f75900e33a08bd6eb13fd480fe62b49346f47bac..52f2d2df03314c8ddf70b240dca82caf @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -544,19 +556,20 @@ public class Zombie extends Monster { - if (object instanceof Zombie.ZombieGroupData) { - Zombie.ZombieGroupData entityzombie_groupdatazombie = (Zombie.ZombieGroupData) object; +@@ -533,19 +545,20 @@ public class Zombie extends Monster { + } + if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) { - if (entityzombie_groupdatazombie.isBaby) { - this.setBaby(true); + // Purpur start @@ -106,7 +106,7 @@ index f75900e33a08bd6eb13fd480fe62b49346f47bac..52f2d2df03314c8ddf70b240dca82caf Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level()); if (entitychicken1 != null) { -@@ -566,6 +579,7 @@ public class Zombie extends Monster { +@@ -555,6 +568,7 @@ public class Zombie extends Monster { this.startRiding(entitychicken1); world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } @@ -115,10 +115,10 @@ index f75900e33a08bd6eb13fd480fe62b49346f47bac..52f2d2df03314c8ddf70b240dca82caf } } 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 6c96ca4bb3f94aaeaff87ae44500e87516fbf54f..b71c47c275a3726eb5028c9524013ebc608a21ea 100644 +index 8e7f0f2069c3382f3a7b08b80f829398e62377f7..ffe2144e307acebd4a8bed043db0ee0bb6bf611c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -109,6 +109,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -107,6 +107,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); } @@ -138,13 +138,13 @@ index 6c96ca4bb3f94aaeaff87ae44500e87516fbf54f..b71c47c275a3726eb5028c9524013ebc + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + 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 fa5fa58ee03243054a38475634a6aa67815ca77d..764477c39e690d6373e17c77687809418e0de884 100644 +index 138f3f6a9b0754d54e5f8000962bb52b224f677d..75c34d9fcc4b33d30b18f1ce4c8749a068744abc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -86,6 +86,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -84,6 +84,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth); } @@ -167,7 +167,7 @@ index fa5fa58ee03243054a38475634a6aa67815ca77d..764477c39e690d6373e17c7768780941 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 b5599360a524a55183b3a21f822b5cb24f59dc67..5c83d5b665bfccd7c54c18012d4bec7d975de3f2 100644 +index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef853e00ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -588,6 +588,9 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 96% rename from patches/unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index bdc70fd0b..b8b783a89 100644 --- a/patches/unapplied-server/0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0064-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 036640d49a5e891e9a0f767abe33f1f51d6d4cde..c0c8bdfbab17d8a10d616e2625ebfa7babf5fab3 100644 +index d8e440e14b72dc48ae97244f1bed2c06abd997ab..2bac39e5ba09e08d23d2a4be37f7fe0da0ce71a6 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 { @@ -72,10 +72,10 @@ index 036640d49a5e891e9a0f767abe33f1f51d6d4cde..c0c8bdfbab17d8a10d616e2625ebfa7b @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 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b1fecf3a7 100644 +index 01e8eaecec61e664838b5d7f18a9c3e730f00ddf..e0b1b0106fd3bbb6764d1b0a58ab2810181cac02 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { Vec3 moveTargetPoint; public BlockPos anchorPoint; Phantom.AttackPhase attackPhase; @@ -83,7 +83,7 @@ index 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b public Phantom(EntityType type, Level world) { super(type, world); -@@ -117,6 +118,23 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -115,6 +116,23 @@ public class Phantom extends FlyingMob implements Enemy { level().addFreshEntity(flames); return true; } @@ -107,7 +107,7 @@ index 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b // Purpur end @Override -@@ -131,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -129,11 +147,17 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { @@ -130,7 +130,7 @@ index 6819acda60e783ee57dd8b9b5d27bc1e105425c3..4153b621c04168f1f78c526f31a46d9b this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -352,6 +376,124 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -333,6 +357,124 @@ public class Phantom extends FlyingMob implements Enemy { private AttackPhase() {} } diff --git a/patches/unapplied-server/0067-Add-phantom-spawning-options.patch b/patches/server/0065-Add-phantom-spawning-options.patch similarity index 93% rename from patches/unapplied-server/0067-Add-phantom-spawning-options.patch rename to patches/server/0065-Add-phantom-spawning-options.patch index 72e52ca6c..3bd99a5d7 100644 --- a/patches/unapplied-server/0067-Add-phantom-spawning-options.patch +++ b/patches/server/0065-Add-phantom-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add phantom spawning options diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -index ed80960777b18faca2d6a99783e53daf5fa19e09..0847aef56d8608cb1403485f231f30b2527f35ab 100644 +index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f060aea63 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -49,7 +49,7 @@ public class PhantomSpawner implements CustomSpawner { +@@ -48,7 +48,7 @@ public class PhantomSpawner implements CustomSpawner { int spawnAttemptMaxSeconds = world.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; this.nextTick += (spawnAttemptMinSeconds + randomsource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; // Paper end - Ability to control player's insomnia and phantoms @@ -17,7 +17,7 @@ index ed80960777b18faca2d6a99783e53daf5fa19e09..0847aef56d8608cb1403485f231f30b2 return 0; } else { int i = 0; -@@ -61,10 +61,10 @@ public class PhantomSpawner implements CustomSpawner { +@@ -60,10 +60,10 @@ public class PhantomSpawner implements CustomSpawner { if (!entityplayer.isSpectator() && (!world.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !entityplayer.isCreative())) { // Paper - Add phantom creative and insomniac controls BlockPos blockposition = entityplayer.blockPosition(); @@ -30,7 +30,7 @@ index ed80960777b18faca2d6a99783e53daf5fa19e09..0847aef56d8608cb1403485f231f30b2 ServerStatsCounter serverstatisticmanager = entityplayer.getStats(); int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); boolean flag2 = true; -@@ -76,7 +76,7 @@ public class PhantomSpawner implements CustomSpawner { +@@ -75,7 +75,7 @@ public class PhantomSpawner implements CustomSpawner { if (NaturalSpawner.isValidEmptySpawnBlock(world, blockposition1, iblockdata, fluid, EntityType.PHANTOM)) { SpawnGroupData groupdataentity = null; @@ -40,7 +40,7 @@ index ed80960777b18faca2d6a99783e53daf5fa19e09..0847aef56d8608cb1403485f231f30b2 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 522ffc7b0d7a028436c385da4809070fb6095c4c..28c92b79be65b35b691661f6d63c2f66c9a3a337 100644 +index e1652079b92a5c951b5191997803e9d486892c61..10de2140aa89f75e7f67b38f6c1286f4330d127b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1068,6 +1068,12 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0068-Implement-bed-explosion-options.patch b/patches/server/0066-Implement-bed-explosion-options.patch similarity index 92% rename from patches/unapplied-server/0068-Implement-bed-explosion-options.patch rename to patches/server/0066-Implement-bed-explosion-options.patch index a9e82b654..2ff47c399 100644 --- a/patches/unapplied-server/0068-Implement-bed-explosion-options.patch +++ b/patches/server/0066-Implement-bed-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 2c1d03237d5b24b93807c7e97d969ace13d6a917..fc46e324f36ce4de4f3868a98ad9dd2c99b428af 100644 +index e9f8949267208b93f0c56c36ada38274ed4280f5..9084e11df829fb24489773d15435a3a3570135fe 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -106,7 +106,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -105,7 +105,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = pos.getCenter(); @@ -17,7 +17,7 @@ index 2c1d03237d5b24b93807c7e97d969ace13d6a917..fc46e324f36ce4de4f3868a98ad9dd2c return InteractionResult.SUCCESS; } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first -@@ -159,7 +159,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -158,7 +158,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = blockposition.getCenter(); @@ -27,7 +27,7 @@ index 2c1d03237d5b24b93807c7e97d969ace13d6a917..fc46e324f36ce4de4f3868a98ad9dd2c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28c92b79be65b35b691661f6d63c2f66c9a3a337..813d942b4edf3d4143565c694b444092fd577cc8 100644 +index 10de2140aa89f75e7f67b38f6c1286f4330d127b..95f016b7c127129b71e266a3daefd55502fdb299 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/0069-Implement-respawn-anchor-explosion-options.patch b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch similarity index 95% rename from patches/unapplied-server/0069-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0067-Implement-respawn-anchor-explosion-options.patch index 344c2cb38..1cf02a3c0 100644 --- a/patches/unapplied-server/0069-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 088262f306755a9cb785c7a0cf0a9c66ed0965a8..a3621a126a286a2789d069382940e8aa24c4caf2 100644 +index 4e2fad1f234356ada6f29445038e43b9a8406cf9..6f3f53940431afc7a22b262d9d34bc0abf2f0e7a 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -148,7 +148,7 @@ public class RespawnAnchorBlock extends Block { +@@ -150,7 +150,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 vec3d = explodedPos.getCenter(); diff --git a/patches/unapplied-server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0068-Add-allow-water-in-end-world-option.patch similarity index 91% rename from patches/unapplied-server/0070-Add-allow-water-in-end-world-option.patch rename to patches/server/0068-Add-allow-water-in-end-world-option.patch index 11259bf74..6cc34bdc5 100644 --- a/patches/unapplied-server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0068-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 6371f326fc86cfc53e39bf8ed13b646f7705fbbc..3dec0c5fc8dece5341634eaf8e94fe1964bf4038 100644 +index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214cac46bd7d8 100644 --- a/src/main/java/net/minecraft/world/item/BucketItem.java +++ b/src/main/java/net/minecraft/world/item/BucketItem.java -@@ -195,7 +195,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -194,7 +194,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 6371f326fc86cfc53e39bf8ed13b646f7705fbbc..3dec0c5fc8dece5341634eaf8e94fe19 int i = blockposition.getX(); int j = blockposition.getY(); int k = blockposition.getZ(); -@@ -203,7 +203,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -202,7 +202,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,10 +27,10 @@ index 6371f326fc86cfc53e39bf8ed13b646f7705fbbc..3dec0c5fc8dece5341634eaf8e94fe19 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 1513300064314a761adf4a08cc72782ec93947d1..1e55c024a8dd7f1a5f324937bbd3f13b3ac8f076 100644 +index 04f7f6743aabdca54892b2b155386f86032cf807..2e44e9ea9558ebc1456d9bbf53561988e33ce845 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1911,4 +1911,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1902,4 +1902,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end - optimize redstone (Alternate Current) @@ -45,7 +45,7 @@ index 1513300064314a761adf4a08cc72782ec93947d1..1e55c024a8dd7f1a5f324937bbd3f13b + // 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 9c8c1df5187daefb1c8098b4d4a0976c71a7bbfd..cf4c1097d54c84b309ab02e9892d1b9e39d57490 100644 +index 013302623d3ca3ff88f242d740af935dcf4844a6..13dd8bc7d2f6b71a5f1779dde53c5c84d83538ce 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 { diff --git a/patches/unapplied-server/0072-Entity-lifespan.patch b/patches/server/0069-Entity-lifespan.patch similarity index 81% rename from patches/unapplied-server/0072-Entity-lifespan.patch rename to patches/server/0069-Entity-lifespan.patch index 17c4bafd2..5e9facec0 100644 --- a/patches/unapplied-server/0072-Entity-lifespan.patch +++ b/patches/server/0069-Entity-lifespan.patch @@ -5,22 +5,22 @@ 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 4e403c3738844374de3f6e40fbadbbaf88d9d231..104070f091b5aab94af2378ca7acb796799f869b 100644 +index eb7b15a234eaf64b399fe2572d5e75dce3437b1a..e467ad2abcc32d86821ee3f99c82460095b40fba 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2749,6 +2749,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2798,6 +2798,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); - if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { + if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) { + if (entity instanceof Mob mob) mob.ticksSinceLastInteraction = 0; // Purpur packet.dispatch(new ServerboundInteractPacket.Handler() { 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 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646bfbe3073f 100644 +index c4392a997061aa4939e5ad7dcacf5e39cbecc55a..e7251ac940b49564c83b4b603e49c3990fc85db1 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -137,6 +137,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -152,6 +152,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti private BlockPos restrictCenter; private float restrictRadius; @@ -28,7 +28,7 @@ index 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646b public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -326,6 +327,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -339,6 +340,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti entityliving = null; } } @@ -36,7 +36,7 @@ index 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646b this.target = entityliving; return true; // CraftBukkit end -@@ -373,8 +375,28 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -381,8 +383,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti } this.level().getProfiler().pop(); @@ -63,9 +63,9 @@ index 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646b + // Purpur end + @Override - protected void playHurtSound(DamageSource source) { + protected void playHurtSound(DamageSource damageSource) { this.resetAmbientSoundTime(); -@@ -564,6 +586,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -585,6 +607,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646b } @Override -@@ -634,6 +657,11 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -669,6 +692,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,7 +85,7 @@ index 04d7d3193c9380769b0043c53eac579cca88f72a..0d1e4099548a907375ef1b225cfe646b } @Override -@@ -1718,6 +1746,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1848,6 +1876,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti this.setLastHurtMob(target); } diff --git a/patches/unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 92% rename from patches/unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index a7b78f144..21154237b 100644 --- a/patches/unapplied-server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0070-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 8b2550bada2cca8cb9875580133ce0ee6cc19325..498c60a8669b867101f030b5735deffe5252ebbd 100644 +index a17de781053a2c2caf615e5ac48a45c14386b0af..03b206289d103a36d19dcf3154f10ad98f976ba2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2848,4 +2848,26 @@ public class ServerPlayer extends Player { +@@ -2956,4 +2956,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,10 +36,10 @@ index 8b2550bada2cca8cb9875580133ce0ee6cc19325..498c60a8669b867101f030b5735deffe + // 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 40a22471b7828d660b1d8aa3f16af060694a86e3..dea777da2b5cb5182fd165d070dd90d579f99bea 100644 +index 9a2725e3f61a7d37943518cc760b17859a0938bb..9a912752b12730a8fb09f5a6ab5a8638b555e3e3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -440,6 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { diff --git a/patches/unapplied-server/0074-Squid-EAR-immunity.patch b/patches/server/0071-Squid-EAR-immunity.patch similarity index 94% rename from patches/unapplied-server/0074-Squid-EAR-immunity.patch rename to patches/server/0071-Squid-EAR-immunity.patch index 3ec9e1084..6e6183b7a 100644 --- a/patches/unapplied-server/0074-Squid-EAR-immunity.patch +++ b/patches/server/0071-Squid-EAR-immunity.patch @@ -25,7 +25,7 @@ index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630 public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 88bac31994679c6a1b65e237fd44b239817fa2cf..c63b7d5b442f2be5dadd529a2f4f65302e44e792 100644 +index a9a39f0da7b09410d8171172a4219c7d509fdb99..a8fc07e06039e1418e020f7c1ad2cd36b9b94eb4 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -36,7 +36,7 @@ index 88bac31994679c6a1b65e237fd44b239817fa2cf..c63b7d5b442f2be5dadd529a2f4f6530 import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -403,6 +404,7 @@ public class ActivationRange +@@ -380,6 +381,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/unapplied-server/0075-Phantoms-burn-in-light.patch b/patches/server/0072-Phantoms-burn-in-light.patch similarity index 86% rename from patches/unapplied-server/0075-Phantoms-burn-in-light.patch rename to patches/server/0072-Phantoms-burn-in-light.patch index 38a37551d..d35474462 100644 --- a/patches/unapplied-server/0075-Phantoms-burn-in-light.patch +++ b/patches/server/0072-Phantoms-burn-in-light.patch @@ -5,10 +5,10 @@ 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 4153b621c04168f1f78c526f31a46d9b1fecf3a7..fd9cb719c0380993a506bd803128cb2d7f0c37cb 100644 +index e0b1b0106fd3bbb6764d1b0a58ab2810181cac02..1ddccb9fa438682c2ebad7c071c7a4f8dd00b463 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { Vec3 moveTargetPoint; public BlockPos anchorPoint; Phantom.AttackPhase attackPhase; @@ -16,21 +16,20 @@ index 4153b621c04168f1f78c526f31a46d9b1fecf3a7..fd9cb719c0380993a506bd803128cb2d Vec3 crystalPosition; // Purpur public Phantom(EntityType type, Level world) { -@@ -247,7 +248,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -240,7 +241,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { -- if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API +- if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API + // Purpur start -+ boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; ++ boolean burnFromDaylight = this.shouldBurnInDay && this.isSunBurnTick() && this.level().purpurConfig.phantomBurnInDaylight; + boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; + if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - shouldBurnInDay API -+ if (getRider() == null || !this.isControllable()) + // Purpur end if (getRider() == null || !this.isControllable()) // Purpur - this.setSecondsOnFire(8); + this.igniteForSeconds(8); } -@@ -660,6 +666,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -641,6 +646,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; } else if (!entityliving.isAlive()) { return false; @@ -43,7 +42,7 @@ index 4153b621c04168f1f78c526f31a46d9b1fecf3a7..fd9cb719c0380993a506bd803128cb2d } else { if (entityliving instanceof Player) { Player entityhuman = (Player) entityliving; -@@ -805,6 +817,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -786,6 +797,7 @@ public class Phantom extends FlyingMob implements Enemy { this.nextScanTick = reducedTickDelay(60); List list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); @@ -52,7 +51,7 @@ index 4153b621c04168f1f78c526f31a46d9b1fecf3a7..fd9cb719c0380993a506bd803128cb2d 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 c87c7feb140864771cbef3dcee1f89319c9a1f83..a0477b47563214152483423121523f836827306b 100644 +index 27d279d76fd3632fd023edded3b10630629ec132..dcd9f80eb69e34b514f57158568e4cb59e9860ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1123,6 +1123,9 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0076-Configurable-villager-breeding.patch b/patches/server/0073-Configurable-villager-breeding.patch similarity index 93% rename from patches/unapplied-server/0076-Configurable-villager-breeding.patch rename to patches/server/0073-Configurable-villager-breeding.patch index dae08b084..71c318976 100644 --- a/patches/unapplied-server/0076-Configurable-villager-breeding.patch +++ b/patches/server/0073-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 451443c942285b0553c87c3456e140e69586b77c..976388612d64cd137b18870119928cbd45dfd2a4 100644 +index 051940da69567274f48485f060cbc3ac21a0907f..6de74d992bd8b2845ab98d56201e7eeabd1dfc6b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -787,7 +787,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -777,7 +777,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/unapplied-server/0077-Redstone-deactivates-spawners.patch b/patches/server/0074-Redstone-deactivates-spawners.patch similarity index 91% rename from patches/unapplied-server/0077-Redstone-deactivates-spawners.patch rename to patches/server/0074-Redstone-deactivates-spawners.patch index a8235a100..41653f9a7 100644 --- a/patches/unapplied-server/0077-Redstone-deactivates-spawners.patch +++ b/patches/server/0074-Redstone-deactivates-spawners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Redstone deactivates spawners diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java -index 65c3e91ac4541c0150057dc9f012eb1ee566516e..40c199812ecf7b16fe5a17c18cb0d6d3ce258910 100644 +index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16c25add59 100644 --- a/src/main/java/net/minecraft/world/level/BaseSpawner.java +++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java -@@ -57,6 +57,7 @@ public abstract class BaseSpawner { +@@ -59,6 +59,7 @@ public abstract class BaseSpawner { } public boolean isNearPlayer(Level world, BlockPos pos) { diff --git a/patches/unapplied-server/0078-Totems-work-in-inventory.patch b/patches/server/0075-Totems-work-in-inventory.patch similarity index 94% rename from patches/unapplied-server/0078-Totems-work-in-inventory.patch rename to patches/server/0075-Totems-work-in-inventory.patch index 9f0a2c81f..1babbff8a 100644 --- a/patches/unapplied-server/0078-Totems-work-in-inventory.patch +++ b/patches/server/0075-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 dea777da2b5cb5182fd165d070dd90d579f99bea..02be3c960bc89464b589a557d4269fce8fb88766 100644 +index 9a912752b12730a8fb09f5a6ab5a8638b555e3e3..2ea60043f3bbf6cce77799f6c74ffe1f4b226374 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1640,6 +1640,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1653,6 +1653,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch similarity index 93% rename from patches/unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0076-Add-vindicator-johnny-spawn-chance.patch index 080868766..34abb4304 100644 --- a/patches/unapplied-server/0079-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch @@ -5,10 +5,10 @@ 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 c5f21eeec60e77167970ed68eec0348912a62e0e..f1acdeb3a851c0d622c5ba8ab760a70a6f97f90e 100644 +index e270da29fdab5060b6a936bba67c433a78c54b5b..61f1778d454cebaab5580179614ff48ab67b8fe6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -160,6 +160,12 @@ public class Vindicator extends AbstractIllager { +@@ -148,6 +148,12 @@ public class Vindicator extends AbstractIllager { RandomSource randomSource = world.getRandom(); this.populateDefaultEquipmentSlots(randomSource, difficulty); this.populateDefaultEquipmentEnchantments(randomSource, difficulty); diff --git a/patches/unapplied-server/0080-Dispensers-place-anvils-option.patch b/patches/server/0077-Dispensers-place-anvils-option.patch similarity index 89% rename from patches/unapplied-server/0080-Dispensers-place-anvils-option.patch rename to patches/server/0077-Dispensers-place-anvils-option.patch index 05fd1999c..50544d0c1 100644 --- a/patches/unapplied-server/0080-Dispensers-place-anvils-option.patch +++ b/patches/server/0077-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 e2e1273d787536d2fe1bdbbf8af36eb5ac220599..a3fe92e1db6755a9111ab58e84d61f429d72010f 100644 +index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..c15f3430e767e54c4953e18bb9e8dcb6283caadf 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1203,6 +1203,23 @@ public interface DispenseItemBehavior { +@@ -1048,5 +1048,22 @@ public interface DispenseItemBehavior { } } }); @@ -30,8 +30,7 @@ index e2e1273d787536d2fe1bdbbf8af36eb5ac220599..a3fe92e1db6755a9111ab58e84d61f42 + })); + // Purpur end } - - static Vec3 getEntityPokingOutOfBlockPos(BlockSource pointer, EntityType entityType, Direction direction) { + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 7b584d5c8460e90dfea250591e4ca36cb1db004a..00c4cda4ca21195c4fbfeb47f92e197be18aa4c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0081-Allow-anvil-colors.patch b/patches/server/0078-Allow-anvil-colors.patch similarity index 88% rename from patches/unapplied-server/0081-Allow-anvil-colors.patch rename to patches/server/0078-Allow-anvil-colors.patch index 37d7e9d06..2197690e8 100644 --- a/patches/unapplied-server/0081-Allow-anvil-colors.patch +++ b/patches/server/0078-Allow-anvil-colors.patch @@ -5,13 +5,13 @@ 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 9cc9925cd43c4b1b742acde9cf4fb5fe46619d24..cccd34370d76d96eddeba3de1cfc41d47f9d1f60 100644 +index 3d0a4380de7885c85d85f4ec1d4cf8a5044e93de..62a69dc13406bb0144948bf4bd265c3a28bfe14b 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -294,6 +294,54 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -279,6 +279,54 @@ public class AnvilMenu extends ItemCombinerMenu { if (!this.itemName.equals(itemstack.getHoverName().getString())) { - b1 = 1; - i += b1; + b0 = 1; + i += b0; + // Purpur start + if (this.player != null) { + org.bukkit.craftbukkit.entity.CraftHumanEntity player = this.player.getBukkitEntity(); @@ -56,15 +56,15 @@ index 9cc9925cd43c4b1b742acde9cf4fb5fe46619d24..cccd34370d76d96eddeba3de1cfc41d4 + if (removeItalics) { + component = component.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false); + } -+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(component)); ++ itemstack1.set(DataComponents.CUSTOM_NAME, io.papermc.paper.adventure.PaperAdventure.asVanilla(component)); + } + else + // Purpur end - itemstack1.setHoverName(Component.literal(this.itemName)); + itemstack1.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } - } else if (itemstack.hasCustomHoverName()) { + } 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 d943ae4f0a3d6deda1596ed4c5b8c01e3653f8a1..1f22aae24973fc8f6464c0de0188d01c8171546f 100644 +index 00c4cda4ca21195c4fbfeb47f92e197be18aa4c6..4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9 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/0082-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 92% rename from patches/unapplied-server/0082-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch index 8651cd48d..23dbd04de 100644 --- a/patches/unapplied-server/0082-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0079-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 df6306572f11762ec0d54b738c1a8a30269c9224..3e32787cc7e96e83dc408e556a92b25607d487a9 100644 +index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a456b4838d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { +@@ -471,6 +471,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { diff --git a/patches/unapplied-server/0083-Short-enderman-height.patch b/patches/server/0080-Short-enderman-height.patch similarity index 84% rename from patches/unapplied-server/0083-Short-enderman-height.patch rename to patches/server/0080-Short-enderman-height.patch index 3359afa18..bd0c0369b 100644 --- a/patches/unapplied-server/0083-Short-enderman-height.patch +++ b/patches/server/0080-Short-enderman-height.patch @@ -5,24 +5,24 @@ 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 44aa32b49fa32fbaf86625c0eed7c2e01d8f212c..e5aa1bac908f947f2ed70a05194bf30b4cb55115 100644 +index 9b3bf5ac043262c6cd00d83b750c3313122d92a9..3097529a9066841a58c899ce55b3bc0cd6af7e88 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -313,7 +313,8 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -322,7 +322,8 @@ public class EntityType implements FeatureElement, EntityTypeT private Component description; @Nullable - private ResourceLocation lootTable; + private ResourceKey lootTable; - private final EntityDimensions dimensions; + private EntityDimensions dimensions; // Purpur - remove final + public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur + private final float spawnDimensionsScale; private final FeatureFlagSet requiredFeatures; - private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error 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 2af9b2334a4baa15620b06ffddfbc60833bd4187..760a26722144da3f547802975484b01c377afe17 100644 +index 89275ac02fcfab963b520efae6135d6f5ac13465..cb307a9419399e33a895376a584456f084691965 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -440,6 +440,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -419,6 +419,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 diff --git a/patches/unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch similarity index 87% rename from patches/unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0081-Stop-squids-floating-on-top-of-water.patch index ffdc78a93..0ce118bf6 100644 --- a/patches/unapplied-server/0084-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 10a0f2b4968600f088677103b0bfbe5f69aa4428..c02c75620e256e4c129a7966a73f2d5a383fb9e2 100644 +index a99d04b820c230422bc82a3e0e094a79ab0c5c33..9a3796a69dd8745a498be5f2bb06c50355af44ce 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4462,6 +4462,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4511,6 +4511,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.yRotO = this.getYRot(); } @@ -19,13 +19,13 @@ index 10a0f2b4968600f088677103b0bfbe5f69aa4428..c02c75620e256e4c129a7966a73f2d5a + // Purpur end + public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { - if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip + 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 9f598ff84b836d10e215c7e8fe79735f7f41e32b..bed42fe33d3788151188075f8969442555263492 100644 +index e38416189d9dc72f0b5951a1f6430dbc4578c422..c562eeb5e865a57fbc595de47c5d4e2b90430026 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -75,6 +75,12 @@ public class Squid extends WaterAnimal { +@@ -73,6 +73,12 @@ public class Squid extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth); } diff --git a/patches/unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch similarity index 96% rename from patches/unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch index f3310fe8a..50348dfe0 100644 --- a/patches/unapplied-server/0085-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch @@ -5,7 +5,7 @@ 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 912cee9ec45876f831ca230b59a1be3b48ce6aa5..46910a3bdacc9df1835e16b300f9e107744d2660 100644 +index af24467ee37cfc06f692b3b02e68f6cfbaaa8d59..afe6b2170846273b41b694aa53dca4c31bf78b3f 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 { diff --git a/patches/unapplied-server/0086-Entities-can-use-portals-configuration.patch b/patches/server/0083-Entities-can-use-portals-configuration.patch similarity index 91% rename from patches/unapplied-server/0086-Entities-can-use-portals-configuration.patch rename to patches/server/0083-Entities-can-use-portals-configuration.patch index 23cc463f3..571526817 100644 --- a/patches/unapplied-server/0086-Entities-can-use-portals-configuration.patch +++ b/patches/server/0083-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8307646d2ff06ae8cde245c8d1aec259df2330a2..ca0719307e4d50b3dcfe13195f1c1e680b00350c 100644 +index 9a3796a69dd8745a498be5f2bb06c50355af44ce..a93ae9de698ce97e8603deb1075e6dc5aeaab274 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3167,7 +3167,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3220,7 +3220,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 8307646d2ff06ae8cde245c8d1aec259df2330a2..ca0719307e4d50b3dcfe13195f1c1e68 if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3873,7 +3873,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3914,7 +3914,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean canChangeDimensions() { diff --git a/patches/unapplied-server/0087-LivingEntity-broadcastItemBreak.patch b/patches/server/0084-LivingEntity-broadcastItemBreak.patch similarity index 77% rename from patches/unapplied-server/0087-LivingEntity-broadcastItemBreak.patch rename to patches/server/0084-LivingEntity-broadcastItemBreak.patch index 671e9bd02..6596842e4 100644 --- a/patches/unapplied-server/0087-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0084-LivingEntity-broadcastItemBreak.patch @@ -5,12 +5,12 @@ 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 e25c95a904820a84ba18976a30faff289682a47f..17fc6efc988bd74fc50c340eb62f8a7def2167cb 100644 +index 39c2a9f732b8e2452fd2dca07193a173d0c2ba1c..4fd98b8c39c3a989e5bf5682b936cade78a8c404 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1221,5 +1221,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1184,5 +1184,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { - getHandle().safeFallDistance = safeFallDistance; + getHandle().getAttribute(Attributes.SAFE_FALL_DISTANCE).setBaseValue(safeFallDistance); } + + @Override diff --git a/patches/unapplied-server/0088-Customizable-wither-health-and-healing.patch b/patches/server/0085-Customizable-wither-health-and-healing.patch similarity index 94% rename from patches/unapplied-server/0088-Customizable-wither-health-and-healing.patch rename to patches/server/0085-Customizable-wither-health-and-healing.patch index 6ad148bf8..0ce62c319 100644 --- a/patches/unapplied-server/0088-Customizable-wither-health-and-healing.patch +++ b/patches/server/0085-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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 51ccbf3bd77bbcf77833b39fadc6c01fd28f2131..0c7623cc87c534cf02ee78a1ffb6928a31758f6f 100644 +index 0cc32342cf6c65466dd1e45f9097ca89b01036e4..8d2894bb1ae70f63c8fa67de3e9f7c6a9c940f3e 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 -@@ -527,8 +527,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -520,8 +520,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } diff --git a/patches/unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch similarity index 90% rename from patches/unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch index 21b109b70..a123bfffa 100644 --- a/patches/unapplied-server/0089-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0086-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 a89a84f0955c5f3bee8abf529b585f04d5349de2..cd54fd87fc48ee0423263c4365ac7660a9ece741 100644 +index b02d9db8442b209a9df27e417be71b11d426878b..1c74802577e056b9023dcc2cbec5885d02fe2c92 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -708,7 +708,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -714,7 +714,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -36,10 +36,10 @@ index a89a84f0955c5f3bee8abf529b585f04d5349de2..cd54fd87fc48ee0423263c4365ac7660 ChunkGenerator chunkgenerator = worlddimension.generator(); // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -index d7bddedb19c10f62fd1f7d3128453ad706ed16be..752b38d45d59d8b3cd492246e5aa4f378a78734d 100644 +index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb83305733b480179 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -159,7 +159,17 @@ public class WanderingTraderSpawner implements CustomSpawner { +@@ -160,7 +160,17 @@ public class WanderingTraderSpawner implements CustomSpawner { int k = pos.getX() + this.random.nextInt(range * 2) - range; int l = pos.getZ() + this.random.nextInt(range * 2) - range; int i1 = world.getHeight(Heightmap.Types.WORLD_SURFACE, k, l); @@ -56,10 +56,10 @@ index d7bddedb19c10f62fd1f7d3128453ad706ed16be..752b38d45d59d8b3cd492246e5aa4f37 + } + // Purpur end - if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { + 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 6b7602954de34a114893e49e8f93665ba30ed494..283c14b3a3a7e9ec200718d6f2df7c9b1f3764a0 100644 +index beea39d7cdbca783de7248a5c40ea2c7ab02e5b5..ce5db64c233bac3800a715e66aada4740bdad95b 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 { diff --git a/patches/unapplied-server/0090-Raid-cooldown-setting.patch b/patches/server/0087-Raid-cooldown-setting.patch similarity index 78% rename from patches/unapplied-server/0090-Raid-cooldown-setting.patch rename to patches/server/0087-Raid-cooldown-setting.patch index 160b701ef..439cbff14 100644 --- a/patches/unapplied-server/0090-Raid-cooldown-setting.patch +++ b/patches/server/0087-Raid-cooldown-setting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Raid cooldown setting diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java -index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1636def75 100644 +index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e2679480d4d412c 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raids.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java -@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3; +@@ -26,6 +26,7 @@ import net.minecraft.world.phys.Vec3; public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -16,7 +16,7 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1 public final Map raidMap = Maps.newHashMap(); private final ServerLevel level; private int nextAvailableID; -@@ -54,6 +55,17 @@ public class Raids extends SavedData { +@@ -51,6 +52,17 @@ public class Raids extends SavedData { public void tick() { ++this.tick; @@ -31,25 +31,25 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1 + }); + } + // Purpur end - Iterator iterator = this.raidMap.values().iterator(); + Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -138,11 +150,13 @@ public class Raids extends SavedData { - } +@@ -122,11 +134,13 @@ public class Raids extends SavedData { + */ - if (flag) { + if (!raid.isStarted() || (raid.isInProgress() && raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel())) { // CraftBukkit - fixed a bug with raid: players could add up Bad Omen level even when the raid had finished + if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur // CraftBukkit start if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) { - player.removeEffect(MobEffects.BAD_OMEN); + player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN); return null; } + if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur - if (!this.raidMap.containsKey(raid.getId())) { + 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 320c04ee1423b5964f8ee023fc1bf76913c745e4..4bc033a3ce290b9bb64412042c642eabce2a0a5d 100644 +index ce5db64c233bac3800a715e66aada4740bdad95b..9654023afbb0569d5d814368b93b74dedda905a4 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 { diff --git a/patches/unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch similarity index 96% rename from patches/unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch index 2fa3f7291..f165920ab 100644 --- a/patches/unapplied-server/0091-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ 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 4bc033a3ce290b9bb64412042c642eabce2a0a5d..ba055361b27c83fd27e5347c26752e8f88d35793 100644 +index 9654023afbb0569d5d814368b93b74dedda905a4..8fd3f4a95dd53ace40d76be248b2dbc54806533e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -286,6 +286,39 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 92% rename from patches/unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch index d380f267c..e666b9ce9 100644 --- a/patches/unapplied-server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index cfe6a6f6bcfd7a3b29ab25f5a6745d31c18f338d..c168658d4d4ec1ddd80425e786d4435fd6576637 100644 +index c72d6bccf7d72d08d388c65936a89c92261c7860..ee746753515c9cea8dd246f4f56e6781956726c1 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -137,6 +137,10 @@ public class MobGoalHelper { @@ -20,10 +20,10 @@ index cfe6a6f6bcfd7a3b29ab25f5a6745d31c18f338d..c168658d4d4ec1ddd80425e786d4435f ignored.add("goal_selector_1"); ignored.add("goal_selector_2"); diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index cb9bc542ae73950c56fd883787f026d92dda4834..e6751c1a834453be66e891d7eb94bbb66f36008c 100644 +index 1d283484be270497859e23e3bb4ab38c09af23e6..b02cdbaa0455319b1e8a7e777e64ff4a56590388 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -123,7 +123,19 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); @@ -45,10 +45,10 @@ index cb9bc542ae73950c56fd883787f026d92dda4834..e6751c1a834453be66e891d7eb94bbb6 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 9c49b930d80a97ad76f0b93cb883f832974c76fd..1bb5eb0f75dc4509377cf54054eba34e4ffd02a9 100644 +index 555b86925b8d848fad40a838dd98607db8741e3b..3d42b2ea26217243dba96174ff0eadbcdd81a6cd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -157,7 +157,19 @@ public class Zombie extends Monster { +@@ -154,7 +154,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,7 +70,7 @@ index 9c49b930d80a97ad76f0b93cb883f832974c76fd..1bb5eb0f75dc4509377cf54054eba34e 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 79ba22306cde4e5b6a119cb81d8029d828da7bbe..6950c4f5b1b0fd203c9b7adf92d13a321a8c5af1 100644 +index 8fd3f4a95dd53ace40d76be248b2dbc54806533e..462af0111df5e245bf705f46585924e57a7217cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1850,6 +1850,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 90% rename from patches/unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch index 6cbb0a3b8..4358026f2 100644 --- a/patches/unapplied-server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch +++ b/patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index 7c29750e534eae4266bf7a63c50e3827401d6569..e8e9a3370ba07dc0ca47c8352f6f04a449f2268f 100644 +index e314f36951e9ac15c57137e24fce8c410373130a..21dfb8e91c5427ac12133de2c05d923d87adf5ba 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -36,6 +36,7 @@ public final class Ingredient implements Predicate { +@@ -41,6 +41,7 @@ public final class Ingredient implements Predicate { @Nullable private IntList stackingIds; public boolean exact; // CraftBukkit @@ -16,7 +16,7 @@ index 7c29750e534eae4266bf7a63c50e3827401d6569..e8e9a3370ba07dc0ca47c8352f6f04a4 public static final Codec CODEC = Ingredient.codec(true); public static final Codec CODEC_NONEMPTY = Ingredient.codec(false); -@@ -67,6 +68,12 @@ public final class Ingredient implements Predicate { +@@ -72,6 +73,12 @@ public final class Ingredient implements Predicate { } else if (this.isEmpty()) { return itemstack.isEmpty(); } else { diff --git a/patches/unapplied-server/0094-Flying-squids-Oh-my.patch b/patches/server/0091-Flying-squids-Oh-my.patch similarity index 92% rename from patches/unapplied-server/0094-Flying-squids-Oh-my.patch rename to patches/server/0091-Flying-squids-Oh-my.patch index e38d41e3d..866d81961 100644 --- a/patches/unapplied-server/0094-Flying-squids-Oh-my.patch +++ b/patches/server/0091-Flying-squids-Oh-my.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Flying squids! Oh my! diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index bf47cf511b5e3c0107354f289b740bd804b5f978..1330c4a4d9ff347e62a284eb8b71c107d87baf83 100644 +index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca84be6823 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -41,6 +41,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index bf47cf511b5e3c0107354f289b740bd804b5f978..1330c4a4d9ff347e62a284eb8b71c107 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 8d5f5e5ed5bc3d0d8c9403a473dff03f2b8e724f..65d0e602a9cab5d51d1a27f690524ddad72bd2a5 100644 +index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d6419b5b4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -81,6 +81,15 @@ public class Squid extends WaterAnimal { +@@ -79,6 +79,15 @@ public class Squid extends WaterAnimal { return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); } @@ -40,7 +40,7 @@ index 8d5f5e5ed5bc3d0d8c9403a473dff03f2b8e724f..65d0e602a9cab5d51d1a27f690524dda @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -153,6 +162,7 @@ public class Squid extends WaterAnimal { +@@ -151,6 +160,7 @@ public class Squid extends WaterAnimal { } if (this.isInWaterOrBubble()) { @@ -48,7 +48,7 @@ index 8d5f5e5ed5bc3d0d8c9403a473dff03f2b8e724f..65d0e602a9cab5d51d1a27f690524dda 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; -@@ -360,7 +370,7 @@ public class Squid extends WaterAnimal { +@@ -358,7 +368,7 @@ public class Squid extends WaterAnimal { int i = this.squid.getNoActionTime(); if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/patches/unapplied-server/0095-Infinity-bow-settings.patch b/patches/server/0092-Infinity-bow-settings.patch similarity index 54% rename from patches/unapplied-server/0095-Infinity-bow-settings.patch rename to patches/server/0092-Infinity-bow-settings.patch index e4d138d9d..320c752c7 100644 --- a/patches/unapplied-server/0095-Infinity-bow-settings.patch +++ b/patches/server/0092-Infinity-bow-settings.patch @@ -5,29 +5,29 @@ Subject: [PATCH] Infinity bow settings diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c8ebe6366 100644 +index 5ca843df5b4caa668953e5e36a9b20fabeb35046..9553e68f0e34de41a3f337dd4fa45d5103def8bb 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java -@@ -38,7 +38,7 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable { - float f = BowItem.getPowerForTime(j); - - if ((double) f >= 0.1D) { -- boolean flag1 = flag && itemstack1.is(Items.ARROW); -+ boolean flag1 = flag && ((itemstack1.is(Items.ARROW) && world.purpurConfig.infinityWorksWithNormalArrows) || (itemstack1.is(Items.TIPPED_ARROW) && world.purpurConfig.infinityWorksWithTippedArrows) || (itemstack1.is(Items.SPECTRAL_ARROW) && world.purpurConfig.infinityWorksWithSpectralArrows)); // Purpur if (!world.isClientSide) { - - if (!world.isClientSide) { - ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW); -@@ -132,7 +132,7 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable { - ItemStack itemstack = user.getItemInHand(hand); - boolean flag = !user.getProjectile(itemstack).isEmpty(); - -- if (!user.getAbilities().instabuild && !flag) { -+ if (!(world.purpurConfig.infinityWorksWithoutArrows && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, itemstack) > 0) && !user.getAbilities().instabuild && !flag) { // Purpur - return InteractionResultHolder.fail(itemstack); +@@ -29,7 +29,7 @@ public class BowItem extends ProjectileWeaponItem { + int i = this.getUseDuration(stack) - remainingUseTicks; + float f = getPowerForTime(i); + if (!((double)f < 0.1)) { +- List list = draw(stack, itemStack, player); ++ List list = draw(stack, itemStack, player, !((itemStack.is(Items.ARROW) && world.purpurConfig.infinityWorksWithNormalArrows) || (itemStack.is(Items.TIPPED_ARROW) && world.purpurConfig.infinityWorksWithTippedArrows) || (itemStack.is(Items.SPECTRAL_ARROW) && world.purpurConfig.infinityWorksWithSpectralArrows))); + if (!world.isClientSide() && !list.isEmpty()) { + this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null); + } +@@ -81,7 +81,7 @@ public class BowItem extends ProjectileWeaponItem { + public InteractionResultHolder use(Level world, Player user, InteractionHand hand) { + ItemStack itemStack = user.getItemInHand(hand); + boolean bl = !user.getProjectile(itemStack).isEmpty(); +- if (!user.hasInfiniteMaterials() && !bl) { ++ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY_ARROWS, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) { + return InteractionResultHolder.fail(itemStack); } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8af34a04370ebb0b62137387c7eb082443f68c5b..2122658e5f5b6d0d9019f79f6c53717f7094abc0 100644 +index 7fe8d50f7cf314477d3877826deaed07feabb4b5..848292e607c7977aec8bd81d8bc42398fdffd3dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,17 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0096-Configurable-daylight-cycle.patch b/patches/server/0093-Configurable-daylight-cycle.patch similarity index 86% rename from patches/unapplied-server/0096-Configurable-daylight-cycle.patch rename to patches/server/0093-Configurable-daylight-cycle.patch index bb0a3861a..a3b53e602 100644 --- a/patches/unapplied-server/0096-Configurable-daylight-cycle.patch +++ b/patches/server/0093-Configurable-daylight-cycle.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java -index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaaec05a2791 100644 +index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd884443c56a 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java -@@ -5,7 +5,7 @@ import net.minecraft.network.protocol.Packet; - - public class ClientboundSetTimePacket implements Packet { +@@ -10,7 +10,7 @@ public class ClientboundSetTimePacket implements Packet Date: Sun, 28 Apr 2024 00:15:35 -0700 Subject: [PATCH 101/148] 150 patches... --- ...ustable-breeding-cooldown-to-config.patch} | 12 +- ...-entity-breeding-times-configurable.patch} | 136 +++---- ...es-from-item-forms-of-entities-to-e.patch} | 78 ++-- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 12 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 6 +- ...03-Add-configurable-snowball-damage.patch} | 2 +- ...4-Changeable-Mob-Left-Handed-Chance.patch} | 16 +- .../0105-Add-boat-fall-damage-config.patch} | 6 +- ...0106-Snow-Golem-rate-of-fire-config.patch} | 6 +- ...-Configurable-disable-give-dropping.patch} | 8 +- ...illager-Clerics-to-farm-Nether-Wart.patch} | 26 +- ...ied-Piglin-death-always-counting-as.patch} | 8 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 86 ++--- ...1-Configurable-default-collar-color.patch} | 10 +- .../0112-Phantom-flames-on-swoop.patch} | 8 +- ...-to-open-even-with-a-solid-block-on.patch} | 6 +- .../0114-Implement-TPSBar.patch} | 44 +-- .../0115-Striders-give-saddle-back.patch} | 4 +- .../0116-PlayerBookTooLargeEvent.patch} | 6 +- ...herite-armor-grants-fire-resistance.patch} | 4 +- ...efing-bypass-to-everything-affected.patch} | 90 ++--- ...llow-Note-Block-sounds-when-blocked.patch} | 4 +- ...120-Add-EntityTeleportHinderedEvent.patch} | 24 +- .../0121-Farmland-trampling-changes.patch} | 4 +- ...2-Movement-options-for-armor-stands.patch} | 12 +- .../0123-Fix-stuck-in-portals.patch} | 8 +- ...ggle-for-water-sensitive-mob-damage.patch} | 348 +++++++++--------- ...5-Config-to-always-tame-in-Creative.patch} | 48 +-- .../0126-End-crystal-explosion-options.patch} | 4 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 8 +- .../0128-Dont-run-with-scissors.patch} | 22 +- .../0129-One-Punch-Man.patch} | 4 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 8 +- ...n-aggressiveness-towards-Endermites.patch} | 4 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 4 +- .../0135-Tick-fluids-config.patch} | 14 +- ...36-Config-to-disable-Llama-caravans.patch} | 6 +- ...g-to-make-Creepers-explode-on-death.patch} | 10 +- ...rable-ravager-griefable-blocks-list.patch} | 8 +- ...0139-Sneak-to-bulk-process-composter.patch | 102 +++++ .../0140-Config-for-skipping-night.patch} | 4 +- ...141-Add-config-for-villager-trading.patch} | 6 +- .../0142-Allow-infinity-on-crossbows.patch | 39 ++ .../0143-Drowning-Settings.patch} | 10 +- ...reak-individual-slabs-when-sneaking.patch} | 6 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 0 ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 6 +- ...tion-to-make-doors-require-redstone.patch} | 8 +- ...0142-Sneak-to-bulk-process-composter.patch | 107 ------ .../0145-Allow-infinity-on-crossbows.patch | 98 ----- 52 files changed, 699 insertions(+), 807 deletions(-) rename patches/{unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch => server/0098-Add-adjustable-breeding-cooldown-to-config.patch} (94%) rename patches/{unapplied-server/0102-Make-entity-breeding-times-configurable.patch => server/0099-Make-entity-breeding-times-configurable.patch} (90%) rename patches/{unapplied-server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch => server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch} (70%) rename patches/{unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (84%) rename patches/{unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (89%) rename patches/{unapplied-server/0106-Add-configurable-snowball-damage.patch => server/0103-Add-configurable-snowball-damage.patch} (95%) rename patches/{unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch => server/0104-Changeable-Mob-Left-Handed-Chance.patch} (76%) rename patches/{unapplied-server/0108-Add-boat-fall-damage-config.patch => server/0105-Add-boat-fall-damage-config.patch} (92%) rename patches/{unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch => server/0106-Snow-Golem-rate-of-fire-config.patch} (92%) rename patches/{unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch => server/0107-EMC-Configurable-disable-give-dropping.patch} (87%) rename patches/{unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (93%) rename patches/{unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (90%) rename patches/{unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch => server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch} (70%) rename patches/{unapplied-server/0114-Configurable-default-collar-color.patch => server/0111-Configurable-default-collar-color.patch} (89%) rename patches/{unapplied-server/0115-Phantom-flames-on-swoop.patch => server/0112-Phantom-flames-on-swoop.patch} (84%) rename patches/{unapplied-server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch => server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (86%) rename patches/{unapplied-server/0117-Implement-TPSBar.patch => server/0114-Implement-TPSBar.patch} (94%) rename patches/{unapplied-server/0118-Striders-give-saddle-back.patch => server/0115-Striders-give-saddle-back.patch} (93%) rename patches/{unapplied-server/0119-PlayerBookTooLargeEvent.patch => server/0116-PlayerBookTooLargeEvent.patch} (92%) rename patches/{unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch => server/0117-Full-netherite-armor-grants-fire-resistance.patch} (95%) rename patches/{unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch => server/0118-Add-mobGriefing-bypass-to-everything-affected.patch} (92%) rename patches/{unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch => server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch} (95%) rename patches/{unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch => server/0120-Add-EntityTeleportHinderedEvent.patch} (90%) rename patches/{unapplied-server/0124-Farmland-trampling-changes.patch => server/0121-Farmland-trampling-changes.patch} (95%) rename patches/{unapplied-server/0125-Movement-options-for-armor-stands.patch => server/0122-Movement-options-for-armor-stands.patch} (90%) rename patches/{unapplied-server/0126-Fix-stuck-in-portals.patch => server/0123-Fix-stuck-in-portals.patch} (90%) rename patches/{unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch => server/0124-Toggle-for-water-sensitive-mob-damage.patch} (90%) rename patches/{unapplied-server/0128-Config-to-always-tame-in-Creative.patch => server/0125-Config-to-always-tame-in-Creative.patch} (61%) rename patches/{unapplied-server/0129-End-crystal-explosion-options.patch => server/0126-End-crystal-explosion-options.patch} (97%) rename patches/{unapplied-server/0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => server/0127-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/{unapplied-server/0131-Dont-run-with-scissors.patch => server/0128-Dont-run-with-scissors.patch} (92%) rename patches/{unapplied-server/0132-One-Punch-Man.patch => server/0129-One-Punch-Man.patch} (94%) rename patches/{unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/{unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch => server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch} (93%) rename patches/{unapplied-server/0135-Add-back-player-spawned-endermite-API.patch => server/0132-Add-back-player-spawned-endermite-API.patch} (92%) rename patches/{unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch => server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch} (95%) rename patches/{unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (94%) rename patches/{unapplied-server/0138-Tick-fluids-config.patch => server/0135-Tick-fluids-config.patch} (82%) rename patches/{unapplied-server/0139-Config-to-disable-Llama-caravans.patch => server/0136-Config-to-disable-Llama-caravans.patch} (93%) rename patches/{unapplied-server/0140-Config-to-make-Creepers-explode-on-death.patch => server/0137-Config-to-make-Creepers-explode-on-death.patch} (90%) rename patches/{unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch => server/0138-Configurable-ravager-griefable-blocks-list.patch} (92%) create mode 100644 patches/server/0139-Sneak-to-bulk-process-composter.patch rename patches/{unapplied-server/0143-Config-for-skipping-night.patch => server/0140-Config-for-skipping-night.patch} (93%) rename patches/{unapplied-server/0144-Add-config-for-villager-trading.patch => server/0141-Add-config-for-villager-trading.patch} (94%) create mode 100644 patches/server/0142-Allow-infinity-on-crossbows.patch rename patches/{unapplied-server/0146-Drowning-Settings.patch => server/0143-Drowning-Settings.patch} (88%) rename patches/{unapplied-server/0147-Break-individual-slabs-when-sneaking.patch => server/0144-Break-individual-slabs-when-sneaking.patch} (93%) rename patches/{unapplied-server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch => server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch} (100%) rename patches/{unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch => server/0146-Config-to-show-Armor-Stand-arms-on-spawn.patch} (91%) rename patches/{unapplied-server/0150-Option-to-make-doors-require-redstone.patch => server/0147-Option-to-make-doors-require-redstone.patch} (92%) delete mode 100644 patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch delete mode 100644 patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch diff --git a/patches/unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch similarity index 94% rename from patches/unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch index fdaef37e8..e46937f85 100644 --- a/patches/unapplied-server/0101-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 081d1e38b7b1f286e138b0981aaa760e58761215..d94928a78d166dd3d836261b4f99fb4f533019e7 100644 +index 5193cf1d3c922d750a11e492b7636215e23ad0d6..b1f0fda942559b6d12c12a77088da6ce4a233963 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -151,7 +151,7 @@ public abstract class Animal extends AgeableMob { +@@ -146,7 +146,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -17,7 +17,7 @@ index 081d1e38b7b1f286e138b0981aaa760e58761215..d94928a78d166dd3d836261b4f99fb4f final ItemStack breedCopy = itemstack.copy(); // Paper - Fix EntityBreedEvent copying this.usePlayerItem(player, hand, itemstack); this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying -@@ -242,12 +242,20 @@ public abstract class Animal extends AgeableMob { +@@ -234,12 +234,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -42,10 +42,10 @@ index 081d1e38b7b1f286e138b0981aaa760e58761215..d94928a78d166dd3d836261b4f99fb4f 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 1e55c024a8dd7f1a5f324937bbd3f13b3ac8f076..d35e2338fb423f2f8306a1c33d808a0456c3af2a 100644 +index 2e44e9ea9558ebc1456d9bbf53561988e33ce845..edd9762e2475aa8828930ada59eb331a8e8d3970 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -191,6 +191,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -188,6 +188,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -95,7 +95,7 @@ index 1e55c024a8dd7f1a5f324937bbd3f13b3ac8f076..d35e2338fb423f2f8306a1c33d808a04 public CraftWorld getWorld() { return this.world; } -@@ -223,6 +266,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -218,6 +261,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 diff --git a/patches/unapplied-server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0099-Make-entity-breeding-times-configurable.patch similarity index 90% rename from patches/unapplied-server/0102-Make-entity-breeding-times-configurable.patch rename to patches/server/0099-Make-entity-breeding-times-configurable.patch index 76a904098..5babea8a2 100644 --- a/patches/unapplied-server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0099-Make-entity-breeding-times-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 0cc411dd39d981187c9e9a3c5eb8043b19a09b98..f7032f4ea55f5aca293c2640686238b7af0f9c80 100644 +index 0a608418f87b71d5d71706712e1f82da0d7e4d34..03e7ca83e4c28dfaa5b52bcb100bd542db105970 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -@@ -127,8 +127,10 @@ public class VillagerMakeLove extends Behavior { +@@ -125,8 +125,10 @@ public class VillagerMakeLove extends Behavior { return Optional.empty(); } // Move age setting down @@ -22,7 +22,7 @@ index 0cc411dd39d981187c9e9a3c5eb8043b19a09b98..f7032f4ea55f5aca293c2640686238b7 // 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 d94928a78d166dd3d836261b4f99fb4f533019e7..a64ab2058d4e3439bf6ee418f3192b83c346eb85 100644 +index b1f0fda942559b6d12c12a77088da6ce4a233963..7f90a0d8f65c96844df06b7c4fa3da28a6f51dd1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @@ -33,7 +33,7 @@ index d94928a78d166dd3d836261b4f99fb4f533019e7..a64ab2058d4e3439bf6ee418f3192b83 protected Animal(EntityType type, Level world) { super(type, world); -@@ -283,8 +284,10 @@ public abstract class Animal extends AgeableMob { +@@ -275,8 +276,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -47,10 +47,10 @@ index d94928a78d166dd3d836261b4f99fb4f533019e7..a64ab2058d4e3439bf6ee418f3192b83 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 c1f71bf53dac227e6b8c6dbd88473fe79b6a2c64..2b69a3e860f95d4294dda8d05126f431eb7dd5b6 100644 +index ae4b53f4cdd78368deb7d510be4936ffefce4d9c..cbcfe8177362d9b8af97f21e716a4dce9e227465 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -483,6 +483,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -472,6 +472,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.beeMaxHealth); } @@ -63,26 +63,26 @@ index c1f71bf53dac227e6b8c6dbd88473fe79b6a2c64..2b69a3e860f95d4294dda8d05126f431 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 83e715c9604efc9586171fd32c7cd2b339bc2349..cc665002c9aeaf9e5a0dbe83239757a544d0b976 100644 +index 7930e9735abf8357df737798e80b08295c2e06ec..b23d6683bab3d257febb57a6c9c8be4db926af7f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -128,6 +128,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -134,6 +134,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -189,6 +189,11 @@ public class Fox extends Animal implements VariantHolder { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.foxMaxHealth); } @@ -124,9 +124,9 @@ index a910e897cbd11fa17469642de43225eb512c1c51..4f1ae50564a7e646172b3b923d15a002 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); -@@ -1007,8 +1012,10 @@ public class Fox extends Animal implements VariantHolder { + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); +@@ -991,8 +996,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,7 +140,7 @@ index a910e897cbd11fa17469642de43225eb512c1c51..4f1ae50564a7e646172b3b923d15a002 this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 4c3a4a5e79412a570b0dc1fdeaf540b83eb84b82..b699f88ce9480ef4da5bfb97004a9c5f62d58894 100644 +index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f1028c346a5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -86,6 +86,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -142,6 +142,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 106600ad9712d9a4fdf6770e81b40606b2f9b9b2..c25776ef9805f3f4e31ca5b027e65775 @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 1d69558cccc6add5f02f1ff070c985bd5ec406c0..df7deec204ebf99afdbfe49f9a113857dcd413c6 100644 +index b68886cc72d3055e7745fe4a955192bbad90dc13..c3cc949291d11ae707fa5175d666df2ee81cdcce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -141,6 +141,11 @@ public class Sheep extends Animal implements Shearable { +@@ -139,6 +139,11 @@ public class Sheep extends Animal implements Shearable { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.sheepMaxHealth); } @@ -268,10 +268,10 @@ index 1d69558cccc6add5f02f1ff070c985bd5ec406c0..df7deec204ebf99afdbfe49f9a113857 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 31ed37796a4c88ecf514f298631f37210daf929a..ccb1ed3f9c3a15489a715e684c0f15d2e67b556f 100644 +index b8dcf3d632c79585ec7e9f50fa040fa9fac5d7c5..a577ec78b2f5bca0166277c499da4fa7988d5395 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -108,6 +108,11 @@ public class Turtle extends Animal { +@@ -109,6 +109,11 @@ public class Turtle extends Animal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.turtleMaxHealth); } @@ -284,10 +284,10 @@ index 31ed37796a4c88ecf514f298631f37210daf929a..ccb1ed3f9c3a15489a715e684c0f15d2 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index b5c1efc1a67cdf163420b55e49baef9d78d9518f..ac184dce0f81ee0437111755c08e15c84b0dadff 100644 +index 8aaac4e86ec6d9c40999f6198cda7d367ece54e3..4212c3921a4059c539ca37f9609ef50538bc1fae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -132,6 +132,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -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 74ca2442008b0dea9f9762bbec8d6de1390f2582..baca84088350c82569fb7969136c65bbc4c52f5b 100644 +index 07a5599a9370ba167e985006d74caa3c80288e28..ed67fcd2b67bfe581863cc6748692c3348f6c883 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 -@@ -93,6 +93,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -89,6 +89,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater; } @@ -331,10 +331,10 @@ index 74ca2442008b0dea9f9762bbec8d6de1390f2582..baca84088350c82569fb7969136c65bb @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 709a5b786b56b92e00e25fbc9cf7ac07f093c5a9..907cdc32c30291f5668c806b874da0fbe0754738 100644 +index b6a4b4e66ca67e4dcb4b14a13ab6586a94e1b020..b0f8115b328eda1e3571051870b5310c5a7e115a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -163,6 +163,10 @@ public class Frog extends Animal implements VariantHolder { +@@ -162,6 +162,10 @@ public class Frog extends Animal implements VariantHolder> { } // Purpur end @@ -346,10 +346,10 @@ index 709a5b786b56b92e00e25fbc9cf7ac07f093c5a9..907cdc32c30291f5668c806b874da0fb protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 961f808caa60aba70075572161bcb91cd7201008..0282498c7375a73b6982efb02f3cf3215f4211b0 100644 +index 9cd8220a1e5e43c141ad27df4969e66ef3746ecd..84c04603d50e190430e4e6cf2a7b613537a0c341 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -109,6 +109,11 @@ public class Goat extends Animal { +@@ -108,6 +108,11 @@ public class Goat extends Animal { } // Purpur end @@ -362,7 +362,7 @@ index 961f808caa60aba70075572161bcb91cd7201008..0282498c7375a73b6982efb02f3cf321 protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index f623586530e9e7783653b95c8c30d07d5eea896f..5b0b7c6bcd01d86552f1967489c5538780b69525 100644 +index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124048e8129 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -37,6 +37,11 @@ public class Donkey extends AbstractChestedHorse { @@ -378,10 +378,10 @@ index f623586530e9e7783653b95c8c30d07d5eea896f..5b0b7c6bcd01d86552f1967489c55387 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 2971b868210ffb3390d19c7f8079fcc60f7d00b0..02748a7fdf41529fb86e916ae421a1317e1c3c7f 100644 +index 9ad0d3972d1970b11687da174a83e3a0a4180c0e..16d4278d49dad84f72c968ca36914e93d46dc5f6 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 -@@ -62,6 +62,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -66,6 +66,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return generateSpeed(this.level().purpurConfig.horseMovementSpeedMin, this.level().purpurConfig.horseMovementSpeedMax); } @@ -394,7 +394,7 @@ index 2971b868210ffb3390d19c7f8079fcc60f7d00b0..02748a7fdf41529fb86e916ae421a131 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 b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660..e11fc274f893d501235422839301a5128268199d 100644 +index 05614fb50a5509331ac15bb819e827365a4cefcf..81d614cf14512464b376575fd2d7e7fbf93d9e03 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 @@ -140,6 +140,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 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 c34701f95580e4cf45fe086115563127432a28c5..2363d9eaad655389c7b7d67d545ef8025f550431 100644 +index da0d1c9a1c4ae081bff9ca4230c9a1503885c354..9af8fcf6abb9b768829592bc1b091ebe4599ed2e 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -268,7 +268,13 @@ public class ItemFrame extends HangingEntity { +@@ -262,7 +262,13 @@ public class ItemFrame extends HangingEntity { } if (alwaysDrop) { - this.spawnAtLocation(this.getFrameItemStack()); + // Purpur start + final ItemStack itemFrame = this.getFrameItemStack(); -+ if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ itemFrame.setHoverName(this.getCustomName()); ++ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { ++ itemFrame.set(DataComponents.CUSTOM_NAME, null); + } + this.spawnAtLocation(itemFrame); + // Purpur end @@ -38,18 +37,18 @@ index c34701f95580e4cf45fe086115563127432a28c5..2363d9eaad655389c7b7d67d545ef802 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 10ee43de05d9f4e0ab980ee5069fe59c0f137403..af07901daaf6a0e5cd7e4b1e07fb491566807932 100644 +index 40e7112669abb58a0ab6df1846afec3979e95e55..0ac22b77f021b4ab40cabd19132fec5a0cbf4f3e 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -155,7 +155,13 @@ public class Painting extends HangingEntity implements VariantHolder { +@@ -963,7 +963,13 @@ public class Boat extends VehicleEntity implements VariantHolder { @Override public ItemStack getPickResult() { - return new ItemStack(this.getDropItem()); + // Purpur start + final ItemStack boat = new ItemStack(this.getDropItem()); -+ if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ boat.setHoverName(this.getCustomName()); ++ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { ++ boat.set(DataComponents.CUSTOM_NAME, null); + } + return boat; + // Purpur end @@ -76,7 +75,7 @@ index 96c6b4c37a556da8a4c6807db121c44c3f1b0729..81e0930acccd014e977b88d22e103466 public static enum Type implements StringRepresentable { diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java -index 7cffc64573008502bdd14ae4906fe51166b12fb3..1feafdbb48cf760cb6ebf95d5be2c32bdb1ad44f 100644 +index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..dfe8473a880cbddfc3ac6a9c97f1a500624eeb38 100644 --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java @@ -58,6 +58,14 @@ public class ArmorStandItem extends Item { @@ -84,52 +83,43 @@ index 7cffc64573008502bdd14ae4906fe51166b12fb3..1feafdbb48cf760cb6ebf95d5be2c32b } // CraftBukkit end + // Purpur start -+ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { -+ entityarmorstand.setCustomName(itemstack.getHoverName()); -+ if (world.purpurConfig.armorstandSetNameVisible) { -+ entityarmorstand.setCustomNameVisible(true); -+ } ++ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) { ++ entityarmorstand.setCustomName(null); ++ } ++ if (world.purpurConfig.armorstandSetNameVisible) { ++ entityarmorstand.setCustomNameVisible(true); + } + // Purpur end worldserver.addFreshEntityWithPassengers(entityarmorstand); world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F); entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer()); diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java -index 67a5a201d0b26ca7b27e6d0c3ffb9f8b6e16bce0..ec3d60b561de45349b705b7f14592be930af4b91 100644 +index eb74d45ad458b80cf8455297c3bc550186adaea3..ef01856c487e4ab982996e01537618233592ac32 100644 --- a/src/main/java/net/minecraft/world/item/BoatItem.java +++ b/src/main/java/net/minecraft/world/item/BoatItem.java -@@ -71,6 +71,11 @@ public class BoatItem extends Item { +@@ -72,6 +72,11 @@ public class BoatItem extends Item { entityboat.setVariant(this.type); entityboat.setYRot(user.getYRot()); + // Purpur start -+ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { -+ entityboat.setCustomName(itemstack.getHoverName()); ++ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) { ++ entityboat.setCustomName(null); + } + // Purpur end if (!world.noCollision(entityboat, entityboat.getBoundingBox())) { return InteractionResultHolder.fail(itemstack); } else { diff --git a/src/main/java/net/minecraft/world/item/HangingEntityItem.java b/src/main/java/net/minecraft/world/item/HangingEntityItem.java -index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e7417dfc1cd 100644 +index 530167ce8e5bb72a418f8ec61411e38a5892fd72..35dc7546793dba34bf6debad3f214f61a8fb4f4e 100644 --- a/src/main/java/net/minecraft/world/item/HangingEntityItem.java +++ b/src/main/java/net/minecraft/world/item/HangingEntityItem.java -@@ -48,7 +48,7 @@ public class HangingEntityItem extends Item { - return InteractionResult.FAIL; - } else { - Level world = context.getLevel(); -- Object object; -+ Entity object; // Purpur +@@ -73,6 +73,11 @@ public class HangingEntityItem extends Item { - if (this.type == EntityType.PAINTING) { - Optional optional = Painting.create(world, blockposition1, enumdirection); -@@ -72,6 +72,11 @@ public class HangingEntityItem extends Item { - - if (nbttagcompound != null) { - EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, nbttagcompound); + if (!customdata.isEmpty()) { + EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, customdata); + // Purpur start -+ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { -+ object.setCustomName(itemstack.getHoverName()); ++ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) { ++ ((Entity) object).setCustomName(null); + } + // Purpur end } diff --git a/patches/unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 84% rename from patches/unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 6e974047f..9f1520e4e 100644 --- a/patches/unapplied-server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java -index a0b3c2d3b3f86ecd6cb80ff767839d29ca4f4f68..61b4430d6dd73b5406c4879e41ff80a1b6f67f84 100644 +index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8e4459902 100644 --- a/src/main/java/net/minecraft/world/item/NameTagItem.java +++ b/src/main/java/net/minecraft/world/item/NameTagItem.java -@@ -20,6 +20,7 @@ public class NameTagItem extends Item { +@@ -23,6 +23,7 @@ public class NameTagItem extends Item { if (!event.callEvent()) return InteractionResult.PASS; LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); + if (user.level().purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur - if (event.isPersistent() && newEntity instanceof Mob) { - ((Mob) newEntity).setPersistenceRequired(); - // Paper end - Add PlayerNameEntityEvent + if (event.isPersistent() && newEntity instanceof Mob mob) { + // Paper end - Add PlayerNameEntityEvent + mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ac5c8b427e2615b7522f745d431e78ff784d90c..a2b22b2b96cc476e7ed7b804ea175833853a9495 100644 +index 2d9429ef5884f0ee542c2fb197ae263c2e5d6577..57abd6df4548586ad22c77249d99201662352a3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 89% rename from patches/unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index b803c2a6a..ad36279f0 100644 --- a/patches/unapplied-server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 760a26722144da3f547802975484b01c377afe17..c8f1d2de8682761ef8d4d50302c211f32b086783 100644 +index cb307a9419399e33a895376a584456f084691965..052a0c168268b7e788953063f54c3769023f3c03 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -501,7 +501,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -478,7 +478,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -21,7 +21,7 @@ index 760a26722144da3f547802975484b01c377afe17..c8f1d2de8682761ef8d4d50302c211f3 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 725c942c6c9b26c9fa0b3aeb65f51a34996f72d3..b2c8ec43768c1a3243bca0998350400d8ea51b89 100644 +index 57abd6df4548586ad22c77249d99201662352a3a..ed2bc4524167521bdfb1b9c516106b14b4b05e50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -833,6 +833,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0106-Add-configurable-snowball-damage.patch b/patches/server/0103-Add-configurable-snowball-damage.patch similarity index 95% rename from patches/unapplied-server/0106-Add-configurable-snowball-damage.patch rename to patches/server/0103-Add-configurable-snowball-damage.patch index 76ee96d82..40c99b476 100644 --- a/patches/unapplied-server/0106-Add-configurable-snowball-damage.patch +++ b/patches/server/0103-Add-configurable-snowball-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable snowball damage diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index 5e82549ea2e80b3968b793b7b4b685c4891e9a91..8d1591c3b29e02794f6f66b742ec6a121920ad71 100644 +index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caaa93ce664 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -58,7 +58,7 @@ public class Snowball extends ThrowableItemProjectile { diff --git a/patches/unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch similarity index 76% rename from patches/unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch index 78f269413..8b6a20da9 100644 --- a/patches/unapplied-server/0107-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 20e8c3c88891f0fe20556b700fab5122682b2bdb..050d6705cfa7ce59b85a3120a0569b3e8f9be6b7 100644 +index e7251ac940b49564c83b4b603e49c3990fc85db1..34d00acc43d2541307aa90a77a3c5d19a3057a94 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1312,7 +1312,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1438,7 +1438,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti RandomSource randomsource = world.getRandom(); - this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); -- if (randomsource.nextFloat() < 0.05F) { -+ if (randomsource.nextFloat() < world.getLevel().purpurConfig.entityLeftHandedChance) { // Purpur - this.setLeftHanded(true); - } else { - this.setLeftHanded(false); + this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.ADD_MULTIPLIED_BASE)); +- this.setLeftHanded(randomsource.nextFloat() < 0.05F); ++ this.setLeftHanded(randomsource.nextFloat() < world.getLevel().purpurConfig.entityLeftHandedChance); // Purpur + return entityData; + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 1f41804ec120b2e50ef99ef50d41d44a91ba3814..e84e5007a0952a77b991ff6c00549af28aa54230 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0108-Add-boat-fall-damage-config.patch b/patches/server/0105-Add-boat-fall-damage-config.patch similarity index 92% rename from patches/unapplied-server/0108-Add-boat-fall-damage-config.patch rename to patches/server/0105-Add-boat-fall-damage-config.patch index 921c35c1e..c484f066f 100644 --- a/patches/unapplied-server/0108-Add-boat-fall-damage-config.patch +++ b/patches/server/0105-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fd48f333747ec79083adea4053e643d93efca714..ea37e30846c496f92ceab7cee0cb19ffd82cfc0a 100644 +index 03b206289d103a36d19dcf3154f10ad98f976ba2..fe250c154aed8b10e33c6b916cabedb0dda3d5d6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1112,7 +1112,16 @@ public class ServerPlayer extends Player { +@@ -1189,7 +1189,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -27,7 +27,7 @@ index fd48f333747ec79083adea4053e643d93efca714..ea37e30846c496f92ceab7cee0cb19ff if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1792d16fe745c22a2408ca7b6446348563e5b63..68fa6b3492d9ad309f305560afe6f767c9c56fe0 100644 +index e84e5007a0952a77b991ff6c00549af28aa54230..ca268aa514e7581d134083fe61e8a93fa0a00171 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/server/0106-Snow-Golem-rate-of-fire-config.patch similarity index 92% rename from patches/unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0106-Snow-Golem-rate-of-fire-config.patch index 4be5b604d..9e85504e1 100644 --- a/patches/unapplied-server/0109-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0106-Snow-Golem-rate-of-fire-config.patch @@ -10,10 +10,10 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to 0, snow golems won't shoot any snowballs. diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index cf68f12da22cb9b0980c21e90caf4dea62769fa5..6fac5dbbbd9600e82b1dd1496680f551ab44313e 100644 +index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed1ace0543 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -79,7 +79,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -77,7 +77,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -23,7 +23,7 @@ index cf68f12da22cb9b0980c21e90caf4dea62769fa5..6fac5dbbbd9600e82b1dd1496680f551 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fee388e9ba11e0555ba6e2809b82b29e6f3be5bf..7bcec0062d777134fdc963ed4e8874730df36711 100644 +index ca268aa514e7581d134083fe61e8a93fa0a00171..c034b4686a1f5c67daef7ece163b92f54c6813d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1606,6 +1606,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch b/patches/server/0107-EMC-Configurable-disable-give-dropping.patch similarity index 87% rename from patches/unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0107-EMC-Configurable-disable-give-dropping.patch index d78d867a1..4d8215d99 100644 --- a/patches/unapplied-server/0110-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0107-EMC-Configurable-disable-give-dropping.patch @@ -8,17 +8,17 @@ purpur.yml to disable the /give command from dropping items on the floor when a player's inventory is full. diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java -index 1b459a8ee8a6bc039e742d65796bc76660a1c765..599172b994d75484f7c7e0ce6d3d3d771c1c44d0 100644 +index 47355158e5e762540a10dc67b23092a0fc53bce3..9f1c8a62bda242781a0966fa2fc01534261423c7 100644 --- a/src/main/java/net/minecraft/server/commands/GiveCommand.java +++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java -@@ -59,6 +59,7 @@ public class GiveCommand { +@@ -92,6 +92,7 @@ public class GiveCommand { boolean flag = entityplayer.getInventory().add(itemstack1); ItemEntity entityitem; + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemstack1.isEmpty()) { - itemstack1.setCount(1); - entityitem = entityplayer.drop(itemstack1, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event + entityitem = entityplayer.drop(itemstack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event + if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 8f98f665ec20c2df23a6f8bd891c502aba9a6ada..65c31389566007a11934eff92162a4c410a25213 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 93% rename from patches/unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index e118bb555..1642e6201 100644 --- a/patches/unapplied-server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,10 +8,10 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa518badab 100644 +index 2ade08d1466660ee1787fa97908002ef56389712..4fa4ec34963730507253182cad1c2bf04090ad50 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -40,6 +40,7 @@ public class HarvestFarmland extends Behavior { +@@ -41,6 +41,7 @@ public class HarvestFarmland extends Behavior { private long nextOkStartTime; private int timeWorkedSoFar; private final List validFarmlandAroundVillager = Lists.newArrayList(); @@ -19,7 +19,7 @@ index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa public HarvestFarmland() { super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); -@@ -48,9 +49,10 @@ public class HarvestFarmland extends Behavior { +@@ -49,9 +50,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; @@ -31,7 +31,7 @@ index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa BlockPos.MutableBlockPos blockposition_mutableblockposition = entity.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); -@@ -81,6 +83,7 @@ public class HarvestFarmland extends Behavior { +@@ -82,6 +84,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(pos.below()).getBlock(); @@ -39,7 +39,7 @@ index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa return block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) || iblockdata.isAir() && block1 instanceof FarmBlock; } -@@ -106,20 +109,20 @@ public class HarvestFarmland extends Behavior { +@@ -107,20 +110,20 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(this.aboveFarmlandPos.below()).getBlock(); @@ -63,7 +63,7 @@ index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa Item item = itemstack.getItem(); if (item instanceof BlockItem) { -@@ -135,7 +138,7 @@ public class HarvestFarmland extends Behavior { +@@ -136,7 +139,7 @@ public class HarvestFarmland extends Behavior { } if (flag) { @@ -73,10 +73,10 @@ index d3a2a6dee2d83b3df0ddc521c080f7d72b709461..66a568e6803b91040f3933d4598c52fa if (itemstack.isEmpty()) { inventorysubcontainer.setItem(j, ItemStack.EMPTY); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java -index e215491ebaebfc51445adc01452ce768fff3e2dc..ff32c022fa213142ca4b3ff8e74b6eba8ef52169 100644 +index 8508ac7de8cda3127b73e11ff4aee62502e65ead..973518f939f5cd1b57589cbbbb01f199e5ebe73c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java -@@ -61,6 +61,12 @@ public class TradeWithVillager extends Behavior { +@@ -59,6 +59,12 @@ public class TradeWithVillager extends Behavior { throwHalfStack(entity, ImmutableSet.of(Items.WHEAT), villager); } @@ -90,10 +90,10 @@ index e215491ebaebfc51445adc01452ce768fff3e2dc..ff32c022fa213142ca4b3ff8e74b6eba throwHalfStack(entity, this.trades, villager); } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -index d2917f9b215919890f28b513601863ccaced17c7..58338e240079f2de1669e8c2ce839451511feafd 100644 +index f000a6c1e61198e6dd06ae5f084d12fdf309f50a..3091d985ba9c55d404332576320718840538722e 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -@@ -49,8 +49,13 @@ public class VillagerGoalPackages { +@@ -52,8 +52,13 @@ public class VillagerGoalPackages { } public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speed) { @@ -136,10 +136,10 @@ index a0e0692d17760f440fe81d52887284c787e562db..ab9bebc07b5228dbc0d3ba4b0f7d1bbe brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 976388612d64cd137b18870119928cbd45dfd2a4..430e660f74ee523d0bb98e21784f32158495de7a 100644 +index 6de74d992bd8b2845ab98d56201e7eeabd1dfc6b..f7d8f672a680cf2dfebba5677f97895e4a8c209f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -225,7 +225,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -223,7 +223,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index 976388612d64cd137b18870119928cbd45dfd2a4..430e660f74ee523d0bb98e21784f3215 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -980,6 +980,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -970,6 +970,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { diff --git a/patches/unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 90% rename from patches/unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index ed1e1f353..852c71611 100644 --- a/patches/unapplied-server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -13,10 +13,10 @@ to the Piglin being angry, even though the player never hit them. This patch adds a toggle to disable this behavior. diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793fa829755 100644 +index 75c34d9fcc4b33d30b18f1ce4c8749a068744abc..6be751e2d434982a35bbbece4f4fc4631fb3d8e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -148,7 +148,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -146,7 +146,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.maybeAlertOthers(); } @@ -25,7 +25,7 @@ index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793 this.lastHurtByPlayerTime = this.tickCount; } -@@ -203,7 +203,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -201,7 +201,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.ticksUntilNextAlert = ZombifiedPiglin.ALERT_INTERVAL.sample(this.random); } @@ -35,7 +35,7 @@ index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 743f53357131695b89cb71c0c126f2e53a46c9f1..6f682def96c6783d0ffc9f285fc397de1f6b148f 100644 +index aebeb25fcb6b9a72ad52d249f8df794c3f5cce11..83d1581201ee97547d6d3bfdf3926e74432d6e37 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2054,6 +2054,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 70% rename from patches/unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch index 928ff58d1..79b91e158 100644 --- a/patches/unapplied-server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,63 +7,27 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f698354a205b0b 100644 +index 4212c3921a4059c539ca37f9609ef50538bc1fae..bdfa848bff4fac6dcf590aefa958e2ce31294bad 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; - import net.minecraft.network.syncher.EntityDataSerializers; - import net.minecraft.network.syncher.SynchedEntityData; - import net.minecraft.server.level.ServerLevel; -+import net.minecraft.server.level.ServerPlayer; - import net.minecraft.sounds.SoundEvent; - import net.minecraft.sounds.SoundEvents; - import net.minecraft.tags.BlockTags; -@@ -17,9 +18,12 @@ import net.minecraft.util.Mth; - import net.minecraft.util.RandomSource; - import net.minecraft.util.TimeUtil; - import net.minecraft.util.valueproviders.UniformInt; -+import net.minecraft.world.DifficultyInstance; +@@ -30,6 +30,8 @@ import net.minecraft.world.DifficultyInstance; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.AgeableMob; + import net.minecraft.world.entity.Crackiness; import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityDimensions; -@@ -29,6 +33,7 @@ import net.minecraft.world.entity.Mob; - import net.minecraft.world.entity.MobSpawnType; - import net.minecraft.world.entity.NeutralMob; - import net.minecraft.world.entity.Pose; -+import net.minecraft.world.entity.SpawnGroupData; - import net.minecraft.world.entity.TamableAnimal; - import net.minecraft.world.entity.ai.attributes.AttributeSupplier; - import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -37,6 +42,7 @@ import net.minecraft.world.entity.ai.goal.BegGoal; - import net.minecraft.world.entity.ai.goal.BreedGoal; - import net.minecraft.world.entity.ai.goal.FloatGoal; - import net.minecraft.world.entity.ai.goal.FollowOwnerGoal; -+import net.minecraft.world.entity.ai.goal.Goal; - import net.minecraft.world.entity.ai.goal.LeapAtTargetGoal; - import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; - import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; -@@ -64,6 +70,7 @@ import net.minecraft.world.item.ItemStack; - import net.minecraft.world.item.Items; - import net.minecraft.world.level.Level; - import net.minecraft.world.level.LevelAccessor; -+import net.minecraft.world.level.ServerLevelAccessor; - import net.minecraft.world.level.block.state.BlockState; - import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.level.pathfinder.BlockPathTypes; -@@ -86,6 +93,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -104,6 +106,37 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder RABID_PREDICATE = entity -> entity instanceof ServerPlayer || entity instanceof Mob; -+ private final Goal PATHFINDER_VANILLA = new NonTameRandomTargetGoal<>(this, Animal.class, false, PREY_SELECTOR); -+ private final Goal PATHFINDER_RABID = new NonTameRandomTargetGoal<>(this, LivingEntity.class, false, RABID_PREDICATE); ++ private static final Predicate RABID_PREDICATE = entity -> entity instanceof net.minecraft.server.level.ServerPlayer || entity instanceof Mob; ++ private final net.minecraft.world.entity.ai.goal.Goal PATHFINDER_VANILLA = new NonTameRandomTargetGoal<>(this, Animal.class, false, PREY_SELECTOR); ++ private final net.minecraft.world.entity.ai.goal.Goal PATHFINDER_RABID = new NonTameRandomTargetGoal<>(this, LivingEntity.class, false, RABID_PREDICATE); + private static final class AvoidRabidWolfGoal extends AvoidEntityGoal { + private final Wolf wolf; + @@ -91,9 +55,9 @@ index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f69835 + } + // Purpur end private static final float START_HEALTH = 8.0F; - private static final float TAME_HEALTH = 20.0F; - private float interestedAngle; -@@ -137,6 +175,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { + private static final float TAME_HEALTH = 40.0F; + private static final float ARMOR_REPAIR_UNIT = 0.125F; +@@ -156,6 +189,37 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Llama.class, 24.0F, 1.5D, 1.5D)); + this.goalSelector.addGoal(3, new AvoidRabidWolfGoal(this, 24.0F, 1.5D, 1.5D)); // Purpur this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -157,7 +227,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -176,7 +241,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Player.class, 10, true, false, this::isAngryAt)); @@ -148,15 +112,15 @@ index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f69835 this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -184,6 +254,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -219,6 +284,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder { +@@ -357,6 +357,14 @@ public class Cat extends TamableAnimal implements VariantHolder implements +@@ -343,6 +343,7 @@ public class ChestBlock extends AbstractChestBlock implements } private static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) { @@ -17,7 +17,7 @@ index 9804ee2020e5cef23d3f5174d153fc149e611503..3a5e5cf88c5592e1bc3e6dc9eced2d1d return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6bd5bcebc0d5a080ebc5d711fb7a942576a26f9c..ef40f177856981c16c667c202480591ad1334109 100644 +index 048d8ae2a0d440a01beadcd0ce848d4dc2e490be..841a4be2169e0e39abdcb874dd97d915db993459 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -419,6 +419,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0117-Implement-TPSBar.patch b/patches/server/0114-Implement-TPSBar.patch similarity index 94% rename from patches/unapplied-server/0117-Implement-TPSBar.patch rename to patches/server/0114-Implement-TPSBar.patch index 60df30ee8..ff8040e34 100644 --- a/patches/unapplied-server/0117-Implement-TPSBar.patch +++ b/patches/server/0114-Implement-TPSBar.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 27b3093aba19e457c7b83dd42dce4e546761644b..9c335df92b0a6c7705c9def89ba5c320d2c8ed03 100644 +index 6af3e1e08048869ac28ab4a93e03d086872f866b..d0a81669ac20dc86e888aa34e246c251b8886ba2 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -253,6 +253,7 @@ public class Commands { +@@ -255,6 +255,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 27b3093aba19e457c7b83dd42dce4e546761644b..9c335df92b0a6c7705c9def89ba5c320 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 808ec6b3fa06dd0de76e78ec832894b2570eef8c..69af88f3ed690cbb751d367171c4cf6aa0ee2fca 100644 +index 6dd29845955b65e269a0487501330917effe7688..b68db217c8765fa029244bf2701757bd31a5db2b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1052,6 +1052,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -569,6 +570,7 @@ public class ServerPlayer extends Player { +@@ -685,6 +686,7 @@ public class ServerPlayer extends Player { + }); + } + ++ nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur + } + + // CraftBukkit start - World fallback code, either respawn location or global spawn +@@ -1182,6 +1184,7 @@ public class ServerPlayer extends Player { } } @@ -60,15 +68,7 @@ index fbf1b37a0328d72c54331f8b567088731e5cc5d0..a30732576b86bcf9c56e7d0ced8eb849 } @Override -@@ -635,6 +637,7 @@ public class ServerPlayer extends Player { - } - this.getBukkitEntity().setExtraData(nbt); // CraftBukkit - -+ nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur - } - - // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2878,5 +2881,13 @@ public class ServerPlayer extends Player { +@@ -2986,5 +2989,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -83,10 +83,10 @@ index fbf1b37a0328d72c54331f8b567088731e5cc5d0..a30732576b86bcf9c56e7d0ced8eb849 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 8d4e080540fb24b434e6d01eee6e7c2116c66804..89ba5789c6d6e4fe8360a854f0a6123036a5a792 100644 +index 338808ba1138f62d89f3f1338a4c5068426df0e4..f2a7eba2618ea9c1acaf93c0ef8f6f5f737de6fe 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -487,6 +487,7 @@ public abstract class PlayerList { +@@ -486,6 +486,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -94,7 +94,7 @@ index 8d4e080540fb24b434e6d01eee6e7c2116c66804..89ba5789c6d6e4fe8360a854f0a61230 PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -599,6 +600,7 @@ public abstract class PlayerList { +@@ -597,6 +598,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent diff --git a/patches/unapplied-server/0118-Striders-give-saddle-back.patch b/patches/server/0115-Striders-give-saddle-back.patch similarity index 93% rename from patches/unapplied-server/0118-Striders-give-saddle-back.patch rename to patches/server/0115-Striders-give-saddle-back.patch index e080aed53..136f5e454 100644 --- a/patches/unapplied-server/0118-Striders-give-saddle-back.patch +++ b/patches/server/0115-Striders-give-saddle-back.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Striders give saddle back diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 10136a5062d154456c962e7d1a99c2dedbd568ed..64503362c42daa39dcfa270bc50b0e2187f13a01 100644 +index 5f1166ccd64509a70323e2713f3ab58674d83105..741eedcd9e0e29b57d2b3caf5aef1aef18ae5118 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -484,6 +484,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -29,7 +29,7 @@ index 10136a5062d154456c962e7d1a99c2dedbd568ed..64503362c42daa39dcfa270bc50b0e21 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1027887398a348e210830add7b77f99236512256..7cb9381590a24f24099b8ad87f094b1f73f1e624 100644 +index 841a4be2169e0e39abdcb874dd97d915db993459..fa32fa58ef52adf16f898b11704ed531d95d1ec6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0116-PlayerBookTooLargeEvent.patch similarity index 92% rename from patches/unapplied-server/0119-PlayerBookTooLargeEvent.patch rename to patches/server/0116-PlayerBookTooLargeEvent.patch index f40326c75..fdf759227 100644 --- a/patches/unapplied-server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0116-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 17d3d4caa010c97d0c78f6286140cb44c75a8b40..79034a8fdf8d8d71056bec84b05ad70ae5ceb99e 100644 +index e467ad2abcc32d86821ee3f99c82460095b40fba..9274a9eb5597a84519dd81367fa6f42a20d7e56c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1165,10 +1165,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1183,10 +1183,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -24,7 +24,7 @@ index 17d3d4caa010c97d0c78f6286140cb44c75a8b40..79034a8fdf8d8d71056bec84b05ad70a server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1192,6 +1197,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1210,6 +1215,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch similarity index 95% rename from patches/unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch index 5a5b75daa..0a5d19af6 100644 --- a/patches/unapplied-server/0120-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e68ed7339d8aed2b97e310edeee3960611ed7bf1..73f8aeb1b5253cfd7d5502d506677a3ef906625e 100644 +index a838f339dd0085660164b0eb1597e0a14e4de6f4..e7f45fe435f679afb4fabe657922d7354183c6fb 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -369,6 +369,16 @@ public abstract class Player extends LivingEntity { +@@ -381,6 +381,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } diff --git a/patches/unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 92% rename from patches/unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch index 3c69b3f74..cb764f6d7 100644 --- a/patches/unapplied-server/0121-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 708b01fa5a86e736fcb110d1a5c0efafde600964..787a2d1b8c887e17f9f9565c292c585e996ca1d2 100644 +index 2ea60043f3bbf6cce77799f6c74ffe1f4b226374..dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1831,7 +1831,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 708b01fa5a86e736fcb110d1a5c0efafde600964..787a2d1b8c887e17f9f9565c292c585e BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 050d6705cfa7ce59b85a3120a0569b3e8f9be6b7..56ba7ac3d9d1f65de84f98eb724761d6bb374d47 100644 +index 34d00acc43d2541307aa90a77a3c5d19a3057a94..77cf0d92212d11b9036f9f9cf23b23f71f1d590d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -706,7 +706,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -748,7 +748,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti public void aiStep() { super.aiStep(); this.level().getProfiler().push("looting"); @@ -31,10 +31,10 @@ index 050d6705cfa7ce59b85a3120a0569b3e8f9be6b7..56ba7ac3d9d1f65de84f98eb724761d6 List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); Iterator iterator = list.iterator(); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 66a568e6803b91040f3933d4598c52fa518badab..a1acc479c9d6a838e3180da3ac8a3a02d22db5c1 100644 +index 4fa4ec34963730507253182cad1c2bf04090ad50..8d4e206aa05b95b7bfec5d23496085cf55a3e1de 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -47,7 +47,7 @@ public class HarvestFarmland extends Behavior { +@@ -48,7 +48,7 @@ public class HarvestFarmland extends Behavior { } protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { @@ -79,7 +79,7 @@ index 4e2c23ccdf4e4a4d65b291dbe20952bae1838bff..0da884a833f6c707fea512e826658c3b this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 5580a396a56c6e0f364a5368985ee99b9e2be0a8..3facfd6eee17cb0b59425494c966e19833660dd2 100644 +index 6634228ef002cbef67980272a26be4a75c954116..a61abba840a55fb4fbc9716a5e05eb2778068785 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -40,7 +40,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -92,10 +92,10 @@ index 5580a396a56c6e0f364a5368985ee99b9e2be0a8..3facfd6eee17cb0b59425494c966e198 } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 4f1ae50564a7e646172b3b923d15a002ee736601..5ddc3e997fec6417c379561f60c438386030d49d 100644 +index 0140dc8a58903bd802ea8ffb029392215e95cdf4..c246148b9851654d796f472462677a60498c7b8d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1401,7 +1401,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 4f1ae50564a7e646172b3b923d15a002ee736601..5ddc3e997fec6417c379561f60c43838 if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index c25776ef9805f3f4e31ca5b027e6577526e48819..86502ef70f2213191d1348ef98969c5c93a6cb95 100644 +index b5297b1d7223af622636a7defdb98b5bc6e6a3c9..ce424d046d7c4abd2371154b00624aa6a9ca3ae3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -634,7 +634,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -631,7 +631,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,10 +118,10 @@ index c25776ef9805f3f4e31ca5b027e6577526e48819..86502ef70f2213191d1348ef98969c5c } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index b97f892fe5824b5275905cd51599bea17da3dd19..1d70a108293a61b7813b70cc9ce600a3e7b167d5 100644 +index ee4d4a4fe314ee9bce69c96dd65d84ed1ace0543..cdb6657d30d224709aec3921c5fb8380f8acd93e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.hurt(this.damageSources().melting(), 1.0F); // CraftBukkit - DamageSources.ON_FIRE -> CraftEventFactory.MELTING } @@ -131,10 +131,10 @@ index b97f892fe5824b5275905cd51599bea17da3dd19..1d70a108293a61b7813b70cc9ce600a3 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index e4b2b35cb1704e61ce0a84cb97578cee7e1eed43..39cf974313c7c0bdcd6599c6c8bec450efe0277a 100644 +index f751444603e4a1a2ef53e7232b5abfff82c316e8..0478469343c30d2b8d79bda78aef9ff1348de19b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -605,7 +605,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -603,7 +603,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,23 +144,23 @@ index e4b2b35cb1704e61ce0a84cb97578cee7e1eed43..39cf974313c7c0bdcd6599c6c8bec450 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 0c7623cc87c534cf02ee78a1ffb6928a31758f6f..3cc47b0e05621c913a3e8d04c653bafab4a86744 100644 +index 8d2894bb1ae70f63c8fa67de3e9f7c6a9c940f3e..2f0c44a0b97e9ad7591c5b66c2560f3e405c61c4 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 -@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; - if (this.destroyBlocksTick == 0 && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (this.destroyBlocksTick == 0 && (this.level().purpurConfig.witherBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur - i = Mth.floor(this.getY()); - j = Mth.floor(this.getX()); - int i1 = Mth.floor(this.getZ()); + boolean flag = false; + + j = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); 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 ca2d247be50c1f7c69aeafeafa5b33ea296bf323..93420c7e9b34b40845f12a0058e50e6fd809e6f7 100644 +index 052a0c168268b7e788953063f54c3769023f3c03..de1fe3b115c1b3936b79c8900389542a8c8a2c90 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -526,7 +526,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index ca2d247be50c1f7c69aeafeafa5b33ea296bf323..93420c7e9b34b40845f12a0058e50e6f } @Override -@@ -595,7 +603,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -572,7 +580,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -195,10 +195,10 @@ index ca2d247be50c1f7c69aeafeafa5b33ea296bf323..93420c7e9b34b40845f12a0058e50e6f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 30a04ea1f66fe5dbbae27a48764e4bd0f66bf0b1..a7e77eae357e0fd146f340f8c3981f1a0d705b32 100644 +index 8f0c685790aa59b7f2352c3bac6ede444d0ede22..ce2e5c16db13accb082b3f2403661c65411c7a80 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -351,7 +351,7 @@ public class Evoker extends SpellcasterIllager { +@@ -364,7 +364,7 @@ public class Evoker extends SpellcasterIllager { return false; } else if (Evoker.this.tickCount < this.nextAttackTickCount) { return false; @@ -208,10 +208,10 @@ index 30a04ea1f66fe5dbbae27a48764e4bd0f66bf0b1..a7e77eae357e0fd146f340f8c3981f1a } else { List list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 226b44ba4cd3a08562c8cb0d79c1d880cfac34ec..056fa8b12368dac5d1a12962b8ee92e87e4149b3 100644 +index 32d547a4430a8f524a7fc0bd1aa063bbebfaeb7f..cebe89b0868043b819fb3e9987f899926961be52 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -176,7 +176,7 @@ public class Ravager extends Raider { +@@ -168,7 +168,7 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } @@ -221,10 +221,10 @@ index 226b44ba4cd3a08562c8cb0d79c1d880cfac34ec..056fa8b12368dac5d1a12962b8ee92e8 AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index e81c162f7a2061180f81754de341b2c33da76a0d..69f6306b91e535050fe8b22852503dfb0514f316 100644 +index 75f82922260b2c0666021e7ed42dfde401e1a9d6..a175144d5480b7af091787c6ab366fb3e8d70587 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -211,7 +211,7 @@ public class Silverfish extends Monster { +@@ -191,7 +191,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -233,7 +233,7 @@ index e81c162f7a2061180f81754de341b2c33da76a0d..69f6306b91e535050fe8b22852503dfb world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -249,7 +249,7 @@ public class Silverfish extends Monster { +@@ -229,7 +229,7 @@ public class Silverfish extends Monster { } else { RandomSource randomsource = this.mob.getRandom(); @@ -243,10 +243,10 @@ index e81c162f7a2061180f81754de341b2c33da76a0d..69f6306b91e535050fe8b22852503dfb BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index b5e6a48192592e9bc5a7c0a2775e5d78f06cd46a..03b58860ecb72976ecce99f368d16942557236b9 100644 +index 06e0f737615c90bd733a89a731156598ccfe447f..57089ba787731ddda853dce959ba015abe135bfd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -424,7 +424,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -412,7 +412,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ItemStack stack) { @@ -284,10 +284,10 @@ index 9d89872c5958f3e8d6c1ef4fd93f9b8b85296851..6a94c86acce5afbf1e9c8e7d664b3eb2 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 2a8a8030feefae84e394460612405887e63f2ac7..577df1ad8eb57ae7a53c9931c379824a6882fa5f 100644 +index 74c596264d4da551437bd2a23e1c70022cfc73fc..e4d4ff0ef4a0f3283aa42fe2304816cd6d9475a8 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -334,7 +334,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -343,7 +343,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); @@ -297,7 +297,7 @@ index 2a8a8030feefae84e394460612405887e63f2ac7..577df1ad8eb57ae7a53c9931c379824a public boolean mayBreak(Level world) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 6724fe4470aeea338eb4cfd10a7e61fbcac1e5b7..dd38f32ac6a62905c9a79dacf85cf073fa6941b3 100644 +index 3a11ad32d95088a5aca713a1a6a984cc22d4fa9a..c078ccad4aabe469a9611331b415a4cef241973e 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -27,7 +27,7 @@ public class SmallFireball extends Fireball { @@ -310,10 +310,10 @@ index 6724fe4470aeea338eb4cfd10a7e61fbcac1e5b7..dd38f32ac6a62905c9a79dacf85cf073 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index 93bbf7556f9599e9dd90761085a57d78bd521867..b3912881892b4f1bca577761083c5da1568c8187 100644 +index 98e558338b5d9fb03869d2cc21b3e90eb45b95f6..4a8fa7e5844b5cd12ef6b113f988b715c7a3ef64 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java -@@ -322,7 +322,7 @@ public abstract class Raider extends PatrollingMonster { +@@ -341,7 +341,7 @@ public abstract class Raider extends PatrollingMonster { @Override public boolean canUse() { @@ -321,14 +321,14 @@ index 93bbf7556f9599e9dd90761085a57d78bd521867..b3912881892b4f1bca577761083c5da1 + if ((!this.mob.level().purpurConfig.pillagerBypassMobGriefing && !this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur Raid raid = this.mob.getCurrentRaid(); - if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { + if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 5b96d1ae4bd8546311e986bc312b1f85883a67f4..07b148fc31aee3ce009d1d768ae16d98268339cc 100644 +index 112d2feba5f75a2a873b595617780515945c10e4..2af4c365743b2956939335512f74e0a1d84298f7 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -179,7 +179,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @Override - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit + if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur @@ -336,10 +336,10 @@ index 5b96d1ae4bd8546311e986bc312b1f85883a67f4..07b148fc31aee3ce009d1d768ae16d98 } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index e8514465772a748afe19039d7ce5be0baa303243..e9ab88a5c68565f2245b3397edcffb0544a29fea 100644 +index dc356bd0931af9bdab9ec71e3de66e88a67375ad..99798220b6e0ad06db2ba5c9b74bfb72af185fee 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -110,7 +110,7 @@ public class FarmBlock extends Block { +@@ -111,7 +111,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -349,7 +349,7 @@ index e8514465772a748afe19039d7ce5be0baa303243..e9ab88a5c68565f2245b3397edcffb05 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -index 0dfcac8cfcbb09fe04486bff60119f7985714454..2dbf71e421156093c8bc387941eae991f5e6c957 100644 +index a6e6545402904141ffc6218a0158b0e9c67217c8..5eac1a54398dfa5571b98fb6eefca9d2bf9b2793 100644 --- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java @@ -80,7 +80,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { @@ -362,10 +362,10 @@ index 0dfcac8cfcbb09fe04486bff60119f7985714454..2dbf71e421156093c8bc387941eae991 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index a98f04c892d6e11e311b16af36e824857dd3bc76..430ccf1b9f5c6306bbe610d1f9058c1a4bfa2986 100644 +index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -220,7 +220,7 @@ public class TurtleEggBlock extends Block { +@@ -221,7 +221,7 @@ public class TurtleEggBlock extends Block { } if (entity instanceof Player) return true; diff --git a/patches/unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 95% rename from patches/unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch index 2fa0f4ba4..99674d529 100644 --- a/patches/unapplied-server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -9,10 +9,10 @@ Normally, the sounds will only play when the block directly above is air. With this patch enabled, players can place any block above the Note Block and it will still work. diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index a541dc3a6e373b30fff0abf5305e77854c190f10..ac88cb949808752a340637ffcb9d7256b7d09478 100644 +index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7fb733a2b 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -@@ -94,7 +94,7 @@ public class NoteBlock extends Block { +@@ -95,7 +95,7 @@ public class NoteBlock extends Block { } private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) { diff --git a/patches/unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch b/patches/server/0120-Add-EntityTeleportHinderedEvent.patch similarity index 90% rename from patches/unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0120-Add-EntityTeleportHinderedEvent.patch index 1c27d45f5..0339570c0 100644 --- a/patches/unapplied-server/0123-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0120-Add-EntityTeleportHinderedEvent.patch @@ -17,11 +17,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 4ba24bced9a2de4616a0418857d3738e0e322ea0..6660bea735dda46ab9493601f1f53b8e0075ca83 100644 +index 7272d70c672b54dcf595beafd7a2ed33c96e35cb..d7f33c676bba279661583d908d3a58c86d853545 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -54,6 +54,14 @@ public class EndPortalBlock extends BaseEntityBlock { - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (world instanceof ServerLevel && entity.canChangeDimensions() && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { + // Purpur start @@ -36,11 +36,11 @@ index 4ba24bced9a2de4616a0418857d3738e0e322ea0..6660bea735dda46ab9493601f1f53b8e ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 1b5cc5d6aa0b4313da980ce175c54145852d0db0..613df7b174ba4cb87314a631ebc7dfeda8ede58f 100644 +index a9e3078cefcae8cc4672d514a7add162590d48df..67060b7446535fc352d221d9fe3928d1d6ffcf54 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -92,6 +92,14 @@ public class NetherPortalBlock extends Block { - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canChangeDimensions()) { + // Purpur start @@ -55,12 +55,12 @@ index 1b5cc5d6aa0b4313da980ce175c54145852d0db0..613df7b174ba4cb87314a631ebc7dfed EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 8be3d696f6401189406032dd8d45dc747f546df5..4997f120aa9877c199fbcaa0c2f65226e13b5a23 100644 +index 60b343edc4383c8bc450f106f483349850432fa3..fb9611866671880fc7a1a969da928b8f2ad15269 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -172,6 +172,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -168,6 +168,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { - if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { + if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) { if (!entity.canChangeDimensions()) return; // Purpur + // Purpur start + if (world.purpurConfig.imposeTeleportRestrictionsOnGateways && (entity.isVehicle() || entity.isPassenger())) { @@ -70,11 +70,11 @@ index 8be3d696f6401189406032dd8d45dc747f546df5..4997f120aa9877c199fbcaa0c2f65226 + return; + } + // Purpur end - ServerLevel worldserver = (ServerLevel) world; - blockEntity.teleportCooldown = 100; + BlockPos blockposition1; + diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 85d154f18e240cac77e023b4b5983ad7a95912b5..cac42202295b16de0466216f64be4fdf30929a7e 100644 +index a6268b3df9691278606501284b5504da718703c2..befe3372d5f1550b7bde3b63b5e7aef9035c5379 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -253,6 +253,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,10 +89,10 @@ index 85d154f18e240cac77e023b4b5983ad7a95912b5..cac42202295b16de0466216f64be4fdf } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 8fec2e517cc57940348f4bee33212a9aae34b102..4e999cec1a004529a4bcd2f0ae63b3731bcac8f2 100644 +index 33f229c13b3b77f967d81e9d4453e6afa9157fd9..485c742874defe0a8cf1e7db09406b03ec40871b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1358,6 +1358,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1434,6 +1434,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/unapplied-server/0124-Farmland-trampling-changes.patch b/patches/server/0121-Farmland-trampling-changes.patch similarity index 95% rename from patches/unapplied-server/0124-Farmland-trampling-changes.patch rename to patches/server/0121-Farmland-trampling-changes.patch index a1838aeae..66ce2dab9 100644 --- a/patches/unapplied-server/0124-Farmland-trampling-changes.patch +++ b/patches/server/0121-Farmland-trampling-changes.patch @@ -12,10 +12,10 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index e9ab88a5c68565f2245b3397edcffb0544a29fea..00a6aa924e47e18ae80b57e9fe1d38e2de15dd72 100644 +index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..6b12864f323202a1202a59f66412b3d5be28023f 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -125,12 +125,20 @@ public class FarmBlock extends Block { +@@ -126,12 +126,20 @@ public class FarmBlock extends Block { } // Purpur start diff --git a/patches/unapplied-server/0125-Movement-options-for-armor-stands.patch b/patches/server/0122-Movement-options-for-armor-stands.patch similarity index 90% rename from patches/unapplied-server/0125-Movement-options-for-armor-stands.patch rename to patches/server/0122-Movement-options-for-armor-stands.patch index 490fc8d94..6c216cbe7 100644 --- a/patches/unapplied-server/0125-Movement-options-for-armor-stands.patch +++ b/patches/server/0122-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 047c4111d247cea4f203df1a8b11ca5913d513c1..53a695f5425717a47f47ca4585b9b79847ab4a47 100644 +index a93ae9de698ce97e8603deb1075e6dc5aeaab274..2f8b5646222b86fa7ef908c9796d28e034702ec7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1885,7 +1885,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1936,7 +1936,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -28,12 +28,12 @@ index 047c4111d247cea4f203df1a8b11ca5913d513c1..53a695f5425717a47f47ca4585b9b798 + public void updateInWaterStateAndDoWaterCurrentPushing() { // Purpur - package-private -> public Entity entity = this.getVehicle(); - if (entity instanceof Boat) { + if (entity instanceof Boat entityboat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index aca5e7a2b0eab93c613b03834509366f7119ec03..40550897d5be12fcb8e1e751ee2e7a138512ce0b 100644 +index 8b25bb80a913cd002cdaeadf076d811172f10488..89f600edda9a1c5d1b132355fefb7eaed77c52f5 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -100,10 +100,12 @@ public class ArmorStand extends LivingEntity { +@@ -103,10 +103,12 @@ public class ArmorStand extends LivingEntity { private boolean noTickPoseDirty = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -46,7 +46,7 @@ index aca5e7a2b0eab93c613b03834509366f7119ec03..40550897d5be12fcb8e1e751ee2e7a13 this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); this.headPose = ArmorStand.DEFAULT_HEAD_POSE; -@@ -1006,4 +1008,18 @@ public class ArmorStand extends LivingEntity { +@@ -1005,4 +1007,18 @@ public class ArmorStand extends LivingEntity { } } // Paper end diff --git a/patches/unapplied-server/0126-Fix-stuck-in-portals.patch b/patches/server/0123-Fix-stuck-in-portals.patch similarity index 90% rename from patches/unapplied-server/0126-Fix-stuck-in-portals.patch rename to patches/server/0123-Fix-stuck-in-portals.patch index 5cd17834b..3f91f8331 100644 --- a/patches/unapplied-server/0126-Fix-stuck-in-portals.patch +++ b/patches/server/0123-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8c7333578d0fa28a1ebdd11e768e51a85bed725e..b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0 100644 +index fabce29a8e4eefede38dabd009c0ab9f9c1dc842..9bf6457ed689d38393c17732dc9229d9fc297584 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { +@@ -1348,6 +1348,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 8c7333578d0fa28a1ebdd11e768e51a85bed725e..b7fedc1eb9f3d94cba8ac9d7da72fff0 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53a695f5425717a47f47ca4585b9b79847ab4a47..09d131178fb6428ba65cd4f08a5badb8693be626 100644 +index 2f8b5646222b86fa7ef908c9796d28e034702ec7..1ec1f023d7eee5714c94dbb6c842444f70603f40 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3164,12 +3164,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3217,12 +3217,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch similarity index 90% rename from patches/unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch index 49eeb9bf2..57bbf47c3 100644 --- a/patches/unapplied-server/0127-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 1330c4a4d9ff347e62a284eb8b71c107d87baf83..d5bcc6e678aec21da855eea805a58a965ef5edee 100644 +index 4cd57672c548950cb4e0aa97af75ecca84be6823..70e3d583f7a039a5c67428ce9e8beb1922574c7b 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -46,6 +46,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index 1330c4a4d9ff347e62a284eb8b71c107d87baf83..d5bcc6e678aec21da855eea805a58a96 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 8910aaaa1fdabecec4740d6212db3114bd1197fc..3c7db09c5fbcb9d57febc937158b50634d68a082 100644 +index cea588d68c7e23ad8831bc611f1030d63354d91c..76b858d0ab2da7b4cdf39aa6692e2a005958fee2 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -280,6 +280,11 @@ public class Bat extends AmbientCreature { +@@ -277,6 +277,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level().purpurConfig.batAttackKnockback); } @@ -37,19 +37,19 @@ index 8910aaaa1fdabecec4740d6212db3114bd1197fc..3c7db09c5fbcb9d57febc937158b5063 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 2b69a3e860f95d4294dda8d05126f431eb7dd5b6..52a7a8b35cf0f7b52d5de253b21f7713ab261544 100644 +index cbcfe8177362d9b8af97f21e716a4dce9e227465..0978f519177ce2f0991402dafb9a22c5a8686168 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -180,7 +180,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -175,7 +175,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); -- this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); -+ if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur - this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); - this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); - this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -488,6 +488,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); +- this.setPathfindingMalus(PathType.WATER, -1.0F); ++ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.COCOA, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); +@@ -477,6 +477,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeBreedingTicks; } @@ -62,26 +62,26 @@ index 2b69a3e860f95d4294dda8d05126f431eb7dd5b6..52a7a8b35cf0f7b52d5de253b21f7713 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 fba85c1a43b184ada6c1bb499997322030f59665..a4b3d724f30ccf0eddfb41d6997d0aa9b1847b7a 100644 +index 27e448a38377ea3cc2e527dbe48a23d233f1ea13..446aec4d10e614f136fe6ae4bb5a7dd0ac6d0f18 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -133,6 +133,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -139,6 +139,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -194,6 +194,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxBreedingTicks; } @@ -155,13 +155,13 @@ index 5ddc3e997fec6417c379561f60c438386030d49d..1e04205a1707e46a1f540f5c8f6ec1b8 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 46e28d807a72b6d302d29d65c52ab0813cd82b1a..669132fb78d3fd72f73d4c20370f0213879baeaa 100644 +index 2919d055e2136a956aa038bd0bf4c1a2ff5afa2f..9c86d86a6d89585cfbdace89e66866f496da86cb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -88,6 +88,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -83,6 +83,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end @@ -174,7 +174,7 @@ index 46e28d807a72b6d302d29d65c52ab0813cd82b1a..669132fb78d3fd72f73d4c20370f0213 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index b699f88ce9480ef4da5bfb97004a9c5f62d58894..5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3 100644 +index 22a2328fe5159c8fed635a62334a3f1028c346a5..6cb8d85986f4d891dfbb66b83163ed23bac694f6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -91,6 +91,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -147,6 +147,11 @@ public class Rabbit extends Animal implements VariantHolder { public int getPurpurBreedTime() { return this.level().purpurConfig.rabbitBreedingTicks; } @@ -318,10 +318,10 @@ index 742805994f29a18af444912b10af631d2c60cacf..e101c3bf425902908c43ffa18867fb83 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index df7deec204ebf99afdbfe49f9a113857dcd413c6..d1a8b15de4f4aa20d6049135bcbef94f0d1fb388 100644 +index c3cc949291d11ae707fa5175d666df2ee81cdcce..afec39ba3b51b121fd7ae937e7bac060ef430dfd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -146,6 +146,11 @@ public class Sheep extends Animal implements Shearable { +@@ -144,6 +144,11 @@ public class Sheep extends Animal implements Shearable { return this.level().purpurConfig.sheepBreedingTicks; } @@ -334,10 +334,10 @@ index df7deec204ebf99afdbfe49f9a113857dcd413c6..d1a8b15de4f4aa20d6049135bcbef94f protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 1d70a108293a61b7813b70cc9ce600a3e7b167d5..d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9 100644 +index cdb6657d30d224709aec3921c5fb8380f8acd93e..9f20eae7449c670b913cc3bbe1a89254a1d8cde2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -116,7 +116,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -114,7 +114,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public boolean isSensitiveToWater() { @@ -347,10 +347,10 @@ index 1d70a108293a61b7813b70cc9ce600a3e7b167d5..d46ab4d56e4c34b4dbe7a3df0785ab87 @Override 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 871f9a47247ba8134ecc39cd98a35011a5b009e4..daa4931c934c792b3c4ff32b730506762c4cf481 100644 +index f0261117a4f8ae240b3b991053deaf8d6419b5b4..0d05879eadeff8731028d78d89d5d32142818ea2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -90,6 +90,11 @@ public class Squid extends WaterAnimal { +@@ -88,6 +88,11 @@ public class Squid extends WaterAnimal { return this.wasTouchingWater || canFly(); } @@ -363,10 +363,10 @@ index 871f9a47247ba8134ecc39cd98a35011a5b009e4..daa4931c934c792b3c4ff32b73050676 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index b8b4ca31ad2fc5292082905c979a974a4ed42dab..1f83844da76ee6e158f1ba3656ba90d6eff1895c 100644 +index 327b1805d9d4069212a8772ff189c9ab24ae1183..4ac998e9d96aed3b0ea0ec3f9dcd5fdd74c45d24 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -82,6 +82,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -84,6 +84,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.tropicalFishMaxHealth); } @@ -379,10 +379,10 @@ index b8b4ca31ad2fc5292082905c979a974a4ed42dab..1f83844da76ee6e158f1ba3656ba90d6 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index ccb1ed3f9c3a15489a715e684c0f15d2e67b556f..315006bdb344bb52a077c49a96c7712a33fbb0eb 100644 +index a577ec78b2f5bca0166277c499da4fa7988d5395..b146ac72584d998cee4279133b3b19051fbf14c9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -113,6 +113,11 @@ public class Turtle extends Animal { +@@ -114,6 +114,11 @@ public class Turtle extends Animal { return this.level().purpurConfig.turtleBreedingTicks; } @@ -395,10 +395,10 @@ index ccb1ed3f9c3a15489a715e684c0f15d2e67b556f..315006bdb344bb52a077c49a96c7712a this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 1f69252653373b8eba46fdadac2141773ec72dff..8dc0a8a7b24b874d886626fa6ba757308b0d721b 100644 +index 90049174458e261034923c67e0d852250224b69b..04a5fe5044b68868f35616104a56217051a035ae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -212,6 +212,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -226,6 +226,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 0282498c7375a73b6982efb02f3cf3215f4211b0..5b3126168e9406f6cbd0607b6b7cc2de4ab68b65 100644 +index 84c04603d50e190430e4e6cf2a7b613537a0c341..412b44ea2d33ef68721b91da9f550738c6c780ba 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -114,6 +114,11 @@ public class Goat extends Animal { +@@ -113,6 +113,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatBreedingTicks; } @@ -443,7 +443,7 @@ index 0282498c7375a73b6982efb02f3cf3215f4211b0..5b3126168e9406f6cbd0607b6b7cc2de protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 5b0b7c6bcd01d86552f1967489c5538780b69525..92fccfde550f4a01f860e3bcfcf953d3e6ae02e3 100644 +index 2990d50fd5209b272e0cfbd5dd633124048e8129..891ea1cca8495c08a1817096c8c4277f5311d6c7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -42,6 +42,11 @@ public class Donkey extends AbstractChestedHorse { @@ -459,10 +459,10 @@ index 5b0b7c6bcd01d86552f1967489c5538780b69525..92fccfde550f4a01f860e3bcfcf953d3 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 02748a7fdf41529fb86e916ae421a1317e1c3c7f..8e4c3c01613a8944095a099427eb12ced32987a1 100644 +index 16d4278d49dad84f72c968ca36914e93d46dc5f6..e623284b353831d1a540af40e139ac16091dcbf6 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 -@@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -71,6 +71,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return this.level().purpurConfig.horseBreedingTicks; } @@ -475,7 +475,7 @@ index 02748a7fdf41529fb86e916ae421a1317e1c3c7f..8e4c3c01613a8944095a099427eb12ce 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 e11fc274f893d501235422839301a5128268199d..fb2b0ebd9314ab7fc911e842767bd60b1db92b96 100644 +index 81d614cf14512464b376575fd2d7e7fbf93d9e03..87ec5bd632353ce364de29c5d56460551b6a4139 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 @@ -145,6 +145,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur -- this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); -+ if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); +- this.setPathfindingMalus(PathType.WATER, -1.0F); ++ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur + this.setPathfindingMalus(PathType.LAVA, 8.0F); + this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); + this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); @@ -153,7 +153,7 @@ public class Blaze extends Monster { @Override @@ -609,10 +609,10 @@ index cfd7d5caeb8bacc5ce314bd700cb21e98a9f667b..8c6f5dcd2135873da7d58066c63a2b83 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -index c8bac8cb738ad96003a014b468681c43512ac4c4..5dc0b3d04bfc01cd2cb004c18279840861dc4a57 100644 +index 562f73dd5e617c10382c50be86ce88f4de1a4fe1..0604b7c68373ed071ac22cabd7a961161ad228f8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -@@ -51,6 +51,11 @@ public class CaveSpider extends Spider { +@@ -48,6 +48,11 @@ public class CaveSpider extends Spider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.caveSpiderMaxHealth); } @@ -625,10 +625,10 @@ index c8bac8cb738ad96003a014b468681c43512ac4c4..5dc0b3d04bfc01cd2cb004c182798408 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 88a1f4ee23c29daec81e1807129e4facf3c19714..eb2c80a50bd29ad4ab9ece0ce5d71f3713700fba 100644 +index 9334a3b7d401c0f3a04bb7675f7baf9c7685688e..08743fede4abec62e7fdd34f22fd5bc9a9d07bc9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -264,6 +264,11 @@ public class Creeper extends Monster implements PowerableMob { +@@ -265,6 +265,11 @@ public class Creeper extends Monster implements PowerableMob { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } @@ -641,10 +641,10 @@ index 88a1f4ee23c29daec81e1807129e4facf3c19714..eb2c80a50bd29ad4ab9ece0ce5d71f37 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index e6751c1a834453be66e891d7eb94bbb66f36008c..8850d8fc54d7025d323bc273a87a609baacea174 100644 +index b02cdbaa0455319b1e8a7e777e64ff4a56590388..f037d50f26f7532f11a71790448de7a71644b6ca 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -95,6 +95,11 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -98,6 +98,11 @@ public class Drowned extends Zombie implements RangedAttackMob { this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements); } @@ -657,10 +657,10 @@ index e6751c1a834453be66e891d7eb94bbb66f36008c..8850d8fc54d7025d323bc273a87a609b public boolean jockeyOnlyBaby() { return level().purpurConfig.drownedJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index baa41e05f66457a6b4638915a1deab775665f01f..60787e45b605ce32b3b74ea23a6d9d9353f831a4 100644 +index 6152117a3e13252068e16945b4346a73a3090dda..3651a720e4ae20686a91b4420fe4879f765935e4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -@@ -53,6 +53,11 @@ public class ElderGuardian extends Guardian { +@@ -50,6 +50,11 @@ public class ElderGuardian extends Guardian { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.elderGuardianMaxHealth); } @@ -673,19 +673,19 @@ index baa41e05f66457a6b4638915a1deab775665f01f..60787e45b605ce32b3b74ea23a6d9d93 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 93420c7e9b34b40845f12a0058e50e6fd809e6f7..065e7c0d1cd1d3bbf72b03dd73dd9e567aec642b 100644 +index de1fe3b115c1b3936b79c8900389542a8c8a2c90..17b044e58d2ed33ed16e60f4fd4f63b2ee3f854d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -95,7 +95,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -90,7 +90,7 @@ public class EnderMan extends Monster implements NeutralMob { + public EnderMan(EntityType type, Level world) { super(type, world); - this.setMaxUpStep(1.0F); -- this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); -+ if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur +- this.setPathfindingMalus(PathType.WATER, -1.0F); ++ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur } // Purpur start -@@ -313,7 +313,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -298,7 +298,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -695,10 +695,10 @@ index 93420c7e9b34b40845f12a0058e50e6fd809e6f7..065e7c0d1cd1d3bbf72b03dd73dd9e56 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 2cbc2f158b2bb65bfbf6b122a5b6e000252e51ce..7655e6d36e29ba8a64729e6a0688e81ffefa95fa 100644 +index 52e2588b32b56b51bdbbdf63a290b2a4a4b02c13..514354bfcd0608554fd515248975fb107eddf427 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -65,6 +65,11 @@ public class Endermite extends Monster { +@@ -60,6 +60,11 @@ public class Endermite extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermiteMaxHealth); } @@ -711,10 +711,10 @@ index 2cbc2f158b2bb65bfbf6b122a5b6e000252e51ce..7655e6d36e29ba8a64729e6a0688e81f protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index a7e77eae357e0fd146f340f8c3981f1a0d705b32..db3a49a979a9d84f29228ae975133c46216bfb75 100644 +index ce2e5c16db13accb082b3f2403661c65411c7a80..a3e88c252b39a78a0759623f188dbdc8aa2fcc0b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -73,6 +73,11 @@ public class Evoker extends SpellcasterIllager { +@@ -74,6 +74,11 @@ public class Evoker extends SpellcasterIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.evokerMaxHealth); } @@ -727,10 +727,10 @@ index a7e77eae357e0fd146f340f8c3981f1a0d705b32..db3a49a979a9d84f29228ae975133c46 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index edd3b7a855165eb090edb9ad95d36cdb649d231e..fa74eb7ee34f3f9b0026778bc0d37e977fc41d70 100644 +index 4bad5bdce2df5f5233465b30bcd3121b1dff0874..96f7c8fb4e49e7640aaa1adb466d67fc887a2dc5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -@@ -138,6 +138,11 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -136,6 +136,11 @@ public class Ghast extends FlyingMob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ghastMaxHealth); } @@ -740,29 +740,29 @@ index edd3b7a855165eb090edb9ad95d36cdb649d231e..fa74eb7ee34f3f9b0026778bc0d37e97 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 9b0c7681b30338141ba888ca5a66076cf856d946..c54c364e5c680982a8c4c0285a7dd5289d2546fa 100644 +index 3c1217d36522b1fd3d1a099d3a12d99016f34c4b..47e403a5986f77dbb3833acb9a3ea59e5c3740c6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -75,6 +75,11 @@ public class Giant extends Monster { - } +@@ -72,6 +72,11 @@ public class Giant extends Monster { } } -+ + + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.giantTakeDamageFromWater; + } - // Purpur end - ++ @Override + protected void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.giantMaxHealth); diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 52e2900f57979d25a62fbd23e08f5378cb6c0611..c696ffd7f4454ca79933cef04bf2b89e2a65b8cf 100644 +index 7fa4e9761c6aad83848bf5e80a213689d728921d..6b0ff4ded5e8b62572d5889f0be5e3148243ed7d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -@@ -99,6 +99,11 @@ public class Guardian extends Monster { +@@ -95,6 +95,11 @@ public class Guardian extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.guardianMaxHealth); } @@ -775,10 +775,10 @@ index 52e2900f57979d25a62fbd23e08f5378cb6c0611..c696ffd7f4454ca79933cef04bf2b89e protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index a6d827b39ce9ca13103fb2f9940974e8aaaea037..f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3 100644 +index 6673c0bff3a4e3d11a09e9dc8aeb0c2418dc7f59..cb96bd5769159e6c25968673ea07cd6d107cff46 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -66,6 +66,11 @@ public class Husk extends Zombie { +@@ -64,6 +64,11 @@ public class Husk extends Zombie { return level().purpurConfig.huskJockeyTryExistingChickens; } @@ -791,10 +791,10 @@ index a6d827b39ce9ca13103fb2f9940974e8aaaea037..f6d6df27c2ca7a33ed3ca8e299725b6a return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index c00530db0eff302c14dd9c52d1d988cbdd93e5a1..43d4cea02ae94a8842cd4c1370d1b80e45d2b13c 100644 +index c680e1efb73a6387aad6ecdab94f690c12451a32..e2393be574475377fd401d55ab0be9b483e705e6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -83,6 +83,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { +@@ -80,6 +80,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.illusionerMaxHealth); } @@ -807,10 +807,10 @@ index c00530db0eff302c14dd9c52d1d988cbdd93e5a1..43d4cea02ae94a8842cd4c1370d1b80e protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 79264a538b64a473b5a50aa87011f1f6db617525..607ca8389746062ffba29b25ddab4ac02685b506 100644 +index 61cd97bc17802d3ab30999fc1f2b91e8b00652b2..adacdbf9fac7d1504be73e2e5a7526e8258a126d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -67,6 +67,11 @@ public class MagmaCube extends Slime { +@@ -66,6 +66,11 @@ public class MagmaCube extends Slime { return level().purpurConfig.magmaCubeAttackDamageCache; } @@ -823,10 +823,10 @@ index 79264a538b64a473b5a50aa87011f1f6db617525..607ca8389746062ffba29b25ddab4ac0 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 2bd1fce22cf01a441f75f918e036598e8fb3ee04..637b229817f9f2c3ad224f300b56a6bee4c8a341 100644 +index c15d75472d4d92baeb87a147832e17e363c360be..c52d40eb33a16e428c016a902faeb62aea0fd727 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -138,6 +138,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -136,6 +136,11 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end @@ -839,10 +839,10 @@ index 2bd1fce22cf01a441f75f918e036598e8fb3ee04..637b229817f9f2c3ad224f300b56a6be public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0; diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index c4af35ac6c8ac6e76adb061bf628f6cca2e7199c..cff87c0790e3afe43e7817969a05e8d79a550bbb 100644 +index 8c06e648df453fdd4eea0aa4843fada9b6375f81..a405764724d7f4b586d8510450a6258417495942 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -@@ -88,6 +88,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -80,6 +80,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.pillagerMaxHealth); } @@ -855,10 +855,10 @@ index c4af35ac6c8ac6e76adb061bf628f6cca2e7199c..cff87c0790e3afe43e7817969a05e8d7 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 056fa8b12368dac5d1a12962b8ee92e87e4149b3..db5e55f2bca1d0706d24ebf7c0b5c2592b04f0bc 100644 +index cebe89b0868043b819fb3e9987f899926961be52..e592b5ee3a0bfce987557defed8250682373fe65 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -99,6 +99,11 @@ public class Ravager extends Raider { +@@ -96,6 +96,11 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ravagerMaxHealth); } @@ -871,7 +871,7 @@ index 056fa8b12368dac5d1a12962b8ee92e87e4149b3..db5e55f2bca1d0706d24ebf7c0b5c259 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 2d8d88a3552516becdd7adb11b7706fc9bddbf96..31284660a9718503a1ce474c56d993de3126a1ea 100644 +index 1793c5f4e33fbab9d64d81bb1767b0e9b248106f..5b4ad4f64488ca5a21312caa3d13318f429401ea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -119,6 +119,11 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 62d0c4dcb2992b665e473726a09d3fa457420395..763b28965418f2146a64c1ecde41ac536502936a 100644 +index 698076b0e958aadf9736d7753df64a73dd3c17cd..76d47ba17dd140572a0be40dfda18c24851198bb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -104,6 +104,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -102,6 +102,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zoglinMaxHealth); } @@ -1069,10 +1071,10 @@ index 62d0c4dcb2992b665e473726a09d3fa457420395..763b28965418f2146a64c1ecde41ac53 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 4df125607985b315b078253f7ea889626e743197..94b92c6e588f871d4b0d86bb8f860a99e473a4ea 100644 +index 3d42b2ea26217243dba96174ff0eadbcdd81a6cd..de7a74f1e5181373da8dcc639245f35f77f4f09b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -141,6 +141,11 @@ public class Zombie extends Monster { +@@ -138,6 +138,11 @@ public class Zombie extends Monster { return level().purpurConfig.zombieJockeyTryExistingChickens; } @@ -1085,10 +1087,10 @@ index 4df125607985b315b078253f7ea889626e743197..94b92c6e588f871d4b0d86bb8f860a99 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 259cbfc821b12663876ff2821635ce0ccd7e33c6..438302f6705bcf3d60f27dde279de010bd95aad4 100644 +index ffe2144e307acebd4a8bed043db0ee0bb6bf611c..2ec3a09135f85a5de68e77511f3f213adf08712c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -109,6 +109,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -107,6 +107,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements); } @@ -1101,10 +1103,10 @@ index 259cbfc821b12663876ff2821635ce0ccd7e33c6..438302f6705bcf3d60f27dde279de010 public boolean jockeyOnlyBaby() { return level().purpurConfig.zombieVillagerJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index e73fb1027acd592c7e028e1797042fe38c6c04a3..e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2 100644 +index 6be751e2d434982a35bbbece4f4fc4631fb3d8e0..bd2953448e568b1a20bcc6a889cef83b88418548 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -86,6 +86,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -84,6 +84,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth); } @@ -1117,10 +1119,10 @@ index e73fb1027acd592c7e028e1797042fe38c6c04a3..e6b653c75a4c3306e06bfcadb4c4b53b public boolean jockeyOnlyBaby() { return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 89b108a248509a72ddd81fdaf70053931f487368..5a42325d4acd32d1e8bd2f8dff1b43f3ef160535 100644 +index a770ae0e13c4dad296dfb8f33259408ee1531c70..9ca294d5177ec7d541433d644d2fb90d937b011c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -119,6 +119,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -117,6 +117,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinBreedingTicks; } @@ -1133,10 +1135,10 @@ index 89b108a248509a72ddd81fdaf70053931f487368..5a42325d4acd32d1e8bd2f8dff1b43f3 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 03b58860ecb72976ecce99f368d16942557236b9..20ecfcbe948d02bb61b8f673f5330d2f9e60c387 100644 +index 57089ba787731ddda853dce959ba015abe135bfd..e5b24bd8e31ca5748185181bb6741760c86a92a1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -116,6 +116,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinMaxHealth); } @@ -1149,10 +1151,10 @@ index 03b58860ecb72976ecce99f368d16942557236b9..20ecfcbe948d02bb61b8f673f5330d2f public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index dc70d4819fbc2aa5b6a026f2aff2f52bc836901c..532b14a6330a72e06b47ababee012762b8f76884 100644 +index 362f3fddd8090799278f4b4e58c5af5de00315f2..6c7e0f177382cb6329002dcde270f6ce51f08f9f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -85,6 +85,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -84,6 +84,11 @@ public class PiglinBrute extends AbstractPiglin { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinBruteMaxHealth); } @@ -1165,10 +1167,10 @@ index dc70d4819fbc2aa5b6a026f2aff2f52bc836901c..532b14a6330a72e06b47ababee012762 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 430e660f74ee523d0bb98e21784f32158495de7a..870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5 100644 +index f7d8f672a680cf2dfebba5677f97895e4a8c209f..c9cfbc8817fe62e22cb165f856ed8569668c0a60 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -191,6 +191,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -189,6 +189,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1181,7 +1183,7 @@ index 430e660f74ee523d0bb98e21784f32158495de7a..870330f95fa1c1b4b8fb5f5e59a9770f public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 6f30c22fe0058320b995570c9af7b15ae917dd76..381e86286eabdbc254cd8901c498dd781521ed4d 100644 +index 9d5eaaf1869a3ecb61947ab0c09af558fa1cd283..c192f4cc5fd9cb0cf40083c4297f649ab909649d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -98,6 +98,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0128-Config-to-always-tame-in-Creative.patch b/patches/server/0125-Config-to-always-tame-in-Creative.patch similarity index 61% rename from patches/unapplied-server/0128-Config-to-always-tame-in-Creative.patch rename to patches/server/0125-Config-to-always-tame-in-Creative.patch index ec2bd79b1..4bd60e246 100644 --- a/patches/unapplied-server/0128-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0125-Config-to-always-tame-in-Creative.patch @@ -7,7 +7,7 @@ Adds a configuration option that ensures a player in Creative always tames a tam This essentially allows Creative mode players to tame animals on their first try. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..a3074ec9b430c9d0a0ef33fe353db643849fab7d 100644 +index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..d409ae987088df3d47192128401d7491aaabc87c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java @@ -67,7 +67,7 @@ public class RunAroundLikeCrazyGoal extends Goal { @@ -15,49 +15,49 @@ index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..a3074ec9b430c9d0a0ef33fe353db643 int j = this.horse.getMaxTemper(); - if (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent -+ if ((this.horse.level().purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // CraftBukkit - fire EntityTameEvent // Purpur ++ if ((this.horse.level().purpurConfig.alwaysTameInCreative && entityhuman.hasInfiniteMaterials()) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // CraftBukkit - fire EntityTameEvent // Purpur this.horse.tameWithName(entityhuman); return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index a4b3d724f30ccf0eddfb41d6997d0aa9b1847b7a..d9b19f74b377721ed78cd0ea24d25e412cef1398 100644 +index 446aec4d10e614f136fe6ae4bb5a7dd0ac6d0f18..17aaeb734a5c1b16bd7771c909958f3acc956b7a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -471,7 +471,7 @@ public class Cat extends TamableAnimal implements VariantHolder { - } - } else if (this.isFood(itemstack)) { - this.usePlayerItem(player, hand, itemstack); -- if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit -+ if ((this.level().purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur - this.tame(player); - this.setOrderedToSit(true); - this.level().broadcastEntityEvent(this, (byte) 7); +@@ -522,7 +522,7 @@ public class Cat extends TamableAnimal implements VariantHolder iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 7056c8ca7a87748f14142c6af274aae492f29f1c..d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7 100644 +index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..a375d40ec6365ba8704ba3ece22dd5b2de9857b5 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -97,6 +97,11 @@ public class CombatTracker { +@@ -98,6 +98,11 @@ public class CombatTracker { Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable(string + ".link")).withStyle(INTENTIONAL_GAME_DESIGN_STYLE); return Component.translatable(string + ".message", this.mob.getDisplayName(), component); } else { @@ -53,10 +53,10 @@ index 7056c8ca7a87748f14142c6af274aae492f29f1c..d8c5fb5432f0b09124d7f4dbc7b50859 } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 61741b6ecf4fa2b0d4a1c44c825e8fcdeb412c0a..5cbbff174b6f10bebe1923c10f84fc26e4d3000e 100644 +index 43b9a7e8ed9043c4d3f8295258a27209ddb4474b..9c18134cb5474a7f3be2337036c7af253ec0b21e 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -27,6 +27,7 @@ public class DamageSource { +@@ -28,6 +28,7 @@ public class DamageSource { private boolean withSweep = false; private boolean melting = false; private boolean poison = false; @@ -64,7 +64,7 @@ index 61741b6ecf4fa2b0d4a1c44c825e8fcdeb412c0a..5cbbff174b6f10bebe1923c10f84fc26 @Nullable private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API -@@ -57,6 +58,17 @@ public class DamageSource { +@@ -58,6 +59,17 @@ public class DamageSource { return this.poison; } @@ -82,7 +82,7 @@ index 61741b6ecf4fa2b0d4a1c44c825e8fcdeb412c0a..5cbbff174b6f10bebe1923c10f84fc26 // Paper start - fix DamageSource API public @Nullable Entity getCustomEventDamager() { return (this.customEventDamager != null) ? this.customEventDamager : this.directEntity; -@@ -100,6 +112,7 @@ public class DamageSource { +@@ -101,6 +113,7 @@ public class DamageSource { damageSource.withSweep = this.isSweep(); damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); @@ -91,7 +91,7 @@ index 61741b6ecf4fa2b0d4a1c44c825e8fcdeb412c0a..5cbbff174b6f10bebe1923c10f84fc26 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index a47473c9875c70c52b9a61e0156e55961f34c694..23c7f22dacc570837120c28e0a57f8c9155e92fc 100644 +index 8ba60de95845f4d56f299c5f1b2b5163461ba38d..b3d7790fa3e873f2e9b8fa4e4e749ef9c06973b9 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -44,11 +44,13 @@ public class DamageSources { diff --git a/patches/unapplied-server/0132-One-Punch-Man.patch b/patches/server/0129-One-Punch-Man.patch similarity index 94% rename from patches/unapplied-server/0132-One-Punch-Man.patch rename to patches/server/0129-One-Punch-Man.patch index cf260c8e5..2822aac81 100644 --- a/patches/unapplied-server/0132-One-Punch-Man.patch +++ b/patches/server/0129-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 787a2d1b8c887e17f9f9565c292c585e996ca1d2..e4592de07e66e2eb89b5555d747253203c84c608 100644 +index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..e8a92e4941ab7d638d3e3ac5ad8d6314bede17c0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2356,6 +2356,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2382,6 +2382,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 98% rename from patches/unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 4cf28ab17..a3c40a472 100644 --- a/patches/unapplied-server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -30,7 +30,7 @@ index 1fb1e729d6879568d8b4943071fa940325b2e5b0..b61d659dc48f795c7f2d62044c245e34 // CraftBukkit end this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_TELEPORT, SoundSource.PLAYERS); diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java -index 8c8cf8705107c95d9a4eab28b5845ae13c4ffb3c..a0c2650678848416829c7185a530fcd63bb68039 100644 +index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9fff70a5c7b 100644 --- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java +++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java @@ -36,7 +36,7 @@ public class EnderpearlItem extends Item { diff --git a/patches/unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 93% rename from patches/unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch index 424d5ed7e..216674887 100644 --- a/patches/unapplied-server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0..6df13e5920a9191751ada925c272e2dba30396cb 100644 +index 9bf6457ed689d38393c17732dc9229d9fc297584..0957b0fba3ffbc3571e5aef7eb2b550dab19c0cf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1428,7 +1428,7 @@ public class ServerPlayer extends Player { +@@ -1505,7 +1505,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/unapplied-server/0135-Add-back-player-spawned-endermite-API.patch b/patches/server/0132-Add-back-player-spawned-endermite-API.patch similarity index 92% rename from patches/unapplied-server/0135-Add-back-player-spawned-endermite-API.patch rename to patches/server/0132-Add-back-player-spawned-endermite-API.patch index 7ed289a00..33e1c6a57 100644 --- a/patches/unapplied-server/0135-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0132-Add-back-player-spawned-endermite-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add back player spawned endermite API diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a354ac412d 100644 +index 514354bfcd0608554fd515248975fb107eddf427..c5fcefc6810c2127d6a0a48f95c50c2e15a4dd52 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -37,6 +37,7 @@ public class Endermite extends Monster { +@@ -32,6 +32,7 @@ public class Endermite extends Monster { private static final int MAX_LIFE = 2400; public int life; @@ -16,7 +16,7 @@ index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a3 public Endermite(EntityType type, Level world) { super(type, world); -@@ -70,6 +71,14 @@ public class Endermite extends Monster { +@@ -65,6 +66,14 @@ public class Endermite extends Monster { return this.level().purpurConfig.endermiteTakeDamageFromWater; } @@ -31,7 +31,7 @@ index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a3 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -122,12 +131,14 @@ public class Endermite extends Monster { +@@ -112,12 +121,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.life = nbt.getInt("Lifetime"); diff --git a/patches/unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 95% rename from patches/unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch index 0b382ffab..d2499c083 100644 --- a/patches/unapplied-server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0133-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 065e7c0d1cd1d3bbf72b03dd73dd9e567aec642b..df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728 100644 +index 17b044e58d2ed33ed16e60f4fd4f63b2ee3f854d..4821aec304399c64cbcff741334567a08b840c0a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -129,7 +129,7 @@ public class EnderMan extends Monster implements NeutralMob { this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); diff --git a/patches/unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 94% rename from patches/unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 27e8d0d51..74eddfd31 100644 --- a/patches/unapplied-server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,10 +7,10 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728..7621237df388ee10ef962b0c4e795c9de88762d0 100644 +index 4821aec304399c64cbcff741334567a08b840c0a..b361c6b4ca17b9d466555037235a5660caa5c9bd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -266,7 +266,7 @@ public class EnderMan extends Monster implements NeutralMob { // Paper end - EndermanAttackPlayerEvent ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3); diff --git a/patches/unapplied-server/0138-Tick-fluids-config.patch b/patches/server/0135-Tick-fluids-config.patch similarity index 82% rename from patches/unapplied-server/0138-Tick-fluids-config.patch rename to patches/server/0135-Tick-fluids-config.patch index c07809762..9435bd39b 100644 --- a/patches/unapplied-server/0138-Tick-fluids-config.patch +++ b/patches/server/0135-Tick-fluids-config.patch @@ -5,31 +5,31 @@ Subject: [PATCH] Tick fluids config diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -index 9b3dcf1a4d4cece92a629506d341f6bfe79d13d0..0ed39daf88a98f7fa887fb45d4f7c0348a607551 100644 +index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b020e6425d6 100644 --- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -@@ -139,7 +139,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -137,7 +137,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override - public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { - if (this.shouldSpreadLiquid(world, pos, state)) { + if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava } -@@ -167,7 +167,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -165,7 +165,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (state.getFluidState().isSource() || neighborState.getFluidState().isSource()) { + if (world.getMinecraftWorld().purpurConfig.tickFluids && state.getFluidState().isSource() || neighborState.getFluidState().isSource()) { // Purpur world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world)); } -@@ -176,7 +176,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -174,7 +174,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { + protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { - if (this.shouldSpreadLiquid(world, pos, state)) { + if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava diff --git a/patches/unapplied-server/0139-Config-to-disable-Llama-caravans.patch b/patches/server/0136-Config-to-disable-Llama-caravans.patch similarity index 93% rename from patches/unapplied-server/0139-Config-to-disable-Llama-caravans.patch rename to patches/server/0136-Config-to-disable-Llama-caravans.patch index a9f999fac..5fdb597c2 100644 --- a/patches/unapplied-server/0139-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0136-Config-to-disable-Llama-caravans.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to disable Llama caravans Disables the mechanic where llamas follow leashed llamas. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 50622e300950b017b41a6f85643c8827a0113225..1a8ae9a692ea0727ad79c6061a11054ee496fa20 100644 +index eb0faf58fa1a408f294fc62120b140def97f998d..0f4f546cd0eda4bd82b47446ae23ac32da8a9556 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -19,10 +19,10 @@ index 50622e300950b017b41a6f85643c8827a0113225..1a8ae9a692ea0727ad79c6061a11054e List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index fb2b0ebd9314ab7fc911e842767bd60b1db92b96..30493e675d6308d65a4d4fa3fea601b6d7e4fa76 100644 +index 87ec5bd632353ce364de29c5d56460551b6a4139..12ff4091674f7efb3e324df0df2d798dcbc46027 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 -@@ -519,7 +519,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { -@@ -269,6 +270,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -270,6 +271,14 @@ public class Creeper extends Monster implements PowerableMob { return this.level().purpurConfig.creeperTakeDamageFromWater; } @@ -32,7 +32,7 @@ index eb2c80a50bd29ad4ab9ece0ce5d71f3713700fba..743d888c07450ea9e2367d169e20a583 @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; -@@ -360,6 +369,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -358,6 +367,7 @@ public class Creeper extends Monster implements PowerableMob { } public void explodeCreeper() { @@ -40,7 +40,7 @@ index eb2c80a50bd29ad4ab9ece0ce5d71f3713700fba..743d888c07450ea9e2367d169e20a583 if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; -@@ -378,7 +388,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -376,7 +386,7 @@ public class Creeper extends Monster implements PowerableMob { } // CraftBukkit end } diff --git a/patches/unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0138-Configurable-ravager-griefable-blocks-list.patch similarity index 92% rename from patches/unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0138-Configurable-ravager-griefable-blocks-list.patch index ac56d6077..688d26971 100644 --- a/patches/unapplied-server/0141-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0138-Configurable-ravager-griefable-blocks-list.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable ravager griefable blocks list diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index db5e55f2bca1d0706d24ebf7c0b5c2592b04f0bc..03ed7c56bb7f2d32722ebedb8eb07765ab39079a 100644 +index e592b5ee3a0bfce987557defed8250682373fe65..ea9714b561d2cccad3ce012a118d200100ccd1e8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -191,7 +191,7 @@ public class Ravager extends Raider { +@@ -183,7 +183,7 @@ public class Ravager extends Raider { BlockState iblockdata = this.level().getBlockState(blockposition); Block block = iblockdata.getBlock(); @@ -18,12 +18,12 @@ index db5e55f2bca1d0706d24ebf7c0b5c2592b04f0bc..03ed7c56bb7f2d32722ebedb8eb07765 if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state continue; diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 07b148fc31aee3ce009d1d768ae16d98268339cc..55e28eef76d9d534037d888d85c0609052478118 100644 +index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f900817cbfd 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -179,7 +179,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @Override - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur + if (entity instanceof Ravager && world.purpurConfig.ravagerGriefableBlocks.contains(world.getBlockState(pos).getBlock()) && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur diff --git a/patches/server/0139-Sneak-to-bulk-process-composter.patch b/patches/server/0139-Sneak-to-bulk-process-composter.patch new file mode 100644 index 000000000..e97cc49c7 --- /dev/null +++ b/patches/server/0139-Sneak-to-bulk-process-composter.patch @@ -0,0 +1,102 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sun, 7 May 2023 22:26:59 -0700 +Subject: [PATCH] Sneak to bulk process composter + + +diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +index 5cedce1f432f6b809b25269242a16477682c824f..61ff2f6c09251da8c34fd653020cd4d3b46a4371 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +@@ -573,7 +573,7 @@ public class ServerPlayerGameMode { + ItemStack itemstack1 = stack.copy(); + InteractionResult enuminteractionresult; + +- if (!flag1) { ++ if (!flag1 || (player.level().purpurConfig.composterBulkProcess && iblockdata.is(Blocks.COMPOSTER))) { // Purpur + ItemInteractionResult iteminteractionresult = iblockdata.useItemOn(player.getItemInHand(hand), world, player, hand, hitResult); + + if (iteminteractionresult.consumesAction()) { +diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +index d3d12f9114173f4971f95d7ef895a4374705bd3f..750c9043c2b70b18fb34df1e856e3cbb6c651770 100644 +--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +@@ -238,16 +238,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { + + if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(stack.getItem())) { + if (i < 7 && !world.isClientSide) { +- BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack); +- // Paper start - handle cancelled events +- if (iblockdata1 == null) { ++ // Purpur start ++ BlockState newState = process(stack, state, world, pos, player, i); ++ if (newState == null) { + return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; + } +- // Paper end +- +- world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); +- player.awardStat(Stats.ITEM_USED.get(stack.getItem())); +- stack.consume(1, player); ++ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown()) { ++ BlockState oldState; ++ int oldCount, newCount, oldLevel, newLevel; ++ do { ++ oldState = newState; ++ newState = process(stack, state, world, pos, player, i); ++ oldCount = stack.getCount(); ++ if (newState == null) { ++ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; ++ } ++ oldLevel = oldState.getValue(ComposterBlock.LEVEL); ++ newCount = stack.getCount(); ++ newLevel = newState.getValue(ComposterBlock.LEVEL); ++ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); ++ } + } + + return ItemInteractionResult.sidedSuccess(world.isClientSide); +@@ -255,6 +265,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { + return super.useItemOn(stack, state, world, pos, player, hand, hit); + } + } ++ private static BlockState process(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, int i) { ++ // Purpur end ++ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack); ++ // Paper start - handle cancelled events ++ if (iblockdata1 == null) { ++ return null; // Purpur ++ } ++ // Paper end ++ ++ world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); ++ player.awardStat(Stats.ITEM_USED.get(stack.getItem())); ++ stack.consume(1, player); ++ // Purpur start ++ // } ++ // ++ // return ItemInteractionResult.sidedSuccess(world.isClientSide); ++ // } else { ++ // return super.useItemOn(stack, state, world, pos, player, hand, hit); ++ // } ++ // } ++ // Purpur end + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index cc365ef1a435c05639e1261bc349df3517e4a44b..5739e18827d77dc594894f7cf8d7ceb9f7b83df1 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -479,6 +479,11 @@ public class PurpurWorldConfig { + chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); + } + ++ public boolean composterBulkProcess = false; ++ private void composterSettings() { ++ composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); ++ } ++ + public boolean dispenserApplyCursedArmor = true; + public boolean dispenserPlaceAnvils = false; + private void dispenserSettings() { diff --git a/patches/unapplied-server/0143-Config-for-skipping-night.patch b/patches/server/0140-Config-for-skipping-night.patch similarity index 93% rename from patches/unapplied-server/0143-Config-for-skipping-night.patch rename to patches/server/0140-Config-for-skipping-night.patch index 03ee9ce11..fc7479f27 100644 --- a/patches/unapplied-server/0143-Config-for-skipping-night.patch +++ b/patches/server/0140-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b0e9bc26843c61b735a2045a154152df4b6aa28a..74f9b208b822ef3c53113004b40366e44fdb8201 100644 +index aef5157d183b69903fd215a5ce30c0705ba8fa3e..bcdef2c9bb116409445a4ef65c5e407c1003a55d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -840,7 +840,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -846,7 +846,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; diff --git a/patches/unapplied-server/0144-Add-config-for-villager-trading.patch b/patches/server/0141-Add-config-for-villager-trading.patch similarity index 94% rename from patches/unapplied-server/0144-Add-config-for-villager-trading.patch rename to patches/server/0141-Add-config-for-villager-trading.patch index 1b56264f9..d3ced25a0 100644 --- a/patches/unapplied-server/0144-Add-config-for-villager-trading.patch +++ b/patches/server/0141-Add-config-for-villager-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading 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 870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5..ee509b5eea71c17ff466fb93fe63168710065add 100644 +index c9cfbc8817fe62e22cb165f856ed8569668c0a60..a7c85c9efd13145cc061a3a0076b44a7af9812b9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -373,7 +373,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -371,7 +371,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur @@ -18,7 +18,7 @@ index 870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5..ee509b5eea71c17ff466fb93fe631687 } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 381e86286eabdbc254cd8901c498dd781521ed4d..657fdbabf18da7ab321e8e95a31d53362c605380 100644 +index c192f4cc5fd9cb0cf40083c4297f649ab909649d..0d11200ab580cc306602c29c61f7619565d8261d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -154,7 +154,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/server/0142-Allow-infinity-on-crossbows.patch b/patches/server/0142-Allow-infinity-on-crossbows.patch new file mode 100644 index 000000000..334c97155 --- /dev/null +++ b/patches/server/0142-Allow-infinity-on-crossbows.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Kerllenevich +Date: Thu, 18 Mar 2021 12:25:29 -0400 +Subject: [PATCH] Allow infinity on crossbows + + +diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java +index 0f6504a7160bc304b3af554f8740c65e2987cd37..a3614405a92f26f19fb1df24f685cb7c081333db 100644 +--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java ++++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java +@@ -107,7 +107,7 @@ public class CrossbowItem extends ProjectileWeaponItem { + return CrossbowItem.tryLoadProjectiles(shooter, crossbow, true); + } + private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbow, boolean consume) { +- List list = draw(crossbow, shooter.getProjectile(crossbow), shooter, consume); ++ List list = draw(crossbow, shooter.getProjectile(crossbow), shooter, (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, crossbow) > 0) || consume); + // Paper end - Add EntityLoadCrossbowEvent + if (!list.isEmpty()) { + crossbow.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(list)); +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 6714c095714c3a34464b9190be964ceaac718d45..11b8f16a39011500d28f72e9c40fc3ca4b0f0fad 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -284,6 +284,7 @@ public class PurpurConfig { + } + + public static boolean allowInfinityMending = false; ++ public static boolean allowCrossbowInfinity = true; + private static void enchantmentSettings() { + if (version < 5) { + boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); +@@ -291,6 +292,7 @@ public class PurpurConfig { + set("settings.enchantment.allow-infinite-and-mending-together", null); + } + allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); ++ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); + } + + public static boolean endermanShortHeight = false; diff --git a/patches/unapplied-server/0146-Drowning-Settings.patch b/patches/server/0143-Drowning-Settings.patch similarity index 88% rename from patches/unapplied-server/0146-Drowning-Settings.patch rename to patches/server/0143-Drowning-Settings.patch index 89ea17d2e..f98348e8f 100644 --- a/patches/unapplied-server/0146-Drowning-Settings.patch +++ b/patches/server/0143-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 09d131178fb6428ba65cd4f08a5badb8693be626..53c20b7e1e8d27b4a13e18ae8fa437e83b208c78 100644 +index 1ec1f023d7eee5714c94dbb6c842444f70603f40..5f19cc285efac25b56a29242b41c2823020f170e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3413,7 +3413,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3452,7 +3452,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index 09d131178fb6428ba65cd4f08a5badb8693be626..53c20b7e1e8d27b4a13e18ae8fa437e8 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e4592de07e66e2eb89b5555d747253203c84c608..83be9f0a75371046f7c4e1e8b064a7c7534c74f6 100644 +index e8a92e4941ab7d638d3e3ac5ad8d6314bede17c0..6f55a7243ee960b132ef4e133dc98b8eb7e18855 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -452,7 +452,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index e4592de07e66e2eb89b5555d747253203c84c608..83be9f0a75371046f7c4e1e8b064a7c7 this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -451,7 +451,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -464,7 +464,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/unapplied-server/0147-Break-individual-slabs-when-sneaking.patch b/patches/server/0144-Break-individual-slabs-when-sneaking.patch similarity index 93% rename from patches/unapplied-server/0147-Break-individual-slabs-when-sneaking.patch rename to patches/server/0144-Break-individual-slabs-when-sneaking.patch index 2e65d9dee..36461bd74 100644 --- a/patches/unapplied-server/0147-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0144-Break-individual-slabs-when-sneaking.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index ac49288d59eee3657e0db9ed385248f6b91095cc..1aa98f8ff062a906035c62875c454aeb0bc6f179 100644 +index 61ff2f6c09251da8c34fd653020cd4d3b46a4371..a810eaa7dc319f5ea69b239190ae91838bfad4ec 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -397,6 +397,7 @@ public class ServerPlayerGameMode { +@@ -400,6 +400,7 @@ public class ServerPlayerGameMode { } else {capturedBlockEntity = true;} // Paper - Send block entities after destroy prediction return false; } @@ -17,7 +17,7 @@ index ac49288d59eee3657e0db9ed385248f6b91095cc..1aa98f8ff062a906035c62875c454aeb // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java -index 70544a7bd9205f2438abcc576e94ad632dc37c58..e4032c851210d7e187d06e4c0f91b492933c9d67 100644 +index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b21a065f0b 100644 --- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java @@ -138,4 +138,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { diff --git a/patches/unapplied-server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/unapplied-server/0148-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0145-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0146-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 91% rename from patches/unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0146-Config-to-show-Armor-Stand-arms-on-spawn.patch index b313afb1d..5dd317158 100644 --- a/patches/unapplied-server/0149-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0146-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 40550897d5be12fcb8e1e751ee2e7a138512ce0b..fef18455da5ae020f9875663984b26e54a1c4bf7 100644 +index 89f600edda9a1c5d1b132355fefb7eaed77c52f5..6697cd8a632becd72ee132007a61d1221e817abf 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -115,6 +115,7 @@ public class ArmorStand extends LivingEntity { +@@ -117,6 +117,7 @@ public class ArmorStand extends LivingEntity { + this.rightArmPose = ArmorStand.DEFAULT_RIGHT_ARM_POSE; this.leftLegPose = ArmorStand.DEFAULT_LEFT_LEG_POSE; this.rightLegPose = ArmorStand.DEFAULT_RIGHT_LEG_POSE; - this.setMaxUpStep(0.0F); + this.setShowArms(world != null && world.purpurConfig.armorstandPlaceWithArms); // Purpur } diff --git a/patches/unapplied-server/0150-Option-to-make-doors-require-redstone.patch b/patches/server/0147-Option-to-make-doors-require-redstone.patch similarity index 92% rename from patches/unapplied-server/0150-Option-to-make-doors-require-redstone.patch rename to patches/server/0147-Option-to-make-doors-require-redstone.patch index b24abf052..92b8e95f8 100644 --- a/patches/unapplied-server/0150-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0147-Option-to-make-doors-require-redstone.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make doors require redstone diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -index 42ae4d293a420f0b8eb476df6389b2e7a693895f..97c20c5b89e6d7e4ed844eff39ee55dfa8988d37 100644 +index 736f46d552d558bf0edd9a86601b5fbb6940815b..cf039181dfe0ddb3ccda44064a5d8a2f6c5c432c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java @@ -57,7 +57,7 @@ public class InteractWithDoor { @@ -36,18 +36,18 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..97c20c5b89e6d7e4ed844eff39ee55df } else { DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java -index ed57fbcfcff29a71026b0600b02daf4178d78429..31a5d3a5642123983b8c7df49be04f25141d15a2 100644 +index 42d43b7a7e3b7c53cc80b8706c130e660f2c72da..96199441202ad929ad0274574704635c538a93c7 100644 --- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java @@ -198,6 +198,7 @@ public class DoorBlock extends Block { - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; + } else if (requiresRedstone(world, state, pos)) { return InteractionResult.CONSUME; // Purpur } else { state = (BlockState) state.cycle(DoorBlock.OPEN); world.setBlock(pos, state, 10); -@@ -301,4 +302,18 @@ public class DoorBlock extends Block { +@@ -299,4 +300,18 @@ public class DoorBlock extends Block { flag = false; return flag; } diff --git a/patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch b/patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch deleted file mode 100644 index 3490c2e65..000000000 --- a/patches/unapplied-server/0142-Sneak-to-bulk-process-composter.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 7 May 2023 22:26:59 -0700 -Subject: [PATCH] Sneak to bulk process composter - - -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index a7b217ddbcbf92513bd38101fdfca2075505e267..ac49288d59eee3657e0db9ed385248f6b91095cc 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -577,7 +577,7 @@ public class ServerPlayerGameMode { - boolean flag1 = player.isSecondaryUseActive() && flag; - ItemStack itemstack1 = stack.copy(); - -- if (!flag1) { -+ if (!flag1 || (player.level().purpurConfig.composterBulkProcess && iblockdata.is(Blocks.COMPOSTER))) { // Purpur - enuminteractionresult = iblockdata.use(world, player, hand, hitResult); - - if (enuminteractionresult.consumesAction()) { -diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -index f9084e2605d7403721fe6b714bfad051f932aaef..47b7baa41f341087bcd5dfec1d2a13b96f8357ca 100644 ---- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -@@ -236,20 +236,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { - ItemStack itemstack = player.getItemInHand(hand); - - if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(itemstack.getItem())) { -- if (i < 7 && !world.isClientSide) { -- BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack); -- // Paper start - handle cancelled events -- if (iblockdata1 == null) { -- return InteractionResult.PASS; -- } -- // Paper end -+ // Purpur start -+ BlockState newState = process(i, state, world, itemstack, pos, player); -+ if (newState == null) { -+ return InteractionResult.PASS; -+ } - -- world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); -- player.awardStat(Stats.ITEM_USED.get(itemstack.getItem())); -- if (!player.getAbilities().instabuild) { -- itemstack.shrink(1); -- } -+ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown() && newState != state) { -+ BlockState oldState; -+ int oldCount, newCount, oldLevel, newLevel; -+ do { -+ oldState = newState; -+ oldCount = itemstack.getCount(); -+ oldLevel = oldState.getValue(ComposterBlock.LEVEL); -+ newState = process(oldLevel, oldState, world, itemstack, pos, player); -+ if (newState == null) { -+ return InteractionResult.PASS; -+ } -+ newCount = itemstack.getCount(); -+ newLevel = newState.getValue(ComposterBlock.LEVEL); -+ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); - } -+ // Purpur end - - return InteractionResult.sidedSuccess(world.isClientSide); - } else if (i == 8) { -@@ -260,6 +268,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { - } - } - -+ private static BlockState process(int level, BlockState state, Level world, ItemStack itemstack, BlockPos pos, Player player) { -+ if (level < 7 && !world.isClientSide) { -+ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack); -+ // Paper start - handle cancelled events -+ if (iblockdata1 == null) { -+ return iblockdata1; -+ } -+ // Paper end -+ -+ world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); -+ player.awardStat(Stats.ITEM_USED.get(itemstack.getItem())); -+ if (!player.getAbilities().instabuild) { -+ itemstack.shrink(1); -+ } -+ return iblockdata1; -+ } -+ return state; -+ } -+ // Purpur end -+ - public static BlockState insertItem(Entity user, BlockState state, ServerLevel world, ItemStack stack, BlockPos pos) { - int i = (Integer) state.getValue(ComposterBlock.LEVEL); - -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc365ef1a435c05639e1261bc349df3517e4a44b..5739e18827d77dc594894f7cf8d7ceb9f7b83df1 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -479,6 +479,11 @@ public class PurpurWorldConfig { - chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); - } - -+ public boolean composterBulkProcess = false; -+ private void composterSettings() { -+ composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); -+ } -+ - public boolean dispenserApplyCursedArmor = true; - public boolean dispenserPlaceAnvils = false; - private void dispenserSettings() { diff --git a/patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch b/patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch deleted file mode 100644 index c991fda10..000000000 --- a/patches/unapplied-server/0145-Allow-infinity-on-crossbows.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Thu, 18 Mar 2021 12:25:29 -0400 -Subject: [PATCH] Allow infinity on crossbows - - -diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index f3a428f80c265639250114498b10067b4bf1ada1..f9a9bc27670bb7ec82a609f202edbde6b5a4fd46 100644 ---- a/src/main/java/net/minecraft/world/item/CrossbowItem.java -+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -114,7 +114,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { - // Paper end - Add EntityLoadCrossbowEvent - int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, crossbow); - int j = i == 0 ? 1 : 3; -- boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - Add EntityLoadCrossbowEvent -+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, crossbow) > 0); // Paper - Add EntityLoadCrossbowEvent // Purpur - ItemStack itemstack1 = shooter.getProjectile(crossbow); - ItemStack itemstack2 = itemstack1.copy(); - -@@ -300,7 +300,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { - - for (int i = 0; i < list.size(); ++i) { - ItemStack itemstack1 = (ItemStack) list.get(i); -- boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild; -+ boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, stack) > 0); // Purpur - - if (!itemstack1.isEmpty()) { - if (i == 0) { -diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 01796071135d27e0b8801f585a6d96b8f3a31f6c..127950c54ae057b3d0eb62e8f81d5eef6f11a36c 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -@@ -7,6 +7,14 @@ public class ArrowInfiniteEnchantment extends Enchantment { - super(weight, EnchantmentCategory.BOW, slotTypes); - } - -+ // Purpur start -+ @Override -+ public boolean canEnchant(net.minecraft.world.item.ItemStack stack) { -+ // we have to cheat the system because this class is loaded before purpur's config is loaded -+ return (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW).canEnchant(stack.getItem()); -+ } -+ // Purpur end -+ - @Override - public int getMinCost(int level) { - return 20; -diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -index afd74b274aa46b1e2187935ebeb2a8824a133867..cc83aa539f8538fbaed8a3e52d9d9d8901e4793d 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -@@ -113,6 +113,14 @@ public enum EnchantmentCategory { - public boolean canEnchant(Item item) { - return item instanceof Vanishable || Block.byItem(item) instanceof Vanishable || BREAKABLE.canEnchant(item); - } -+ // Purpur start -+ }, -+ BOW_AND_CROSSBOW { -+ @Override -+ public boolean canEnchant(Item item) { -+ return item instanceof BowItem || item instanceof CrossbowItem; -+ } -+ // Purpur end - }; - - public abstract boolean canEnchant(Item item); -diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index a151b5d7c6e41b08e57c806bc43e067af48263ed..c1be4eb145e1a7e7749d24958bfed5c8268f1131 100644 ---- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -@@ -71,6 +71,7 @@ public class CraftEnchantment extends Enchantment implements Handleable EnchantmentTarget.TRIDENT; - case CROSSBOW -> EnchantmentTarget.CROSSBOW; - case VANISHABLE -> EnchantmentTarget.VANISHABLE; -+ case BOW_AND_CROSSBOW -> EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur - }; - } - -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6714c095714c3a34464b9190be964ceaac718d45..0e254b7b1709f745a7d7c0e3cefda96d726de556 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -284,6 +284,7 @@ public class PurpurConfig { - } - - public static boolean allowInfinityMending = false; -+ public static boolean allowCrossbowInfinity = false; - private static void enchantmentSettings() { - if (version < 5) { - boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -291,6 +292,7 @@ public class PurpurConfig { - set("settings.enchantment.allow-infinite-and-mending-together", null); - } - allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); -+ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); - } - - public static boolean endermanShortHeight = false; From cb09d0959d309b5c871f76d4b968d885d240895f Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 00:52:48 -0700 Subject: [PATCH 102/148] 200... --- ...Config-to-allow-for-unsafe-enchants.patch} | 70 +++++++------- ...0149-Configurable-sponge-absorption.patch} | 2 +- .../0150-Projectile-offset-config.patch} | 58 ++++++------ ...or-powered-rail-activation-distance.patch} | 2 +- .../0152-Piglin-portal-spawn-modifier.patch} | 4 +- ...Config-to-change-max-number-of-bees.patch} | 6 +- ...-Config-for-wither-explosion-radius.patch} | 2 +- .../0155-Gamemode-extra-permissions.patch} | 6 +- ...0156-Configurable-piston-push-limit.patch} | 0 ...157-Configurable-broadcast-settings.patch} | 8 +- .../0158-Configurable-mob-blindness.patch} | 4 +- ...hidden-players-from-entity-selector.patch} | 2 +- ...-to-impact-Creeper-explosion-radius.patch} | 4 +- .../0161-Iron-golem-calm-anger-options.patch} | 10 +- .../0162-Breedable-parrots.patch} | 14 +-- ...gurable-powered-rail-boost-modifier.patch} | 4 +- ...ge-multiplier-critical-damage-value.patch} | 18 ++-- ...n-to-disable-dragon-egg-teleporting.patch} | 4 +- ...fig-for-unverified-username-message.patch} | 6 +- ...-anvil-cumulative-cost-configurable.patch} | 10 +- ...e-can-work-when-raining-or-at-night.patch} | 10 +- ...69-API-for-any-mob-to-burn-daylight.patch} | 91 +++++++++---------- .../0170-Config-MobEffect-by-world.patch} | 52 +++++------ ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 6 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 21 ++--- ...ayer-join-full-server-by-permission.patch} | 4 +- .../0175-Add-portal-permission-bypass.patch} | 10 +- ...6-Shulker-spawn-from-bullet-options.patch} | 10 +- ...ating-glow-berries-adds-glow-effect.patch} | 8 +- ...-Option-to-make-drowned-break-doors.patch} | 6 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- .../0180-Enhance-SysoutCatcher.patch} | 0 .../0181-Add-uptime-command.patch} | 10 +- .../0182-Tool-actionable-options.patch} | 20 ++-- ...3-Store-placer-on-Block-when-placed.patch} | 12 +-- .../0184-Summoner-API.patch} | 40 ++++---- ...mizable-sleeping-actionbar-messages.patch} | 10 +- ...-shulker-box-items-from-dropping-co.patch} | 19 ++-- .../0187-Big-dripleaf-tilt-delay.patch} | 4 +- ...0188-Player-ridable-in-water-option.patch} | 8 +- ...-Enderman-teleport-on-projectile-hi.patch} | 4 +- .../0190-Add-compass-command.patch} | 21 +++-- .../0191-Toggle-for-kinetic-damage.patch} | 4 +- ...-Option-for-disable-observer-clocks.patch} | 4 +- ...zeable-Zombie-Villager-curing-times.patch} | 8 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 2 +- ...195-Toggle-for-Wither-s-spawn-sound.patch} | 4 +- ...-breaks-from-solid-neighbors-config.patch} | 2 +- ...move-curse-of-binding-with-weakness.patch} | 4 +- 50 files changed, 318 insertions(+), 318 deletions(-) rename patches/{unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch => server/0148-Config-to-allow-for-unsafe-enchants.patch} (67%) rename patches/{unapplied-server/0152-Configurable-sponge-absorption.patch => server/0149-Configurable-sponge-absorption.patch} (95%) rename patches/{unapplied-server/0153-Projectile-offset-config.patch => server/0150-Projectile-offset-config.patch} (74%) rename patches/{unapplied-server/0154-Config-for-powered-rail-activation-distance.patch => server/0151-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/{unapplied-server/0155-Piglin-portal-spawn-modifier.patch => server/0152-Piglin-portal-spawn-modifier.patch} (93%) rename patches/{unapplied-server/0156-Config-to-change-max-number-of-bees.patch => server/0153-Config-to-change-max-number-of-bees.patch} (90%) rename patches/{unapplied-server/0157-Config-for-wither-explosion-radius.patch => server/0154-Config-for-wither-explosion-radius.patch} (96%) rename patches/{unapplied-server/0158-Gamemode-extra-permissions.patch => server/0155-Gamemode-extra-permissions.patch} (95%) rename patches/{unapplied-server/0159-Configurable-piston-push-limit.patch => server/0156-Configurable-piston-push-limit.patch} (100%) rename patches/{unapplied-server/0160-Configurable-broadcast-settings.patch => server/0157-Configurable-broadcast-settings.patch} (90%) rename patches/{unapplied-server/0161-Configurable-mob-blindness.patch => server/0158-Configurable-mob-blindness.patch} (95%) rename patches/{unapplied-server/0162-Hide-hidden-players-from-entity-selector.patch => server/0159-Hide-hidden-players-from-entity-selector.patch} (98%) rename patches/{unapplied-server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch => server/0160-Config-for-health-to-impact-Creeper-explosion-radius.patch} (94%) rename patches/{unapplied-server/0164-Iron-golem-calm-anger-options.patch => server/0161-Iron-golem-calm-anger-options.patch} (94%) rename patches/{unapplied-server/0165-Breedable-parrots.patch => server/0162-Breedable-parrots.patch} (87%) rename patches/{unapplied-server/0166-Configurable-powered-rail-boost-modifier.patch => server/0163-Configurable-powered-rail-boost-modifier.patch} (93%) rename patches/{unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch => server/0164-Add-config-change-multiplier-critical-damage-value.patch} (76%) rename patches/{unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch => server/0165-Option-to-disable-dragon-egg-teleporting.patch} (91%) rename patches/{unapplied-server/0169-Config-for-unverified-username-message.patch => server/0166-Config-for-unverified-username-message.patch} (92%) rename patches/{unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch => server/0167-Make-anvil-cumulative-cost-configurable.patch} (83%) rename patches/{unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch => server/0168-Bee-can-work-when-raining-or-at-night.patch} (87%) rename patches/{unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch => server/0169-API-for-any-mob-to-burn-daylight.patch} (83%) rename patches/{unapplied-server/0173-Config-MobEffect-by-world.patch => server/0170-Config-MobEffect-by-world.patch} (81%) rename patches/{unapplied-server/0174-Beacon-Activation-Range-Configurable.patch => server/0171-Beacon-Activation-Range-Configurable.patch} (93%) rename patches/{unapplied-server/0175-Make-lightning-rod-range-configurable.patch => server/0172-Make-lightning-rod-range-configurable.patch} (89%) rename patches/{unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (84%) rename patches/{unapplied-server/0177-Allow-player-join-full-server-by-permission.patch => server/0174-Allow-player-join-full-server-by-permission.patch} (90%) rename patches/{unapplied-server/0178-Add-portal-permission-bypass.patch => server/0175-Add-portal-permission-bypass.patch} (83%) rename patches/{unapplied-server/0179-Shulker-spawn-from-bullet-options.patch => server/0176-Shulker-spawn-from-bullet-options.patch} (93%) rename patches/{unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch => server/0177-Eating-glow-berries-adds-glow-effect.patch} (92%) rename patches/{unapplied-server/0181-Option-to-make-drowned-break-doors.patch => server/0178-Option-to-make-drowned-break-doors.patch} (93%) rename patches/{unapplied-server/0182-Configurable-hunger-starvation-damage.patch => server/0179-Configurable-hunger-starvation-damage.patch} (93%) rename patches/{unapplied-server/0183-Enhance-SysoutCatcher.patch => server/0180-Enhance-SysoutCatcher.patch} (100%) rename patches/{unapplied-server/0184-Add-uptime-command.patch => server/0181-Add-uptime-command.patch} (95%) rename patches/{unapplied-server/0185-Tool-actionable-options.patch => server/0182-Tool-actionable-options.patch} (98%) rename patches/{unapplied-server/0186-Store-placer-on-Block-when-placed.patch => server/0183-Store-placer-on-Block-when-placed.patch} (80%) rename patches/{unapplied-server/0187-Summoner-API.patch => server/0184-Summoner-API.patch} (89%) rename patches/{unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch => server/0185-Customizable-sleeping-actionbar-messages.patch} (93%) rename patches/{unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch => server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch} (67%) rename patches/{unapplied-server/0190-Big-dripleaf-tilt-delay.patch => server/0187-Big-dripleaf-tilt-delay.patch} (94%) rename patches/{unapplied-server/0191-Player-ridable-in-water-option.patch => server/0188-Player-ridable-in-water-option.patch} (90%) rename patches/{unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (94%) rename patches/{unapplied-server/0193-Add-compass-command.patch => server/0190-Add-compass-command.patch} (94%) rename patches/{unapplied-server/0194-Toggle-for-kinetic-damage.patch => server/0191-Toggle-for-kinetic-damage.patch} (93%) rename patches/{unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch => server/0192-Add-Option-for-disable-observer-clocks.patch} (88%) rename patches/{unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch => server/0193-Customizeable-Zombie-Villager-curing-times.patch} (91%) rename patches/{unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch => server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch} (96%) rename patches/{unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch => server/0195-Toggle-for-Wither-s-spawn-sound.patch} (93%) rename patches/{unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch => server/0196-Cactus-breaks-from-solid-neighbors-config.patch} (95%) rename patches/{unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch => server/0197-Config-to-remove-curse-of-binding-with-weakness.patch} (94%) diff --git a/patches/unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0148-Config-to-allow-for-unsafe-enchants.patch similarity index 67% rename from patches/unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0148-Config-to-allow-for-unsafe-enchants.patch index e83576a0a..1c0bc29d9 100644 --- a/patches/unapplied-server/0151-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0148-Config-to-allow-for-unsafe-enchants.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 15bfe2e58d16864af29b04c17181ebf45fa21eba..8b0c61bcdb8e00dda6fb8f43e6d74711361eba9c 100644 +index 84f1ba6275f04624f46ccd772924b5e075e7b205..bfb455fb74f0a9645212f90acb54f68d1c7d9772 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -70,7 +70,7 @@ public class EnchantCommand { @@ -21,50 +21,50 @@ index 15bfe2e58d16864af29b04c17181ebf45fa21eba..8b0c61bcdb8e00dda6fb8f43e6d74711 ItemStack itemStack = livingEntity.getMainHandItem(); if (!itemStack.isEmpty()) { if (enchantment2.canEnchant(itemStack) -- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) { -+ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur +- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment2)) { ++ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur itemStack.enchant(enchantment2, level); i++; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index fc71e25bb657581db5b79623c4ea6adc5f9e2b12..3f13c6fb479db34c0c4d1e0f9241919f2e62cd53 100644 +index 62a69dc13406bb0144948bf4bd265c3a28bfe14b..128c2c6f1b94d934d4d306f70c8ace08e4dc48d1 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -228,7 +228,8 @@ public class AnvilMenu extends ItemCombinerMenu { - int i2 = (Integer) map1.get(enchantment); + int i2 = entry.getIntValue(); - i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); -- boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur -+ boolean flag3 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowInapplicableEnchants) || enchantment.canEnchant(itemstack); // Purpur -+ boolean flag4 = true; // Purpur + i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); +- boolean flag3 = enchantment.canEnchant(itemstack); ++ boolean flag3 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowInapplicableEnchants) || enchantment.canEnchant(itemstack); // Purpur ++ boolean flag4 = true; // Purpur - if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { - flag3 = true; + if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { + flag3 = true; @@ -240,16 +241,20 @@ public class AnvilMenu extends ItemCombinerMenu { - Enchantment enchantment1 = (Enchantment) iterator1.next(); + Holder holder1 = (Holder) iterator1.next(); - if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { -- flag3 = canDoUnsafeEnchants; // Purpur -+ flag4 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants); // Purpur flag3 -> flag4 + if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) { +- flag3 = canDoUnsafeEnchants; // Purpur ++ flag4 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants); // Purpur flag3 -> flag4 + if (!flag4 && org.purpurmc.purpur.PurpurConfig.replaceIncompatibleEnchants) { + iterator1.remove(); + flag4 = true; + } - ++i; - } + ++i; + } + } + +- if (!flag3) { ++ if (!flag3 || !flag4) { // Purpur + flag2 = true; + } else { + flag1 = true; +- if (i2 > enchantment.getMaxLevel()) { ++ if ((!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants || !org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels) && i2 > enchantment.getMaxLevel()) { // Purpur + i2 = enchantment.getMaxLevel(); } -- if (!flag3) { -+ if (!flag3 || !flag4) { // Purpur - flag2 = true; - } else { - flag1 = true; -- if (i2 > enchantment.getMaxLevel()) { -+ if ((!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants || !org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels) && i2 > enchantment.getMaxLevel()) { // Purpur - i2 = enchantment.getMaxLevel(); - } - -@@ -389,7 +394,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -375,7 +380,7 @@ public class AnvilMenu extends ItemCombinerMenu { this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); // Purpur start @@ -74,11 +74,11 @@ index fc71e25bb657581db5b79623c4ea6adc5f9e2b12..3f13c6fb479db34c0c4d1e0f9241919f ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 5b0816b6c01912c41e588559597edf8b5902fcd3..b4b1ffe875a18bcb72b7f1d87f6ddbea436bbb66 100644 +index 206f6409a17eb0db1ced8c7a90127ed375329a44..7e6c231a50c7fd2297e1ab404a743e1aece9913b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1241,6 +1241,12 @@ public final class ItemStack { - return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; +@@ -1226,6 +1226,12 @@ public final class ItemStack implements DataComponentHolder { + return !((ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)).isEmpty(); } + // Purpur start @@ -87,17 +87,17 @@ index 5b0816b6c01912c41e588559597edf8b5902fcd3..b4b1ffe875a18bcb72b7f1d87f6ddbea + } + // Purpur end + - public void addTagElement(String key, Tag element) { - this.getOrCreateTag().put(key, element); + public ItemEnchantments getEnchantments() { + return (ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0e254b7b1709f745a7d7c0e3cefda96d726de556..1b7aad41427a945ae4309d95f6371ca8aba1149a 100644 +index 11b8f16a39011500d28f72e9c40fc3ca4b0f0fad..f725b560313aaee505708c835499d340e04217e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -285,14 +285,34 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; - public static boolean allowCrossbowInfinity = false; + public static boolean allowCrossbowInfinity = true; + public static boolean allowUnsafeEnchants = false; + public static boolean allowInapplicableEnchants = true; + public static boolean allowIncompatibleEnchants = true; diff --git a/patches/unapplied-server/0152-Configurable-sponge-absorption.patch b/patches/server/0149-Configurable-sponge-absorption.patch similarity index 95% rename from patches/unapplied-server/0152-Configurable-sponge-absorption.patch rename to patches/server/0149-Configurable-sponge-absorption.patch index 54ea09654..1264ccce3 100644 --- a/patches/unapplied-server/0152-Configurable-sponge-absorption.patch +++ b/patches/server/0149-Configurable-sponge-absorption.patch @@ -8,7 +8,7 @@ Allows the total area and radius of water blocks the sponge can absorb to be cha Co-authored by: granny diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 8f3cca228f8ec1ea9379fa43af4baa7b18012dd2..1737a670aa81c17233f8e9a8632f0e0876be367c 100644 +index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java @@ -58,7 +58,7 @@ public class SpongeBlock extends Block { diff --git a/patches/unapplied-server/0153-Projectile-offset-config.patch b/patches/server/0150-Projectile-offset-config.patch similarity index 74% rename from patches/unapplied-server/0153-Projectile-offset-config.patch rename to patches/server/0150-Projectile-offset-config.patch index ae3f02b03..8f778ac23 100644 --- a/patches/unapplied-server/0153-Projectile-offset-config.patch +++ b/patches/server/0150-Projectile-offset-config.patch @@ -5,36 +5,36 @@ Subject: [PATCH] Projectile offset config diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 33df0ca406dc8321b76b393f317bbd1c8ebe6366..220513d3fd5645322886522ea4f6b8c55d043b3c 100644 +index 9553e68f0e34de41a3f337dd4fa45d5103def8bb..bfb3fe40eb215ceab338ed92a2372cd34ff8486c 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java -@@ -44,7 +44,7 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable { - ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW); - AbstractArrow entityarrow = itemarrow.createArrow(world, itemstack1, entityhuman); +@@ -31,7 +31,7 @@ public class BowItem extends ProjectileWeaponItem { + if (!((double)f < 0.1)) { + List list = draw(stack, itemStack, player, !((itemStack.is(Items.ARROW) && world.purpurConfig.infinityWorksWithNormalArrows) || (itemStack.is(Items.TIPPED_ARROW) && world.purpurConfig.infinityWorksWithTippedArrows) || (itemStack.is(Items.SPECTRAL_ARROW) && world.purpurConfig.infinityWorksWithSpectralArrows))); + if (!world.isClientSide() && !list.isEmpty()) { +- this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null); ++ this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, (float) world.purpurConfig.bowProjectileOffset, f == 1.0F, null); // Purpur + } -- entityarrow.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, f * 3.0F, 1.0F); -+ entityarrow.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, f * 3.0F, (float) world.purpurConfig.bowProjectileOffset); // Purpur - if (f == 1.0F) { - entityarrow.setCritArrow(true); - } + world.playSound( diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index f9a9bc27670bb7ec82a609f202edbde6b5a4fd46..05d3a7c077df1b92819655790230cd22028f6893 100644 +index a3614405a92f26f19fb1df24f685cb7c081333db..aaa1055013dea97bed35390b55b90dc6029b59a3 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -64,7 +64,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { - ItemStack itemstack = user.getItemInHand(hand); - - if (CrossbowItem.isCharged(itemstack)) { -- CrossbowItem.performShooting(world, user, hand, itemstack, CrossbowItem.getShootingPower(itemstack), 1.0F); -+ CrossbowItem.performShooting(world, user, hand, itemstack, CrossbowItem.getShootingPower(itemstack), (float) world.purpurConfig.crossbowProjectileOffset); // Purpur - CrossbowItem.setCharged(itemstack, false); - return InteractionResultHolder.consume(itemstack); - } else if (!user.getProjectile(itemstack).isEmpty()) { +@@ -60,7 +60,7 @@ public class CrossbowItem extends ProjectileWeaponItem { + ItemStack itemStack = user.getItemInHand(hand); + ChargedProjectiles chargedProjectiles = itemStack.get(DataComponents.CHARGED_PROJECTILES); + if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { +- this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), 1.0F, null); ++ this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), (float) world.purpurConfig.crossbowProjectileOffset, null); // Purpur + return InteractionResultHolder.consume(itemStack); + } else if (!user.getProjectile(itemStack).isEmpty()) { + this.startSoundPlayed = false; diff --git a/src/main/java/net/minecraft/world/item/EggItem.java b/src/main/java/net/minecraft/world/item/EggItem.java -index a3bd507793994e9cc87a956871a8afbb8ca9460d..ef2197a23aef0a4215fae09bd4618e449e14c64e 100644 +index 4ebd634cff286b10868e26eeb3ecf34abdcab22e..7dc811335caa46870d1d895899a1e6c21980382d 100644 --- a/src/main/java/net/minecraft/world/item/EggItem.java +++ b/src/main/java/net/minecraft/world/item/EggItem.java -@@ -24,7 +24,7 @@ public class EggItem extends Item { +@@ -27,7 +27,7 @@ public class EggItem extends Item implements ProjectileItem { ThrownEgg entityegg = new ThrownEgg(world, user); entityegg.setItem(itemstack); @@ -44,7 +44,7 @@ index a3bd507793994e9cc87a956871a8afbb8ca9460d..ef2197a23aef0a4215fae09bd4618e44 com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(entityegg)) { diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java -index a0c2650678848416829c7185a530fcd63bb68039..8031e38c66468676b3b4a7443d6678eec6b1e8a4 100644 +index fc62754f93bd11a10c28b8b7b116e9fff70a5c7b..11b04455f09d8bfdf44499bb8359dc715c2daffd 100644 --- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java +++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java @@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { @@ -57,10 +57,10 @@ index a0c2650678848416829c7185a530fcd63bb68039..8031e38c66468676b3b4a7443d6678ee com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityenderpearl.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(entityenderpearl)) { diff --git a/src/main/java/net/minecraft/world/item/SnowballItem.java b/src/main/java/net/minecraft/world/item/SnowballItem.java -index bc8186a5bc3a98b35fad570729dd4ba52efab238..caab0c1e2bc5696080750797cbf1c93f57799f7d 100644 +index 32b170551a2f5bdc88d29f4d03750bfe3974e71b..a41fb0dd26af367fc2470a7913a84d864bc505f7 100644 --- a/src/main/java/net/minecraft/world/item/SnowballItem.java +++ b/src/main/java/net/minecraft/world/item/SnowballItem.java -@@ -25,7 +25,7 @@ public class SnowballItem extends Item { +@@ -28,7 +28,7 @@ public class SnowballItem extends Item implements ProjectileItem { Snowball entitysnowball = new Snowball(world, user); entitysnowball.setItem(itemstack); @@ -70,10 +70,10 @@ index bc8186a5bc3a98b35fad570729dd4ba52efab238..caab0c1e2bc5696080750797cbf1c93f com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitysnowball.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(entitysnowball)) { diff --git a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java -index f47f793c62a919fb65c081ddb82d597a978d3b20..3bbb44ae3da68afbd6012df68dee277a7dbf98c0 100644 +index 369955746f4b51f69fa01103e3771dd74fc6c8f0..e6edd3a0fa2578900cdbe8bd588219dc3fd3af5f 100644 --- a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java +++ b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java -@@ -18,7 +18,7 @@ public class ThrowablePotionItem extends PotionItem { +@@ -21,7 +21,7 @@ public class ThrowablePotionItem extends PotionItem implements ProjectileItem { if (!world.isClientSide) { ThrownPotion thrownPotion = new ThrownPotion(world, user); thrownPotion.setItem(itemStack); @@ -83,16 +83,16 @@ index f47f793c62a919fb65c081ddb82d597a978d3b20..3bbb44ae3da68afbd6012df68dee277a com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(thrownPotion)) { diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index c2218c2dd46641ebb4c9278fa0d6015122b1905c..7030d94ba14ecacc1e5cd6d6432b1bcb59c8b646 100644 +index 129f829cc238ff2f6586511f80eb6da2e8c7ece4..1c278e92ca3307e93456073ca9581da56c22bca3 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -77,7 +77,7 @@ public class TridentItem extends Item implements Vanishable { +@@ -76,7 +76,7 @@ public class TridentItem extends Item implements ProjectileItem { if (k == 0) { ThrownTrident entitythrowntrident = new ThrownTrident(world, entityhuman, stack); - entitythrowntrident.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, 2.5F + (float) k * 0.5F, 1.0F); + entitythrowntrident.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, 2.5F + (float) k * 0.5F, (float) world.purpurConfig.tridentProjectileOffset); // Purpur - if (entityhuman.getAbilities().instabuild) { + if (entityhuman.hasInfiniteMaterials()) { entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0154-Config-for-powered-rail-activation-distance.patch b/patches/server/0151-Config-for-powered-rail-activation-distance.patch similarity index 94% rename from patches/unapplied-server/0154-Config-for-powered-rail-activation-distance.patch rename to patches/server/0151-Config-for-powered-rail-activation-distance.patch index 3af01e202..984cbac46 100644 --- a/patches/unapplied-server/0154-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0151-Config-for-powered-rail-activation-distance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for powered rail activation distance diff --git a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java -index b84c48902ef24fdae17578a304e6c93dc20c5dce..e03125281767845564c48c98c3e6b6bbd269ade1 100644 +index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c23abbc480 100644 --- a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java @@ -30,7 +30,7 @@ public class PoweredRailBlock extends BaseRailBlock { diff --git a/patches/unapplied-server/0155-Piglin-portal-spawn-modifier.patch b/patches/server/0152-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/unapplied-server/0155-Piglin-portal-spawn-modifier.patch rename to patches/server/0152-Piglin-portal-spawn-modifier.patch index 2d7fe4792..2a4bfefb2 100644 --- a/patches/unapplied-server/0155-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0152-Piglin-portal-spawn-modifier.patch @@ -18,13 +18,13 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 613df7b174ba4cb87314a631ebc7dfeda8ede58f..f7b724696151b73343feac1ce406fca9377f2508 100644 +index 67060b7446535fc352d221d9fe3928d1d6ffcf54..8d5e841d8cc69bf09a9f1b6248633a72ce5fe1d7 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -60,7 +60,7 @@ public class NetherPortalBlock extends Block { @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + protected void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { - if (world.spigotConfig.enableZombiePigmenPortalSpawns && world.dimensionType().natural() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && random.nextInt(2000) < world.getDifficulty().getId()) { // Spigot + if (world.spigotConfig.enableZombiePigmenPortalSpawns && world.dimensionType().natural() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && random.nextInt(world.purpurConfig.piglinPortalSpawnModifier) < world.getDifficulty().getId()) { // Spigot // Purpur while (world.getBlockState(pos).is((Block) this)) { diff --git a/patches/unapplied-server/0156-Config-to-change-max-number-of-bees.patch b/patches/server/0153-Config-to-change-max-number-of-bees.patch similarity index 90% rename from patches/unapplied-server/0156-Config-to-change-max-number-of-bees.patch rename to patches/server/0153-Config-to-change-max-number-of-bees.patch index 3cfaa7a2f..2722455c3 100644 --- a/patches/unapplied-server/0156-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0153-Config-to-change-max-number-of-bees.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index d445ed0895293dd45c36226051f5809be8587ebe..2b12596ee7ea1a40120c60c6f43e9e42cc6dfae9 100644 +index 7b263fab4f0014400b3b8e7e33db32f9a125f6ba..f52823146944d333f2d050e90261b570ba66f5dd 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -47,7 +47,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -59,7 +59,7 @@ public class BeehiveBlockEntity extends BlockEntity { private final List stored = Lists.newArrayList(); @Nullable public BlockPos savedFlowerPos; @@ -18,7 +18,7 @@ index d445ed0895293dd45c36226051f5809be8587ebe..2b12596ee7ea1a40120c60c6f43e9e42 public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1b7aad41427a945ae4309d95f6371ca8aba1149a..d0e3dceec5f7c1d3fed1d6dc0f2a5c1ca2ed09f5 100644 +index f725b560313aaee505708c835499d340e04217e4..198fb9815449fb0043703d480def0633974266f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -250,6 +250,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0157-Config-for-wither-explosion-radius.patch b/patches/server/0154-Config-for-wither-explosion-radius.patch similarity index 96% rename from patches/unapplied-server/0157-Config-for-wither-explosion-radius.patch rename to patches/server/0154-Config-for-wither-explosion-radius.patch index 498db5917..59d2648bb 100644 --- a/patches/unapplied-server/0157-Config-for-wither-explosion-radius.patch +++ b/patches/server/0154-Config-for-wither-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for wither explosion radius 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 c37b3486dcc75c5c78d605afeff2e3f723940636..b4a38621b58e16b2bf48b3d45d85130e8883b477 100644 +index c753f715710ec4bb8337e035ac5a4c11371a84a0..a60d7f7baab005afc532ecec7aa22c53db4f51e0 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -99,7 +99,7 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/patches/unapplied-server/0158-Gamemode-extra-permissions.patch b/patches/server/0155-Gamemode-extra-permissions.patch similarity index 95% rename from patches/unapplied-server/0158-Gamemode-extra-permissions.patch rename to patches/server/0155-Gamemode-extra-permissions.patch index d5cad804d..5640fb7ad 100644 --- a/patches/unapplied-server/0158-Gamemode-extra-permissions.patch +++ b/patches/server/0155-Gamemode-extra-permissions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index b0d96ae08959cdca9177eb875faa99f4a8e92632..546ff84046856ecfe0f2a07d3ba3f886f8df4dca 100644 +index edb94e5601acc38994dac20a167b145de778d426..7475aaac2673729091eabc741c8ebb561aeec8f1 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -230,6 +230,19 @@ public class CommandSourceStack implements ExecutionCommandSource type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { -@@ -381,13 +383,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder 0.01D) { double d20 = 0.06D; diff --git a/patches/unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch similarity index 76% rename from patches/unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch index d1a32db26..96d2d3aab 100644 --- a/patches/unapplied-server/0167-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 73f8aeb1b5253cfd7d5502d506677a3ef906625e..28dca8464a75487566e5d2efac1ec3fe42e6c410 100644 +index e7f45fe435f679afb4fabe657922d7354183c6fb..f45794bf2b418f94961681bac8b0f39fbf6578de 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1316,7 +1316,7 @@ public abstract class Player extends LivingEntity { - flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits - flag2 = flag2 && !this.isSprinting(); - if (flag2) { -- f *= 1.5F; -+ f *= this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur - } +@@ -1332,7 +1332,7 @@ public abstract class Player extends LivingEntity { - f += f1; + flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits + if (flag2) { +- f *= 1.5F; ++ f *= this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur + } + + f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 8e5faebee176a1ff625bb46b9dddd5391bc80a34..97f2212ca175ad6152acc3fab35dd6d1c2e83a8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch similarity index 91% rename from patches/unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch index b414f7e04..97e587b05 100644 --- a/patches/unapplied-server/0168-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable dragon egg teleporting diff --git a/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java b/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java -index 7f365143ce5c62e734eceb855ba0a02ab3a99b27..bbb266cbe23da2573d3dfb3a6edd57461988d3c5 100644 +index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642bc8684f1 100644 --- a/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DragonEggBlock.java -@@ -49,8 +49,8 @@ public class DragonEggBlock extends FallingBlock { +@@ -48,8 +48,8 @@ public class DragonEggBlock extends FallingBlock { } private void teleport(BlockState state, Level world, BlockPos pos) { diff --git a/patches/unapplied-server/0169-Config-for-unverified-username-message.patch b/patches/server/0166-Config-for-unverified-username-message.patch similarity index 92% rename from patches/unapplied-server/0169-Config-for-unverified-username-message.patch rename to patches/server/0166-Config-for-unverified-username-message.patch index 2181698b6..63fd2b717 100644 --- a/patches/unapplied-server/0169-Config-for-unverified-username-message.patch +++ b/patches/server/0166-Config-for-unverified-username-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index c5fa9f4d28f9a7f64a50a902ee5e631bfc00119c..8b62f992ec61d0a66a3856b4928ee2d705548291 100644 +index 765cf12c1558afd9686793b18388fc229c55d2d8..ad674e1be146614ba20e1f184b0f5cc30339593e 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -270,7 +270,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -309,7 +309,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(s1)); // Spigot } else { @@ -18,7 +18,7 @@ index c5fa9f4d28f9a7f64a50a902ee5e631bfc00119c..8b62f992ec61d0a66a3856b4928ee2d7 } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7fe47715413f6a1c21f9b4afb93a6dee4e0f0fe2..23d131fa6b91ba62475dd3f825711f7c0796e3c7 100644 +index a15c0086376a9c0bec8dff6ae8cb97e26ef4731e..0318a324bd59a627114ed031589441c317cf5bcc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -184,6 +184,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0167-Make-anvil-cumulative-cost-configurable.patch similarity index 83% rename from patches/unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0167-Make-anvil-cumulative-cost-configurable.patch index 7dfeb6446..829be282e 100644 --- a/patches/unapplied-server/0170-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0167-Make-anvil-cumulative-cost-configurable.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 3f13c6fb479db34c0c4d1e0f9241919f2e62cd53..2913d69fcff4b6df68586146b7323cea33eba74b 100644 +index 128c2c6f1b94d934d4d306f70c8ace08e4dc48d1..581d784316a07594570374c1a03e5174c0f91580 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -403,7 +403,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -392,7 +392,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int cost) { -- return cost * 2 + 1; -+ return org.purpurmc.purpur.PurpurConfig.anvilCumulativeCost ? cost * 2 + 1 : 0; +- return (int) Math.min((long) cost * 2L + 1L, 2147483647L); ++ return org.purpurmc.purpur.PurpurConfig.anvilCumulativeCost ? (int) Math.min((long) cost * 2L + 1L, 2147483647L) : 0; } public boolean setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 23d131fa6b91ba62475dd3f825711f7c0796e3c7..09c777f83a74501d76f6e15a61d7c433599cf6cc 100644 +index 0318a324bd59a627114ed031589441c317cf5bcc..18e8a4a062eb57be001c38dbcddef74b0d5583cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -269,6 +269,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch similarity index 87% rename from patches/unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0168-Bee-can-work-when-raining-or-at-night.patch index 66368d66a..60d07cfc7 100644 --- a/patches/unapplied-server/0171-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bee can work when raining or at night 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 52a7a8b35cf0f7b52d5de253b21f7713ab261544..8d80055253008bb1b2ed77e91a1c51c995208dac 100644 +index 0978f519177ce2f0991402dafb9a22c5a8686168..91c013f7ab58f570d0ebe2773932fcdb49344b3c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -406,7 +406,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -395,7 +395,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { boolean wantsToEnterHive() { if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) { @@ -18,13 +18,13 @@ index 52a7a8b35cf0f7b52d5de253b21f7713ab261544..8d80055253008bb1b2ed77e91a1c51c9 return flag && !this.isHiveNearFire(); } else { diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 2b12596ee7ea1a40120c60c6f43e9e42cc6dfae9..ba610e05806ad020d439d59d30b820bc9cd3fbff 100644 +index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c6eb4cfce 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -207,7 +207,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -212,7 +212,7 @@ public class BeehiveBlockEntity extends BlockEntity { } - private static boolean releaseBee(Level world, BlockPos blockposition, BlockState iblockdata, BeehiveBlockEntity.BeeData tileentitybeehive_hivebee, @Nullable List list, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, @Nullable BlockPos blockposition1, boolean force) { + private static boolean releaseOccupant(Level world, BlockPos blockposition, BlockState iblockdata, BeehiveBlockEntity.Occupant tileentitybeehive_c, @Nullable List list, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, @Nullable BlockPos blockposition1, boolean force) { - if (!force && (world.isNight() || world.isRaining()) && tileentitybeehive_releasestatus != BeehiveBlockEntity.BeeReleaseStatus.EMERGENCY) { + if (!force && ((world.isNight() && !world.purpurConfig.beeCanWorkAtNight) || (world.isRaining() && !world.purpurConfig.beeCanWorkInRain)) && tileentitybeehive_releasestatus != BeehiveBlockEntity.BeeReleaseStatus.EMERGENCY) { // Purpur // CraftBukkit end diff --git a/patches/unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch b/patches/server/0169-API-for-any-mob-to-burn-daylight.patch similarity index 83% rename from patches/unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0169-API-for-any-mob-to-burn-daylight.patch index f5ee53f14..ff533af17 100644 --- a/patches/unapplied-server/0172-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0169-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53c20b7e1e8d27b4a13e18ae8fa437e83b208c78..2cac12d2b788b0962b719a83b43dc23177b76ac6 100644 +index 5f19cc285efac25b56a29242b41c2823020f170e..2d1fc8734f440c284710c71abc6789e8185ec909 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -562,6 +562,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return true; } @@ -32,10 +32,10 @@ index 53c20b7e1e8d27b4a13e18ae8fa437e83b208c78..2cac12d2b788b0962b719a83b43dc231 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c7891da88e07 100644 +index 58a57a1cf8b8a3e885346f1fd1f7dd54a0277867..20433981a866b46a2ccedec70d5ee01079c2797c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -274,6 +274,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API @@ -43,7 +43,7 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 @Override public float getBukkitYaw() { -@@ -811,6 +812,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -842,6 +843,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 } @Override -@@ -897,6 +899,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -929,6 +931,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 } // CraftBukkit start -@@ -3607,6 +3614,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3572,6 +3579,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -83,7 +83,7 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 + flag = false; + } + if (flag) { -+ this.setSecondsOnFire(8); ++ this.igniteForSeconds(8); + } + } + } @@ -92,10 +92,10 @@ index ef830481a816c743aa3b0feee5c0f2cf51fea7fa..cd87e7c52b75c6ba40343557ba12c789 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index a7d475b69bc9f15cf32f297f808246ff69402fb5..4182a146dcad83d141cd5bacdbfc39d912360c40 100644 +index 77cf0d92212d11b9036f9f9cf23b23f71f1d590d..ee98efa69d67cd22eb5722cf68f3b7063e2595c8 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1767,17 +1767,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1881,17 +1881,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti } public boolean isSunBurnTick() { @@ -115,10 +115,10 @@ index a7d475b69bc9f15cf32f297f808246ff69402fb5..4182a146dcad83d141cd5bacdbfc39d9 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f 100644 +index 8f71739a4b23bc53994f1cbff8500b6bad288a42..919767affe2ede755cf83398436fbf1581ad508f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -66,6 +66,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -65,6 +65,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo protected AbstractSkeleton(EntityType type, Level world) { super(type, world); this.reassessWeaponGoal(); @@ -126,8 +126,8 @@ index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc4 } @Override -@@ -101,35 +102,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo - } +@@ -95,35 +96,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo + abstract SoundEvent getStepSound(); // Paper start - shouldBurnInDay API - private boolean shouldBurnInDay = true; @@ -156,7 +156,7 @@ index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc4 - } - - if (flag) { -- this.setSecondsOnFire(8); +- this.igniteForSeconds(8); - } - } - @@ -164,15 +164,7 @@ index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc4 super.aiStep(); } -@@ -194,7 +174,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo - } else { - this.goalSelector.addGoal(4, this.meleeGoal); - } -- - } - } - -@@ -238,7 +217,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -238,7 +218,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); // Paper start - shouldBurnInDay API if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -181,7 +173,7 @@ index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc4 } // Paper end - shouldBurnInDay API } -@@ -247,7 +226,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -247,7 +227,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); @@ -191,10 +183,10 @@ index 9d259d7e2aa3e44e350eb5927314cfceaffaf3f3..3f9e81c0bdd85bec24a1209ad3fd3dc4 // Paper end - shouldBurnInDay API diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3..5ac87650e357f3ac48e37713b9b0b18ad4d6feb6 100644 +index cb96bd5769159e6c25968673ea07cd6d107cff46..440c90feeae3a55c98e2011ecb27c28d58f11e6e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -22,6 +22,7 @@ public class Husk extends Zombie { +@@ -20,6 +20,7 @@ public class Husk extends Zombie { public Husk(EntityType type, Level world) { super(type, world); @@ -202,7 +194,7 @@ index f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3..5ac87650e357f3ac48e37713b9b0b18a } // Purpur start -@@ -77,7 +78,7 @@ public class Husk extends Zombie { +@@ -75,7 +76,7 @@ public class Husk extends Zombie { @Override public boolean isSunSensitive() { @@ -212,36 +204,35 @@ index f6d6df27c2ca7a33ed3ca8e299725b6a5c4aafc3..5ac87650e357f3ac48e37713b9b0b18a @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 637b229817f9f2c3ad224f300b56a6bee4c8a341..bcb1912ea218fbb4b849ab84a7025202100b82c3 100644 +index c52d40eb33a16e428c016a902faeb62aea0fd727..bebc6f9f7e49e9dd34fa295d9ce3e8397feb280c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -61,6 +61,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); - this.lookControl = new Phantom.PhantomLookControl(this); + this.lookControl = new Phantom.PhantomLookControl(this, this); + this.setShouldBurnInDay(true); // Purpur } // Purpur start -@@ -254,16 +255,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -247,15 +248,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { - // Purpur start -- boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; +- boolean burnFromDaylight = this.shouldBurnInDay && this.isSunBurnTick() && this.level().purpurConfig.phantomBurnInDaylight; - boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; - if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - shouldBurnInDay API -- if (getRider() == null || !this.isControllable()) - // Purpur end - if (getRider() == null || !this.isControllable()) // Purpur -- this.setSecondsOnFire(8); +- this.igniteForSeconds(8); - } - + // Purpur - moved down to shouldBurnInDay() super.aiStep(); } -@@ -291,7 +283,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -283,7 +276,7 @@ public class Phantom extends FlyingMob implements Enemy { if (nbt.hasUUID("Paper.SpawningEntity")) { this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } @@ -250,7 +241,7 @@ index 637b229817f9f2c3ad224f300b56a6bee4c8a341..bcb1912ea218fbb4b849ab84a7025202 this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end -@@ -308,7 +300,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -300,7 +293,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } @@ -259,8 +250,8 @@ index 637b229817f9f2c3ad224f300b56a6bee4c8a341..bcb1912ea218fbb4b849ab84a7025202 // Paper end } -@@ -377,8 +369,15 @@ public class Phantom extends FlyingMob implements Enemy { - return spawningEntity; +@@ -356,8 +349,15 @@ public class Phantom extends FlyingMob implements Enemy { + return this.spawningEntity; } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } - private boolean shouldBurnInDay = true; @@ -276,12 +267,12 @@ index 637b229817f9f2c3ad224f300b56a6bee4c8a341..bcb1912ea218fbb4b849ab84a7025202 + // Purpur End public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Paper end - private static enum AttackPhase { + diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc04895b3bf 100644 +index de7a74f1e5181373da8dcc639245f35f77f4f09b..53f7659aed2378b36f1923a0208c7f86048eb85b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -96,11 +96,12 @@ public class Zombie extends Monster { +@@ -93,11 +93,12 @@ public class Zombie extends Monster { private int inWaterTime; public int conversionTime; private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field @@ -295,7 +286,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 } public Zombie(Level world) { -@@ -296,30 +297,7 @@ public class Zombie extends Monster { +@@ -293,30 +294,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -318,7 +309,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 - } - - if (flag) { -- this.setSecondsOnFire(8); +- this.igniteForSeconds(8); - } - } - } @@ -327,7 +318,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 super.aiStep(); } -@@ -357,6 +335,7 @@ public class Zombie extends Monster { +@@ -354,6 +332,7 @@ public class Zombie extends Monster { } @@ -335,7 +326,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - Add more Zombie API } -@@ -486,7 +465,7 @@ public class Zombie extends Monster { +@@ -477,7 +456,7 @@ public class Zombie extends Monster { nbt.putBoolean("CanBreakDoors", this.canBreakDoors()); nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); @@ -344,7 +335,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 } @Override -@@ -500,7 +479,7 @@ public class Zombie extends Monster { +@@ -491,7 +470,7 @@ public class Zombie extends Monster { } // Paper start - Add more Zombie API if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -354,7 +345,7 @@ index 94b92c6e588f871d4b0d86bb8f860a99e473a4ea..e568d014f577ab705645152446156dc0 // Paper end - Add more Zombie API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index cac42202295b16de0466216f64be4fdf30929a7e..b6ecb58718b7de7ba9c90236f3dc11715652daa9 100644 +index befe3372d5f1550b7bde3b63b5e7aef9035c5379..3c674ecd3b80501047b4593e8872034287defd2e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -370,10 +361,10 @@ index cac42202295b16de0466216f64be4fdf30929a7e..b6ecb58718b7de7ba9c90236f3dc1171 Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 17fc6efc988bd74fc50c340eb62f8a7def2167cb..210040aa3f810c03cadf38df9d10da336dffaaa1 100644 +index 4fd98b8c39c3a989e5bf5682b936cade78a8c404..d08f86f2122441d661e7693ad7dcb9854921a767 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1227,5 +1227,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1190,5 +1190,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/unapplied-server/0173-Config-MobEffect-by-world.patch b/patches/server/0170-Config-MobEffect-by-world.patch similarity index 81% rename from patches/unapplied-server/0173-Config-MobEffect-by-world.patch rename to patches/server/0170-Config-MobEffect-by-world.patch index 5f4391dd6..3c3567bac 100644 --- a/patches/unapplied-server/0173-Config-MobEffect-by-world.patch +++ b/patches/server/0170-Config-MobEffect-by-world.patch @@ -5,51 +5,51 @@ Subject: [PATCH] Config MobEffect by world diff --git a/src/main/java/net/minecraft/world/effect/HungerMobEffect.java b/src/main/java/net/minecraft/world/effect/HungerMobEffect.java -index 3aad6bd0a1fb7bb3f9b7dab2c10c875864900750..31bd845130e363dd11c225dfd1e9dd896aea8aac 100644 +index a476b56ed98d0a1afc6a396ce29424df78f24ada..5119ff3414fbd9a1ae0a8db0fd15bd3c57c8e148 100644 --- a/src/main/java/net/minecraft/world/effect/HungerMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/HungerMobEffect.java -@@ -15,7 +15,7 @@ class HungerMobEffect extends MobEffect { - if (entity instanceof Player) { - Player entityhuman = (Player) entity; - +@@ -12,7 +12,7 @@ class HungerMobEffect extends MobEffect { + @Override + public boolean applyEffectTick(LivingEntity entity, int amplifier) { + if (entity instanceof Player entityhuman) { - entityhuman.causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent + entityhuman.causeFoodExhaustion(entity.level().purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur } - } + return true; diff --git a/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java b/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java -index 196204a8661c7750408997e052ec706f44161fc6..393cd9fac5b2fd39e4248d0abd4930e6b2ff73a4 100644 +index 3e7a703632251e0a5234259e3702b58b332e5ef0..f2cc43fbccb5d2ba012b350268065c2cfe014faf 100644 --- a/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java -@@ -11,8 +11,8 @@ class PoisonMobEffect extends MobEffect { +@@ -10,8 +10,8 @@ class PoisonMobEffect extends MobEffect { + @Override - public void applyEffectTick(LivingEntity entity, int amplifier) { - super.applyEffectTick(entity, amplifier); + public boolean applyEffectTick(LivingEntity entity, int amplifier) { - if (entity.getHealth() > 1.0F) { - entity.hurt(entity.damageSources().poison(), 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON + if (entity.getHealth() > entity.level().purpurConfig.entityMinimalHealthPoison) { // Purpur + entity.hurt(entity.damageSources().poison(), entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur } - } + return true; diff --git a/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java b/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java -index 551b20f86347aeca4824b7a424ad7de7c0ff072e..06bb4ad98aa9ca38b8d423681b1ad4b821f5e47d 100644 +index 4dba3e813e054951cbfbe0b323c1f5d973469cc0..426f61d55b9692cf085368df4e4df6f6997aa420 100644 --- a/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java -@@ -12,7 +12,7 @@ class RegenerationMobEffect extends MobEffect { - public void applyEffectTick(LivingEntity entity, int amplifier) { - super.applyEffectTick(entity, amplifier); +@@ -11,7 +11,7 @@ class RegenerationMobEffect extends MobEffect { + @Override + public boolean applyEffectTick(LivingEntity entity, int amplifier) { if (entity.getHealth() < entity.getMaxHealth()) { - entity.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC_REGEN); // CraftBukkit + entity.heal(entity.level().purpurConfig.entityHealthRegenAmount, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC_REGEN); // CraftBukkit // Purpur } - } + return true; diff --git a/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java b/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java -index b994ae09621934df2cdd6a83a7d8ecb44649fb16..c2b812c992db1ac9cd391da902c8d819a6ec2e6d 100644 +index 7b415dca88f50dc472fe4be96e5ef0996f117913..2bb872f29350d15db46b32c686aef78fc1b6fa29 100644 --- a/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java -@@ -23,7 +23,7 @@ class SaturationMobEffect extends InstantenousMobEffect { +@@ -20,7 +20,7 @@ class SaturationMobEffect extends InstantenousMobEffect { int oldFoodLevel = entityhuman.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { @@ -59,18 +59,18 @@ index b994ae09621934df2cdd6a83a7d8ecb44649fb16..c2b812c992db1ac9cd391da902c8d819 ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); diff --git a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java -index cc45fd864185a7842c465e26304b36f7c744bb93..434390a6b88eac7bd41ad6b05d223c78571885fb 100644 +index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d92c932d64 100644 --- a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java -@@ -10,7 +10,7 @@ class WitherMobEffect extends MobEffect { - @Override - public void applyEffectTick(LivingEntity entity, int amplifier) { - super.applyEffectTick(entity, amplifier); -- entity.hurt(entity.damageSources().wither(), 1.0F); -+ entity.hurt(entity.damageSources().wither(), entity.level().purpurConfig.entityWitherDegenerationAmount); // Purpur - } +@@ -9,7 +9,7 @@ class WitherMobEffect extends MobEffect { @Override + public boolean applyEffectTick(LivingEntity entity, int amplifier) { +- entity.hurt(entity.damageSources().wither(), 1.0F); ++ entity.hurt(entity.damageSources().wither(), entity.level().purpurConfig.entityWitherDegenerationAmount); // Purpur + return true; + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 7d89fc67d4f9b58697ff317a0c526be8e612e37a..515c15d6d8f87a1aa677db0cdf7605bbd2421fe0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0174-Beacon-Activation-Range-Configurable.patch b/patches/server/0171-Beacon-Activation-Range-Configurable.patch similarity index 93% rename from patches/unapplied-server/0174-Beacon-Activation-Range-Configurable.patch rename to patches/server/0171-Beacon-Activation-Range-Configurable.patch index 62c4d09e4..2100d9037 100644 --- a/patches/unapplied-server/0174-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0171-Beacon-Activation-Range-Configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Beacon Activation Range Configurable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 4b81b0180dfc96fc6a88646838a886ca5b5d301b..4a0bca08585fae3620da108f6a4cc07e500e5e03 100644 +index dd1fe8357ccf084880a7f3d4d9e499bde672c787..37ce2605c8803d8d87770bf6a95a83aa975b99fe 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -88,6 +88,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -92,6 +92,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name public double getEffectRange() { if (this.effectRange < 0) { diff --git a/patches/unapplied-server/0175-Make-lightning-rod-range-configurable.patch b/patches/server/0172-Make-lightning-rod-range-configurable.patch similarity index 89% rename from patches/unapplied-server/0175-Make-lightning-rod-range-configurable.patch rename to patches/server/0172-Make-lightning-rod-range-configurable.patch index 37655644b..cfde56b4d 100644 --- a/patches/unapplied-server/0175-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0172-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 74f9b208b822ef3c53113004b40366e44fdb8201..d3340055cf5c79b1f7430dc64516118bbb707086 100644 +index bcdef2c9bb116409445a4ef65c5e407c1003a55d..1dc58b41d3963c2adc58e79cd6db7e146ac049ad 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1192,7 +1192,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1182,7 +1182,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,7 +18,7 @@ index 74f9b208b822ef3c53113004b40366e44fdb8201..d3340055cf5c79b1f7430dc64516118b return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 09c777f83a74501d76f6e15a61d7c433599cf6cc..a268dcb3a0465425bb3c59edfc0f7897ea6626c1 100644 +index 18e8a4a062eb57be001c38dbcddef74b0d5583cd..8b7d38e85f9b094dc6c421464b9385fbc8570d2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -270,6 +270,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 84% rename from patches/unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 07aaf4015..a8dea9b8f 100644 --- a/patches/unapplied-server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 28dca8464a75487566e5d2efac1ec3fe42e6c410..f8b444583cc48a18a68c860ba933c0c1834578be 100644 +index f45794bf2b418f94961681bac8b0f39fbf6578de..b17b76eedf681f06e4db78a7117a6af9e3915c62 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -184,6 +184,7 @@ public abstract class Player extends LivingEntity { +@@ -196,6 +196,7 @@ public abstract class Player extends LivingEntity { public boolean affectsSpawning = true; // Paper - Affects Spawning API public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public int sixRowEnderchestSlotCount = -1; // Purpur @@ -17,7 +17,7 @@ index 28dca8464a75487566e5d2efac1ec3fe42e6c410..f8b444583cc48a18a68c860ba933c0c1 // CraftBukkit start public boolean fauxSleeping; -@@ -259,6 +260,12 @@ public abstract class Player extends LivingEntity { +@@ -271,6 +272,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,9 +30,9 @@ index 28dca8464a75487566e5d2efac1ec3fe42e6c410..f8b444583cc48a18a68c860ba933c0c1 this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2322,7 +2329,7 @@ public abstract class Player extends LivingEntity { +@@ -2362,7 +2369,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { - this.getFoodData().eat(stack.getItem(), stack); + this.getFoodData().eat(stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); - world.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, world.random.nextFloat() * 0.1F + 0.9F); + // world.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, world.random.nextFloat() * 0.1F + 0.9F); // Purpur - moved to tick() @@ -40,20 +40,19 @@ index 28dca8464a75487566e5d2efac1ec3fe42e6c410..f8b444583cc48a18a68c860ba933c0c1 CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer) this, stack); } diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java -index c3448707fd8a632b457cc97b35d08a9c6933d5ee..2840c0b16d9b8147703f34bac5a8aa21f82e6e44 100644 +index b89860d451d92ddda64b7e4144542b7fc5fd86f0..08a6cca64ddd49826a0bbddd7711187c73bb4997 100644 --- a/src/main/java/net/minecraft/world/food/FoodData.java +++ b/src/main/java/net/minecraft/world/food/FoodData.java -@@ -33,8 +33,10 @@ public class FoodData { - // CraftBukkit end +@@ -38,7 +38,9 @@ public class FoodData { + } public void eat(int food, float saturationModifier) { + int oldValue = this.foodLevel; // Purpur - this.foodLevel = Math.min(food + this.foodLevel, 20); - this.saturationLevel = Math.min(this.saturationLevel + (float) food * saturationModifier * 2.0F, (float) this.foodLevel); + this.add(food, FoodConstants.saturationByModifier(food, saturationModifier)); + if (this.entityhuman.level().purpurConfig.playerBurpWhenFull && this.foodLevel == 20 && oldValue < 20) this.entityhuman.burpDelay = this.entityhuman.level().purpurConfig.playerBurpDelay; // Purpur } - public void eat(Item item, ItemStack stack) { + public void eat(ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 991e8491c5bc254eb2ba0cbdcd06cb410d286fbb..ee94f8f165428072ae2f27d2f70a15b6aa3b242a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0177-Allow-player-join-full-server-by-permission.patch b/patches/server/0174-Allow-player-join-full-server-by-permission.patch similarity index 90% rename from patches/unapplied-server/0177-Allow-player-join-full-server-by-permission.patch rename to patches/server/0174-Allow-player-join-full-server-by-permission.patch index 3b366ffbe..6b634e729 100644 --- a/patches/unapplied-server/0177-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0174-Allow-player-join-full-server-by-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 89ba5789c6d6e4fe8360a854f0a6123036a5a792..1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d 100644 +index f2a7eba2618ea9c1acaf93c0ef8f6f5f737de6fe..d20a7a79e27db1092ff78910df5d45982971cc3e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -755,7 +755,7 @@ public abstract class PlayerList { +@@ -754,7 +754,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; diff --git a/patches/unapplied-server/0178-Add-portal-permission-bypass.patch b/patches/server/0175-Add-portal-permission-bypass.patch similarity index 83% rename from patches/unapplied-server/0178-Add-portal-permission-bypass.patch rename to patches/server/0175-Add-portal-permission-bypass.patch index ef28c017e..e3910c754 100644 --- a/patches/unapplied-server/0178-Add-portal-permission-bypass.patch +++ b/patches/server/0175-Add-portal-permission-bypass.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add portal permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f8b444583cc48a18a68c860ba933c0c1834578be..992ac6cfba700839259b973fa1eabb5ce6c301af 100644 +index b17b76eedf681f06e4db78a7117a6af9e3915c62..df33ad8ef6394042c2b617606c7c792fe3801632 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -185,6 +185,7 @@ public abstract class Player extends LivingEntity { +@@ -197,6 +197,7 @@ public abstract class Player extends LivingEntity { public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public int sixRowEnderchestSlotCount = -1; // Purpur public int burpDelay = 0; // Purpur @@ -16,7 +16,7 @@ index f8b444583cc48a18a68c860ba933c0c1834578be..992ac6cfba700839259b973fa1eabb5c // CraftBukkit start public boolean fauxSleeping; -@@ -476,7 +477,7 @@ public abstract class Player extends LivingEntity { +@@ -488,7 +489,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { @@ -26,10 +26,10 @@ index f8b444583cc48a18a68c860ba933c0c1834578be..992ac6cfba700839259b973fa1eabb5c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 7984365c8290ac9e526a413b56e1c8c0841e330c..a8b30fa294e088c0b604a5d8ac5667e32ed1b287 100644 +index 41f3cdec7deabf34358b8087df77169f85a5b919..90265b6f2acd43713b61e277799dd31311b6b7e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -267,6 +267,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -265,6 +265,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/patches/unapplied-server/0179-Shulker-spawn-from-bullet-options.patch b/patches/server/0176-Shulker-spawn-from-bullet-options.patch similarity index 93% rename from patches/unapplied-server/0179-Shulker-spawn-from-bullet-options.patch rename to patches/server/0176-Shulker-spawn-from-bullet-options.patch index 9b83cc979..8aba1f071 100644 --- a/patches/unapplied-server/0179-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0176-Shulker-spawn-from-bullet-options.patch @@ -13,10 +13,10 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 31284660a9718503a1ce474c56d993de3126a1ea..df944e733ca589d407af3709e0ff025f568600b7 100644 +index 5b4ad4f64488ca5a21312caa3d13318f429401ea..73063abbd051f1d044a8b2c0530cc8d2a96a6331 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -503,12 +503,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -53,10 +53,10 @@ index 31284660a9718503a1ce474c56d993de3126a1ea..df944e733ca589d407af3709e0ff025f @Nullable diff --git a/src/main/java/net/minecraft/world/item/DyeColor.java b/src/main/java/net/minecraft/world/item/DyeColor.java -index c7e36bd598090b7d9f818ac1f6b39e13e64e8bf7..e2a960e2dc5414c731feeb5444792d6b26487c9f 100644 +index 2202798612cad53aff28c499b8909a7292a37ad5..5ed2b7d15686fc9aa6dc7c03c337433cb3ee2cbd 100644 --- a/src/main/java/net/minecraft/world/item/DyeColor.java +++ b/src/main/java/net/minecraft/world/item/DyeColor.java -@@ -101,4 +101,10 @@ public enum DyeColor implements StringRepresentable { +@@ -105,4 +105,10 @@ public enum DyeColor implements StringRepresentable { public String getSerializedName() { return this.name; } diff --git a/patches/unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch similarity index 92% rename from patches/unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0177-Eating-glow-berries-adds-glow-effect.patch index ab0b85ffa..7b11d8d14 100644 --- a/patches/unapplied-server/0180-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index c157e7f6fa28f713fcfb699daa329abed0b32cd5..bb2103a488964f25335393fa91e8ae5749eca333 100644 +index 6467358f5fdf4cd4f7c1e2cc65c834a9da39596a..42b322879629afb2d2fc64a215f010f5d5ce9e02 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1535,7 +1535,7 @@ public class Items { +@@ -1909,7 +1909,7 @@ public class Items { "sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, new Item.Properties().food(Foods.SWEET_BERRIES)) ); public static final Item GLOW_BERRIES = registerItem( - "glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) + "glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) // Purpur ); - public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE); - public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); + public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); + public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index cc612f8328abfa27d784181c5aebbcd9e0b10c05..b21d288f62f473cd9d1057d3d2a452f16b0291d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0181-Option-to-make-drowned-break-doors.patch b/patches/server/0178-Option-to-make-drowned-break-doors.patch similarity index 93% rename from patches/unapplied-server/0181-Option-to-make-drowned-break-doors.patch rename to patches/server/0178-Option-to-make-drowned-break-doors.patch index 335400a6f..e15f078e0 100644 --- a/patches/unapplied-server/0181-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0178-Option-to-make-drowned-break-doors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 8850d8fc54d7025d323bc273a87a609baacea174..13427d23f1e614c0d83e9ccd68944ea4e1993c73 100644 +index f037d50f26f7532f11a71790448de7a71644b6ca..2547ac49721e2840da2845076d5e62a1465a4ea3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; @@ -16,7 +16,7 @@ index 8850d8fc54d7025d323bc273a87a609baacea174..13427d23f1e614c0d83e9ccd68944ea4 import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; -@@ -122,6 +123,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -125,6 +126,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0D)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level().getSeaLevel())); @@ -24,7 +24,7 @@ index 8850d8fc54d7025d323bc273a87a609baacea174..13427d23f1e614c0d83e9ccd68944ea4 this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); -@@ -171,7 +173,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -174,7 +176,7 @@ public class Drowned extends Zombie implements RangedAttackMob { @Override public boolean supportsBreakDoorGoal() { diff --git a/patches/unapplied-server/0182-Configurable-hunger-starvation-damage.patch b/patches/server/0179-Configurable-hunger-starvation-damage.patch similarity index 93% rename from patches/unapplied-server/0182-Configurable-hunger-starvation-damage.patch rename to patches/server/0179-Configurable-hunger-starvation-damage.patch index 3108d3c43..df13b853c 100644 --- a/patches/unapplied-server/0182-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0179-Configurable-hunger-starvation-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable hunger starvation damage diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java -index 2840c0b16d9b8147703f34bac5a8aa21f82e6e44..e8079d126e6c0cf0b15c01afb6498922ee05964c 100644 +index 08a6cca64ddd49826a0bbddd7711187c73bb4997..dd72d6a79139ff33f26a32b71283ce0b8d084ecc 100644 --- a/src/main/java/net/minecraft/world/food/FoodData.java +++ b/src/main/java/net/minecraft/world/food/FoodData.java -@@ -102,7 +102,7 @@ public class FoodData { +@@ -107,7 +107,7 @@ public class FoodData { ++this.tickTimer; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || enumdifficulty == Difficulty.HARD || player.getHealth() > 1.0F && enumdifficulty == Difficulty.NORMAL) { diff --git a/patches/unapplied-server/0183-Enhance-SysoutCatcher.patch b/patches/server/0180-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/unapplied-server/0183-Enhance-SysoutCatcher.patch rename to patches/server/0180-Enhance-SysoutCatcher.patch diff --git a/patches/unapplied-server/0184-Add-uptime-command.patch b/patches/server/0181-Add-uptime-command.patch similarity index 95% rename from patches/unapplied-server/0184-Add-uptime-command.patch rename to patches/server/0181-Add-uptime-command.patch index 7b2b009f4..6c0c3dfa7 100644 --- a/patches/unapplied-server/0184-Add-uptime-command.patch +++ b/patches/server/0181-Add-uptime-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 9c335df92b0a6c7705c9def89ba5c320d2c8ed03..c2b8a653b01aa3e0856afa3e96555f5e8f0e81bd 100644 +index d0a81669ac20dc86e888aa34e246c251b8886ba2..26c9254cef922a78deac3053f93c60037f19d31f 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -253,6 +253,7 @@ public class Commands { +@@ -255,6 +255,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 9c335df92b0a6c7705c9def89ba5c320d2c8ed03..c2b8a653b01aa3e0856afa3e96555f5e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9d6424c79b10e76685de55a9d0d05653ac3e3c5f..0e9cf9f9ad81363cdeacd3da3a776aaad39045f9 100644 +index b68db217c8765fa029244bf2701757bd31a5db2b..6d84eb68e3160f772d6832513df2bc4db87b594e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop p.broadcastBreakEvent(context.getHand())); + itemStack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } - return InteractionResult.sidedSuccess(level.isClientSide); @@ -80,10 +80,10 @@ index 4f8689e8cbc8b6b9f44168126b95cc864a383c9e..b05bb4caf57965b82d841f52d6ea2798 return optional3; } else { diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java -index 704cbc775c9f7663c57c431e8a7651d7684ccc34..26a73f3982db764c4793326b41a541dffc416559 100644 +index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5d41eb6a6 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java -@@ -45,15 +45,23 @@ public class HoeItem extends DiggerItem { +@@ -46,15 +46,23 @@ public class HoeItem extends DiggerItem { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos blockPos = context.getClickedPos(); @@ -114,7 +114,7 @@ index 704cbc775c9f7663c57c431e8a7651d7684ccc34..26a73f3982db764c4793326b41a541df if (!level.isClientSide) { consumer.accept(context); if (player != null) { -@@ -61,7 +69,7 @@ public class HoeItem extends DiggerItem { +@@ -62,7 +70,7 @@ public class HoeItem extends DiggerItem { } } @@ -124,10 +124,10 @@ index 704cbc775c9f7663c57c431e8a7651d7684ccc34..26a73f3982db764c4793326b41a541df return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java -index 9aba0211f37501bbd19b583d22fa83eae32390d9..f44e28bf44b9d39267d21eaf6a025b5f28f3cd72 100644 +index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87b55176e6 100644 --- a/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java -@@ -46,9 +46,12 @@ public class ShovelItem extends DiggerItem { +@@ -47,9 +47,12 @@ public class ShovelItem extends DiggerItem { BlockState blockState2 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState3 = null; Runnable afterAction = null; // Paper @@ -143,7 +143,7 @@ index 9aba0211f37501bbd19b583d22fa83eae32390d9..f44e28bf44b9d39267d21eaf6a025b5f } else if (blockState.getBlock() instanceof CampfireBlock && blockState.getValue(CampfireBlock.LIT)) { afterAction = () -> { // Paper if (!level.isClientSide()) { -@@ -75,7 +78,7 @@ public class ShovelItem extends DiggerItem { +@@ -76,7 +79,7 @@ public class ShovelItem extends DiggerItem { } } diff --git a/patches/unapplied-server/0186-Store-placer-on-Block-when-placed.patch b/patches/server/0183-Store-placer-on-Block-when-placed.patch similarity index 80% rename from patches/unapplied-server/0186-Store-placer-on-Block-when-placed.patch rename to patches/server/0183-Store-placer-on-Block-when-placed.patch index c16d1d773..c6f5d3a96 100644 --- a/patches/unapplied-server/0186-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0183-Store-placer-on-Block-when-placed.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index b4b1ffe875a18bcb72b7f1d87f6ddbea436bbb66..829d84f48c7149ec1ba0b71b0f43ef19fed99380 100644 +index 7e6c231a50c7fd2297e1ab404a743e1aece9913b..0bc6edf82d77ae88d64bd6ca0a5294c2143f2f5c 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -454,6 +454,7 @@ public final class ItemStack { +@@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder { world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 for (BlockState blockstate : blocks) { blockstate.update(true, false); @@ -16,19 +16,19 @@ index b4b1ffe875a18bcb72b7f1d87f6ddbea436bbb66..829d84f48c7149ec1ba0b71b0f43ef19 } world.preventPoiUpdated = false; -@@ -485,6 +486,7 @@ public final class ItemStack { +@@ -506,6 +507,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically - block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, context); // Paper - pass context + block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context } + block.getBlock().forgetPlacer(); // Purpur world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 22036ed3ea0629bc12981a8d91a03e55cc2117d6..3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14 100644 +index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..6f7e90d406b088fee0eb254f8042bd404d8f36fa 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -446,7 +446,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -438,7 +438,17 @@ public class Block extends BlockBehaviour implements ItemLike { } // Paper - fix drops not preventing stats/food exhaustion } diff --git a/patches/unapplied-server/0187-Summoner-API.patch b/patches/server/0184-Summoner-API.patch similarity index 89% rename from patches/unapplied-server/0187-Summoner-API.patch rename to patches/server/0184-Summoner-API.patch index 42edefcb0..a269522e4 100644 --- a/patches/unapplied-server/0187-Summoner-API.patch +++ b/patches/server/0184-Summoner-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Summoner API diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb8766e33960f 100644 +index fa81b12fc38a20b8ec39155259fb75c18ff9f0ae..8b08476457a6ead1a3c3e2ab35d08a8e0625c43e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -60,6 +60,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -56,6 +56,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -16,7 +16,7 @@ index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb876 public IronGolem(EntityType type, Level world) { super(type, world); -@@ -93,6 +94,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -88,6 +89,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob { return this.level().purpurConfig.ironGolemTakeDamageFromWater; } @@ -32,7 +32,7 @@ index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb876 @Override protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur -@@ -170,6 +180,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -165,6 +175,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putBoolean("PlayerCreated", this.isPlayerCreated()); @@ -40,7 +40,7 @@ index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb876 this.addPersistentAngerSaveData(nbt); } -@@ -177,6 +188,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -172,6 +183,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.setPlayerCreated(nbt.getBoolean("PlayerCreated")); @@ -49,18 +49,18 @@ index 75a44fdb1228233ac2abe1d33bde8d978a8a994b..02506902ca7e6f4e4c0fea47499cb876 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9..81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d 100644 +index 9f20eae7449c670b913cc3bbe1a89254a1d8cde2..8f2348a7fe830a85985ce2b19cb2a9159bca711f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -49,6 +49,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -47,6 +47,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + private static final EntityDataAccessor DATA_PUMPKIN_ID = SynchedEntityData.defineId(SnowGolem.class, EntityDataSerializers.BYTE); private static final byte PUMPKIN_FLAG = 16; - private static final float EYE_HEIGHT = 1.7F; + @Nullable private java.util.UUID summoner; // Purpur public SnowGolem(EntityType type, Level world) { super(type, world); -@@ -76,6 +77,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -74,6 +75,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.snowGolemMaxHealth); } @@ -76,7 +76,7 @@ index d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9..81a88d510d7f52ca6a1c9cca991c22c3 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -103,6 +113,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -101,6 +111,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putBoolean("Pumpkin", this.hasPumpkin()); @@ -84,7 +84,7 @@ index d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9..81a88d510d7f52ca6a1c9cca991c22c3 } @Override -@@ -111,6 +122,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -109,6 +120,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM if (nbt.contains("Pumpkin")) { this.setPumpkin(nbt.getBoolean("Pumpkin")); } @@ -93,18 +93,18 @@ index d46ab4d56e4c34b4dbe7a3df0785ab8745fcd3b9..81a88d510d7f52ca6a1c9cca991c22c3 } 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 06f4bbbbdf3a3c49035df9edc258e6bda87b53fc..b5ce9576ce7e91204f981c86fe70abb4cd0f267f 100644 +index 6752a0039fac041e9bdd25327cdf20d3f1922bd6..01d193d2584b62897687bd088fb590de8a4ab279 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 -@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob - return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); +@@ -88,6 +88,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob + return !entityliving.getType().is(EntityTypeTags.WITHER_FRIENDS) && entityliving.attackable(); }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); + @Nullable private java.util.UUID summoner; // Purpur private int shootCooldown = 0; // Purpur // Paper start private boolean canPortal = false; -@@ -123,6 +124,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -126,6 +127,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return this.level().purpurConfig.witherTakeDamageFromWater; } @@ -120,7 +120,7 @@ index 06f4bbbbdf3a3c49035df9edc258e6bda87b53fc..b5ce9576ce7e91204f981c86fe70abb4 @Override protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); -@@ -257,6 +267,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -260,6 +270,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("Invul", this.getInvulnerableTicks()); @@ -128,7 +128,7 @@ index 06f4bbbbdf3a3c49035df9edc258e6bda87b53fc..b5ce9576ce7e91204f981c86fe70abb4 } @Override -@@ -266,6 +277,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -269,6 +280,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -137,7 +137,7 @@ index 06f4bbbbdf3a3c49035df9edc258e6bda87b53fc..b5ce9576ce7e91204f981c86fe70abb4 } diff --git a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index cdd7ab3fe589d089c0c03508721f46f6c136fc8a..6f148028c0fe503e9f6b327596d0954ce9e53269 100644 +index 655f51902e5d24643d41c4ec981743543c0890a5..e6a299eeda5d18274fa3b1fb542b217a074c1d83 100644 --- a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java @@ -71,7 +71,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { @@ -176,10 +176,10 @@ index cdd7ab3fe589d089c0c03508721f46f6c136fc8a..6f148028c0fe503e9f6b327596d0954c entity.moveTo((double) pos.getX() + 0.5D, (double) pos.getY() + 0.05D, (double) pos.getZ() + 0.5D, 0.0F, 0.0F); // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -index fb180f0bcd20e51d41cfc924029c0b23d3d26258..688d161cd6725f494366c23668ebd6ff709b1587 100644 +index bbf59b2577812e74ffd45f694b83a42e043273c0..5cb06959aeaceeb98cfee34b1df804e6642f305f 100644 --- a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -76,6 +76,7 @@ public class WitherSkullBlock extends SkullBlock { +@@ -79,6 +79,7 @@ public class WitherSkullBlock extends SkullBlock { entitywither.moveTo((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.55D, (double) blockposition1.getZ() + 0.5D, shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F, 0.0F); entitywither.yBodyRot = shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; entitywither.makeInvulnerable(); diff --git a/patches/unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch b/patches/server/0185-Customizable-sleeping-actionbar-messages.patch similarity index 93% rename from patches/unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0185-Customizable-sleeping-actionbar-messages.patch index 96ed98310..90293642d 100644 --- a/patches/unapplied-server/0188-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0185-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d3340055cf5c79b1f7430dc64516118bbb707086..4a08c804c3e31a80ee9b663a44fd60142709c9c6 100644 +index 1dc58b41d3963c2adc58e79cd6db7e146ac049ad..83ec2e31d81d6209953252a3780552c3cf110c68 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1241,11 +1241,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1231,11 +1231,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -38,10 +38,10 @@ index d3340055cf5c79b1f7430dc64516118bbb707086..4a08c804c3e31a80ee9b663a44fd6014 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 13f39b219615b8091284f4ac56d76a505956a556..65e549ebad6f89640000f27356f1de434c5925c8 100644 +index 397448063fb770f736f9c8bb7061852d3212484d..15dc4691ce604fd7f32b635590b32f4afec8bf2a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1469,7 +1469,19 @@ public class ServerPlayer extends Player { +@@ -1546,7 +1546,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { @@ -63,7 +63,7 @@ index 13f39b219615b8091284f4ac56d76a505956a556..65e549ebad6f89640000f27356f1de43 ((ServerLevel) this.level()).updateSleepingPlayerList(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e63f576ccd93358395a2d1dc84ed4734611f9474..6aa225252d1026979fe88c273652e3d9ebdeb5f3 100644 +index 1419b0a639590bb8d34fb12410f5284548723e0c..45ce203e295d10d522851caefd049995d2d552a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -186,6 +186,9 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 67% rename from patches/unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch index c2eac34ec..3e715229e 100644 --- a/patches/unapplied-server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -6,18 +6,25 @@ Subject: [PATCH] option to disable shulker box items from dropping contents diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index 8d2c0accadaf0c5d28e7db6e62a05f6c619cf02f..b1779e3cf4b01afc15aa367cfadb999366e46d19 100644 +index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..f713734efaad4312be270d808e79f0e562c84466 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -287,7 +287,7 @@ public class BlockItem extends Item { +@@ -28,6 +28,7 @@ import net.minecraft.world.level.block.ShulkerBoxBlock; + import net.minecraft.world.level.block.SoundType; + import net.minecraft.world.level.block.entity.BlockEntity; + import net.minecraft.world.level.block.entity.BlockEntityType; ++import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity; + import net.minecraft.world.level.block.state.BlockState; + import net.minecraft.world.level.gameevent.GameEvent; + import net.minecraft.world.phys.shapes.CollisionContext; +@@ -256,6 +257,7 @@ public class BlockItem extends Item { @Override public void onDestroyed(ItemEntity entity) { -- if (this.block instanceof ShulkerBoxBlock) { -+ if (this.block instanceof ShulkerBoxBlock && entity.level().purpurConfig.shulkerBoxItemDropContentsWhenDestroyed) { - ItemStack itemstack = entity.getItem(); - CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); ++ //entity.level().purpurConfig.shulkerBoxItemDropContentsWhenDestroyed // Purpur - TODO: shulkerBoxItemDropContentsWhenDestroyed + ItemContainerContents itemcontainercontents = (ItemContainerContents) entity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); + if (itemcontainercontents != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 2335a56bb46fd9ece82547544e8cac883562eba2..6be3b83976cfd92f984f2ce9479d6f0f5d883e17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0190-Big-dripleaf-tilt-delay.patch b/patches/server/0187-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/unapplied-server/0190-Big-dripleaf-tilt-delay.patch rename to patches/server/0187-Big-dripleaf-tilt-delay.patch index c861c33d7..e9b333cea 100644 --- a/patches/unapplied-server/0190-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0187-Big-dripleaf-tilt-delay.patch @@ -11,10 +11,10 @@ PARTIAL: big_dripleaf with PARTIAL tilt will change to FULL tilt after 10 ticks UNSTABLE: big_dripleaf with FULL tilt will change back to no tilt after 100 ticks diff --git a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -index 0d92bd6f1e4f3470a62f573add3490220e60ef7a..2e89b22de852f43f2694be52043799f07f14800b 100644 +index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae06b15064d 100644 --- a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -243,7 +243,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone +@@ -244,7 +244,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone BigDripleafBlock.playTiltSound(world, blockposition, soundeffect); } diff --git a/patches/unapplied-server/0191-Player-ridable-in-water-option.patch b/patches/server/0188-Player-ridable-in-water-option.patch similarity index 90% rename from patches/unapplied-server/0191-Player-ridable-in-water-option.patch rename to patches/server/0188-Player-ridable-in-water-option.patch index 093873eeb..3c2ef239a 100644 --- a/patches/unapplied-server/0191-Player-ridable-in-water-option.patch +++ b/patches/server/0188-Player-ridable-in-water-option.patch @@ -5,17 +5,19 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 992ac6cfba700839259b973fa1eabb5ce6c301af..e8000f236d3ec0476ec782f08e159eea6c99476a 100644 +index df33ad8ef6394042c2b617606c7c792fe3801632..44ef706008a1477d2073c29f2c9d016bf91e15a6 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2050,6 +2050,11 @@ public abstract class Player extends LivingEntity { - return this.inventory.armor; +@@ -2073,6 +2073,13 @@ public abstract class Player extends LivingEntity { + return slot != EquipmentSlot.BODY; } ++ // Purpur start + @Override + public boolean dismountsUnderwater() { + return !level().purpurConfig.playerRidableInWater; + } ++ // Purpur end + public boolean setEntityOnShoulder(CompoundTag entityNbt) { if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { diff --git a/patches/unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 94% rename from patches/unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 17d5b4fad..a41765899 100644 --- a/patches/unapplied-server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit 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 7621237df388ee10ef962b0c4e795c9de88762d0..19d7142d62339d01ce2d3936a95c829666cd4e27 100644 +index b361c6b4ca17b9d466555037235a5660caa5c9bd..21a570d09ad3e19e6c709ff1152db7d204648122 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -455,6 +455,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -434,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { flag1 = flag && this.hurtWithCleanWater(source, (ThrownPotion) source.getDirectEntity(), amount); diff --git a/patches/unapplied-server/0193-Add-compass-command.patch b/patches/server/0190-Add-compass-command.patch similarity index 94% rename from patches/unapplied-server/0193-Add-compass-command.patch rename to patches/server/0190-Add-compass-command.patch index 1a1e8fe53..3fd9933eb 100644 --- a/patches/unapplied-server/0193-Add-compass-command.patch +++ b/patches/server/0190-Add-compass-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index c2b8a653b01aa3e0856afa3e96555f5e8f0e81bd..0026235782aeb5e663faa3aaf11040635cd12204 100644 +index 26c9254cef922a78deac3053f93c60037f19d31f..67ec90a2a05269a5912b3c8e64d6d4162a8c6ca2 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -255,6 +255,7 @@ public class Commands { +@@ -257,6 +257,7 @@ public class Commands { org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index c2b8a653b01aa3e0856afa3e96555f5e8f0e81bd..0026235782aeb5e663faa3aaf1104063 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 65e549ebad6f89640000f27356f1de434c5925c8..0ba6ecf578e731a9705a384944aed482f829b58d 100644 +index 15dc4691ce604fd7f32b635590b32f4afec8bf2a..670aa56c1b7c9e5fabda45b6a048a6cf6084a7d0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -283,6 +283,7 @@ public class ServerPlayer extends Player { +@@ -300,6 +300,7 @@ public class ServerPlayer extends Player { public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur @@ -28,23 +28,24 @@ index 65e549ebad6f89640000f27356f1de434c5925c8..0ba6ecf578e731a9705a384944aed482 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -571,6 +572,7 @@ public class ServerPlayer extends Player { +@@ -610,6 +611,8 @@ public class ServerPlayer extends Player { + }); } - if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur ++ if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur - TODO: move back up + if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur } @Override -@@ -638,6 +640,7 @@ public class ServerPlayer extends Player { - this.getBukkitEntity().setExtraData(nbt); // CraftBukkit +@@ -687,6 +690,7 @@ public class ServerPlayer extends Player { + } nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur + nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2903,5 +2906,13 @@ public class ServerPlayer extends Player { +@@ -3011,5 +3015,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -59,7 +60,7 @@ index 65e549ebad6f89640000f27356f1de434c5925c8..0ba6ecf578e731a9705a384944aed482 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6aa225252d1026979fe88c273652e3d9ebdeb5f3..477639dddb7c5ae0c9cc45a6eca73d82e486409b 100644 +index 45ce203e295d10d522851caefd049995d2d552a2..042fd443c98258240042d3ce1650f36e601d72e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -255,6 +255,11 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0194-Toggle-for-kinetic-damage.patch b/patches/server/0191-Toggle-for-kinetic-damage.patch similarity index 93% rename from patches/unapplied-server/0194-Toggle-for-kinetic-damage.patch rename to patches/server/0191-Toggle-for-kinetic-damage.patch index b53e2fa7b..b1a8a64be 100644 --- a/patches/unapplied-server/0194-Toggle-for-kinetic-damage.patch +++ b/patches/server/0191-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cd87e7c52b75c6ba40343557ba12c7891da88e07..3a1b8a94642339a96d8f7391714fae1648dc5149 100644 +index 20433981a866b46a2ccedec70d5ee01079c2797c..d85407573c47df162cedb8667c2fbc327e75588b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2954,6 +2954,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2992,6 +2992,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch similarity index 88% rename from patches/unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0192-Add-Option-for-disable-observer-clocks.patch index 848091b94..b672c3e1c 100644 --- a/patches/unapplied-server/0195-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0192-Add-Option-for-disable-observer-clocks.patch @@ -6,12 +6,12 @@ Subject: [PATCH] Add Option for disable observer clocks Allow to disable observer clocks: https://www.spigotmc.org/attachments/observerclock-gif.365936/ diff --git a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java -index 713352b68f82d4c4a19a712d5207de0f99456713..d056e80c98973e9ba64adc5a8554acc8a5f3eac9 100644 +index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af77c8c6070 100644 --- a/src/main/java/net/minecraft/world/level/block/ObserverBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ObserverBlock.java @@ -71,6 +71,7 @@ public class ObserverBlock extends DirectionalBlock { @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { if (state.getValue(ObserverBlock.FACING) == direction && !(Boolean) state.getValue(ObserverBlock.POWERED)) { + if (!world.getMinecraftWorld().purpurConfig.disableObserverClocks || !(neighborState.getBlock() instanceof ObserverBlock) || neighborState.getValue(ObserverBlock.FACING).getOpposite() != direction) // Purpur this.startSignal(world, pos); diff --git a/patches/unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch similarity index 91% rename from patches/unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch index 5779de297..ff0c75069 100644 --- a/patches/unapplied-server/0196-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Customizeable Zombie Villager curing times 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 438302f6705bcf3d60f27dde279de010bd95aad4..40465fbe6f78da6176d5fad8a3687cefd93dcf43 100644 +index 2ec3a09135f85a5de68e77511f3f213adf08712c..d909138942212ee090ff513b1817414c93457425 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -221,7 +221,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - } - +@@ -222,7 +222,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + if (this.hasEffect(MobEffects.WEAKNESS)) { + itemstack.consume(1, player); if (!this.level().isClientSide) { - this.startConverting(player.getUUID(), this.random.nextInt(2401) + 3600); + this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/patches/unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 96% rename from patches/unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch index f5d9cb0cf..bf99d9eba 100644 --- a/patches/unapplied-server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Option for sponges to work on lava and mud Co-authored by: granny diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 1737a670aa81c17233f8e9a8632f0e0876be367c..7e87b4299979c9e46abb582da7a8e54a36e8dfc5 100644 +index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b778eb7849 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java @@ -77,7 +77,7 @@ public class SpongeBlock extends Block { diff --git a/patches/unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch similarity index 93% rename from patches/unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch index f454e7599..6d1f5445f 100644 --- a/patches/unapplied-server/0198-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound 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 b5ce9576ce7e91204f981c86fe70abb4cd0f267f..461247f3424b854032ccd45855c877aa85dd2e88 100644 +index 01d193d2584b62897687bd088fb590de8a4ab279..a030fe21a88a9486cc8367710a96af67c761635c 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 -@@ -426,7 +426,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end diff --git a/patches/unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch similarity index 95% rename from patches/unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch index 4934ae8d2..c128cb475 100644 --- a/patches/unapplied-server/0199-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cactus breaks from solid neighbors config diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index ba4aaf850af36a84517c70581e141157c4f15b99..84b04419d2cb536ac42ec5373cc74cc29418755c 100644 +index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f6261c6955b 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java @@ -114,7 +114,7 @@ public class CactusBlock extends Block { diff --git a/patches/unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 94% rename from patches/unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch index 7a8f6e761..430c9d327 100644 --- a/patches/unapplied-server/0200-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to remove curse of binding with weakness diff --git a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java -index 9af1da3858d6cf79b8bfaf99dde1370ccc50d023..1acb41fab25bdbc4109913b111dbe3b0e106af3f 100644 +index 9992599dbe4f4a430e822a44b03c00505abfbfaf..3fea9339420aa38b303ccf6c154aec246e617b5b 100644 --- a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java +++ b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java -@@ -95,7 +95,7 @@ public class InventoryMenu extends RecipeBookMenu { +@@ -97,7 +97,7 @@ public class InventoryMenu extends RecipeBookMenu { public boolean mayPickup(Player playerEntity) { ItemStack itemstack = this.getItem(); From 2ff8e3c3a5f8d266c53807136e61740115d35f98 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 01:42:40 -0700 Subject: [PATCH 103/148] 250... --- ...0198-Conduit-behavior-configuration.patch} | 69 ++-- .../0199-Cauldron-fill-chances.patch} | 10 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 16 +- .../0201-Shulker-change-color-with-dye.patch} | 8 +- .../0202-Extended-OfflinePlayer-API.patch} | 6 +- ...he-ability-to-add-combustible-items.patch} | 8 +- ...in-and-thunder-should-stop-on-sleep.patch} | 6 +- ...-blocks-to-grow-into-trees-naturall.patch} | 8 +- ...-right-click-to-use-exp-for-mending.patch} | 12 +- ...urally-aggressive-to-players-chance.patch} | 14 +- ...urally-aggressive-to-players-chance.patch} | 22 +- ...r-beds-to-explode-on-villager-sleep.patch} | 4 +- ...Halloween-options-and-optimizations.patch} | 22 +- .../0211-Config-for-grindstones.patch} | 49 +-- .../0212-UPnP-Port-Forwarding.patch} | 12 +- ...Campfire-option-for-lit-when-placed.patch} | 2 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 10 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 40 +-- .../0217-Signs-allow-color-codes.patch} | 22 +- ...-and-twisting-vines-configurable-ma.patch} | 14 +- .../0219-Mobs-always-drop-experience.patch} | 306 +++++++++--------- .../0220-Potion-NamespacedKey.patch} | 141 ++++---- .../0221-Grindstone-API.patch} | 4 +- ...e-to-replant-crops-and-nether-warts.patch} | 10 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- .../0224-Mob-head-visibility-percent.patch} | 4 +- ...able-valid-characters-for-usernames.patch} | 14 +- ...Shears-can-have-looting-enchantment.patch} | 82 +---- ...Stop-bees-from-dying-after-stinging.patch} | 4 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 12 +- ...onfigurable-farmland-trample-height.patch} | 4 +- ...onfigurable-player-pickup-exp-delay.patch} | 8 +- .../0231-Allow-void-trading.patch} | 4 +- .../0232-Configurable-phantom-size.patch} | 8 +- .../0233-Max-joins-per-second.patch} | 6 +- ...figurable-minimum-demand-for-trades.patch} | 8 +- .../0235-Lobotomize-stuck-villagers.patch} | 21 +- ...ion-for-villager-display-trade-item.patch} | 0 ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- .../0239-Anvil-repair-damage-options.patch} | 6 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 32 +- ...kip-junit-tests-for-purpur-commands.patch} | 12 +- ...rable-search-radius-for-villagers-t.patch} | 4 +- .../0244-Stonecutter-damage.patch} | 47 ++- ...le-damage-settings-for-magma-blocks.patch} | 2 +- ...246-Add-config-for-snow-on-blue-ice.patch} | 4 +- 49 files changed, 511 insertions(+), 608 deletions(-) rename patches/{unapplied-server/0201-Conduit-behavior-configuration.patch => server/0198-Conduit-behavior-configuration.patch} (59%) rename patches/{unapplied-server/0202-Cauldron-fill-chances.patch => server/0199-Cauldron-fill-chances.patch} (91%) rename patches/{unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch => server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch} (76%) rename patches/{unapplied-server/0204-Shulker-change-color-with-dye.patch => server/0201-Shulker-change-color-with-dye.patch} (93%) rename patches/{unapplied-server/0205-Extended-OfflinePlayer-API.patch => server/0202-Extended-OfflinePlayer-API.patch} (97%) rename patches/{unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch => server/0203-Added-the-ability-to-add-combustible-items.patch} (92%) rename patches/{unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (93%) rename patches/{unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (93%) rename patches/{unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch => server/0206-Shift-right-click-to-use-exp-for-mending.patch} (90%) rename patches/{unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch => server/0207-Dolphins-naturally-aggressive-to-players-chance.patch} (91%) rename patches/{unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch => server/0208-Cows-naturally-aggressive-to-players-chance.patch} (87%) rename patches/{unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch => server/0209-Option-for-beds-to-explode-on-villager-sleep.patch} (94%) rename patches/{unapplied-server/0213-Halloween-options-and-optimizations.patch => server/0210-Halloween-options-and-optimizations.patch} (85%) rename patches/{unapplied-server/0214-Config-for-grindstones.patch => server/0211-Config-for-grindstones.patch} (66%) rename patches/{unapplied-server/0215-UPnP-Port-Forwarding.patch => server/0212-UPnP-Port-Forwarding.patch} (89%) rename patches/{unapplied-server/0216-Campfire-option-for-lit-when-placed.patch => server/0213-Campfire-option-for-lit-when-placed.patch} (96%) rename patches/{unapplied-server/0217-options-to-extinguish-fire-blocks-with-snowballs.patch => server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/{unapplied-server/0218-Add-option-to-disable-zombie-villagers-cure.patch => server/0215-Add-option-to-disable-zombie-villagers-cure.patch} (82%) rename patches/{unapplied-server/0219-Persistent-BlockEntity-Lore-and-DisplayName.patch => server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch} (89%) rename patches/{unapplied-server/0220-Signs-allow-color-codes.patch => server/0217-Signs-allow-color-codes.patch} (84%) rename patches/{unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (94%) rename patches/{unapplied-server/0222-Mobs-always-drop-experience.patch => server/0219-Mobs-always-drop-experience.patch} (91%) rename patches/{unapplied-server/0223-Potion-NamespacedKey.patch => server/0220-Potion-NamespacedKey.patch} (58%) rename patches/{unapplied-server/0224-Grindstone-API.patch => server/0221-Grindstone-API.patch} (92%) rename patches/{unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (92%) rename patches/{unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch => server/0223-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/{unapplied-server/0227-Mob-head-visibility-percent.patch => server/0224-Mob-head-visibility-percent.patch} (97%) rename patches/{unapplied-server/0228-Configurable-valid-characters-for-usernames.patch => server/0225-Configurable-valid-characters-for-usernames.patch} (69%) rename patches/{unapplied-server/0229-Shears-can-have-looting-enchantment.patch => server/0226-Shears-can-have-looting-enchantment.patch} (67%) rename patches/{unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch => server/0227-Stop-bees-from-dying-after-stinging.patch} (92%) rename patches/{unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch => server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (92%) rename patches/{unapplied-server/0232-Configurable-farmland-trample-height.patch => server/0229-Configurable-farmland-trample-height.patch} (95%) rename patches/{unapplied-server/0233-Configurable-player-pickup-exp-delay.patch => server/0230-Configurable-player-pickup-exp-delay.patch} (92%) rename patches/{unapplied-server/0234-Allow-void-trading.patch => server/0231-Allow-void-trading.patch} (94%) rename patches/{unapplied-server/0235-Configurable-phantom-size.patch => server/0232-Configurable-phantom-size.patch} (91%) rename patches/{unapplied-server/0237-Max-joins-per-second.patch => server/0233-Max-joins-per-second.patch} (90%) rename patches/{unapplied-server/0238-Configurable-minimum-demand-for-trades.patch => server/0234-Configurable-minimum-demand-for-trades.patch} (91%) rename patches/{unapplied-server/0239-Lobotomize-stuck-villagers.patch => server/0235-Lobotomize-stuck-villagers.patch} (91%) rename patches/{unapplied-server/0240-Option-for-villager-display-trade-item.patch => server/0236-Option-for-villager-display-trade-item.patch} (100%) rename patches/{unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (92%) rename patches/{unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch => server/0238-Config-for-mob-last-hurt-by-player-time.patch} (92%) rename patches/{unapplied-server/0243-Anvil-repair-damage-options.patch => server/0239-Anvil-repair-damage-options.patch} (94%) rename patches/{unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch => server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/{unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch => server/0241-Add-toggle-for-enchant-level-clamping.patch} (65%) rename patches/{unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch => server/0242-Skip-junit-tests-for-purpur-commands.patch} (80%) rename patches/{unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch => server/0243-Implement-configurable-search-radius-for-villagers-t.patch} (94%) rename patches/{unapplied-server/0248-Stonecutter-damage.patch => server/0244-Stonecutter-damage.patch} (80%) rename patches/{unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch => server/0245-Configurable-damage-settings-for-magma-blocks.patch} (96%) rename patches/{unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch => server/0246-Add-config-for-snow-on-blue-ice.patch} (91%) diff --git a/patches/unapplied-server/0201-Conduit-behavior-configuration.patch b/patches/server/0198-Conduit-behavior-configuration.patch similarity index 59% rename from patches/unapplied-server/0201-Conduit-behavior-configuration.patch rename to patches/server/0198-Conduit-behavior-configuration.patch index ed8f999de..353d1f743 100644 --- a/patches/unapplied-server/0201-Conduit-behavior-configuration.patch +++ b/patches/server/0198-Conduit-behavior-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Conduit behavior configuration diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e63ce0677b 100644 +index 73e532dc998e5701c1a73da846da3d3a79871b81..da36058e52330aaf483d506f3d26ff345d1b8b0c 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -167,7 +167,7 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -168,7 +168,7 @@ public class ConduitBlockEntity extends BlockEntity { if ((l > 1 || i1 > 1 || j1 > 1) && (i == 0 && (i1 == 2 || j1 == 2) || j == 0 && (l == 2 || j1 == 2) || k == 0 && (l == 2 || i1 == 2))) { BlockPos blockposition2 = pos.offset(i, j, k); BlockState iblockdata = world.getBlockState(blockposition2); @@ -17,43 +17,43 @@ index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e6 int k1 = ablock.length; for (int l1 = 0; l1 < k1; ++l1) { -@@ -187,7 +187,7 @@ public class ConduitBlockEntity extends BlockEntity { - - private static void applyEffects(Level world, BlockPos pos, List activatingBlocks) { - int i = activatingBlocks.size(); -- int j = i / 7 * 16; // Paper - Conduit API; diff on change -+ int j = i / 7 * world.purpurConfig.conduitDistance; // Paper - Conduit API; diff on change // Purpur - int k = pos.getX(); - int l = pos.getY(); - int i1 = pos.getZ(); -@@ -218,20 +218,20 @@ public class ConduitBlockEntity extends BlockEntity { - blockEntity.destroyTarget = ConduitBlockEntity.findDestroyTarget(world, pos, blockEntity.destroyTargetUUID); - blockEntity.destroyTargetUUID = null; - } else if (blockEntity.destroyTarget == null) { -- List list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(pos), (entityliving1) -> { -+ List list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(pos, world), (entityliving1) -> { // Purpur +@@ -194,7 +194,7 @@ public class ConduitBlockEntity extends BlockEntity { + public static int getRange(List list) { + // CraftBukkit end + int i = list.size(); +- int j = i / 7 * 16; ++ int j = i / 7 * world.purpurConfig.conduitDistance; // Purpur + // CraftBukkit start + return j; + } +@@ -237,20 +237,20 @@ public class ConduitBlockEntity extends BlockEntity { + tileentityconduit.destroyTarget = ConduitBlockEntity.findDestroyTarget(world, blockposition, tileentityconduit.destroyTargetUUID); + tileentityconduit.destroyTargetUUID = null; + } else if (tileentityconduit.destroyTarget == null) { +- List list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(blockposition), (entityliving1) -> { ++ List list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(blockposition, world), (entityliving1) -> { // Purpur return entityliving1 instanceof Enemy && entityliving1.isInWaterOrRain(); }); if (!list1.isEmpty()) { - blockEntity.destroyTarget = (LivingEntity) list1.get(world.random.nextInt(list1.size())); + tileentityconduit.destroyTarget = (LivingEntity) list1.get(world.random.nextInt(list1.size())); } -- } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), 8.0D)) { -+ } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur - blockEntity.destroyTarget = null; +- } else if (!tileentityconduit.destroyTarget.isAlive() || !blockposition.closerThan(tileentityconduit.destroyTarget.blockPosition(), 8.0D)) { ++ } else if (!tileentityconduit.destroyTarget.isAlive() || !blockposition.closerThan(tileentityconduit.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur + tileentityconduit.destroyTarget = null; } - if (blockEntity.destroyTarget != null) { - // CraftBukkit start -- if (blockEntity.destroyTarget.hurt(world.damageSources().magic().directBlock(world, pos), 4.0F)) { // CraftBukkit -+ if (blockEntity.destroyTarget.hurt(world.damageSources().magic().directBlock(world, pos), world.purpurConfig.conduitDamageAmount)) { // CraftBukkit // Purpur - world.playSound(null, blockEntity.destroyTarget.getX(), blockEntity.destroyTarget.getY(), blockEntity.destroyTarget.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F); + // CraftBukkit start + if (damageTarget && tileentityconduit.destroyTarget != null) { +- if (tileentityconduit.destroyTarget.hurt(world.damageSources().magic().directBlock(world, blockposition), 4.0F)) { ++ if (tileentityconduit.destroyTarget.hurt(world.damageSources().magic().directBlock(world, blockposition), world.purpurConfig.conduitDamageAmount)) { // Purpur + world.playSound(null, tileentityconduit.destroyTarget.getX(), tileentityconduit.destroyTarget.getY(), tileentityconduit.destroyTarget.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F); } // CraftBukkit end -@@ -256,16 +256,22 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -275,16 +275,22 @@ public class ConduitBlockEntity extends BlockEntity { } - private static AABB getDestroyRangeAABB(BlockPos pos) { + public static AABB getDestroyRangeAABB(BlockPos pos) { + // Purpur start + return getDestroyRangeAABB(pos, null); + } @@ -75,19 +75,6 @@ index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e6 return entityliving.getUUID().equals(uuid); }); -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -index f0b0348e105fb27c829ec29e638433c57bfd5f64..57ce4b7c5fcfe7a88928cd4124f29af39e117ed9 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -@@ -29,7 +29,7 @@ public class CraftConduit extends CraftBlockEntityState impl - @Override - public int getRange() { - requirePlaced(); -- return this.getTileEntity().effectBlocks.size() / 7 * 16; -+ return this.getTileEntity().effectBlocks.size() / 7 * this.world.getHandle().purpurConfig.conduitDistance; // Purpur - } - - @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 6cb425d017cc8b12aece5bc1982d85056fc58431..60b511bd94288badd8b6390b5f66d5c79478a71b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0202-Cauldron-fill-chances.patch b/patches/server/0199-Cauldron-fill-chances.patch similarity index 91% rename from patches/unapplied-server/0202-Cauldron-fill-chances.patch rename to patches/server/0199-Cauldron-fill-chances.patch index fe77c21e1..e3647b741 100644 --- a/patches/unapplied-server/0202-Cauldron-fill-chances.patch +++ b/patches/server/0199-Cauldron-fill-chances.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cauldron fill chances diff --git a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java -index 47b6b83842201620bd6620f5acf11bb14334e35d..b4d2499ae39fd3f14b2600a9663ea8a823bdfbe4 100644 +index c9968934f4ecaa8d81e545f279b3001c7b1ce545..03e4fce6f8226451365fc2831b5bf1e5e6091730 100644 --- a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java -@@ -36,7 +36,7 @@ public class CauldronBlock extends AbstractCauldronBlock { +@@ -37,7 +37,7 @@ public class CauldronBlock extends AbstractCauldronBlock { } protected static boolean shouldHandlePrecipitation(Level world, Biome.Precipitation precipitation) { @@ -18,10 +18,10 @@ index 47b6b83842201620bd6620f5acf11bb14334e35d..b4d2499ae39fd3f14b2600a9663ea8a8 @Override diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java -index 5835872df922b859a31b44e3723c67097f21a641..ecb595ddf21b593175c27d59fd9587e7f2d56517 100644 +index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb391f2cbee 100644 --- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -189,7 +189,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -190,7 +190,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel world, BlockPos pos, float dripChance) { @@ -30,7 +30,7 @@ index 5835872df922b859a31b44e3723c67097f21a641..ecb595ddf21b593175c27d59fd9587e7 if (PointedDripstoneBlock.isStalactiteStartPos(state, world, pos)) { Optional optional = PointedDripstoneBlock.getFluidAboveStalactite(world, pos, state); -@@ -198,13 +198,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -199,13 +199,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate float f1; if (fluidtype == Fluids.WATER) { diff --git a/patches/unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 76% rename from patches/unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch index d1b5f2afd..4f2583613 100644 --- a/patches/unapplied-server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 7e62873eea85e33f81c943e70292ccb71a3dd276..b7f9793900d365f91d6e30dd22881a30e4250ac8 100644 +index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b26695f327b96 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -259,7 +259,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { if ((node == null || node.costMalus < 0.0F) && maxYStep > 0 - && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) -- && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL -+ && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) // Purpur - && blockPathTypes != BlockPathTypes.TRAPDOOR - && blockPathTypes != BlockPathTypes.POWDER_SNOW) { - node = this.findAcceptedNode(x, y + 1, z, maxYStep - 1, prevFeetY, direction, nodeType); + && (pathType != PathType.FENCE || this.canWalkOverFences()) +- && pathType != PathType.UNPASSABLE_RAIL ++ && (this.mob.level().purpurConfig.mobsIgnoreRails || pathType != PathType.UNPASSABLE_RAIL) // Purpur + && pathType != PathType.TRAPDOOR + && pathType != PathType.POWDER_SNOW) { + node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0204-Shulker-change-color-with-dye.patch b/patches/server/0201-Shulker-change-color-with-dye.patch similarity index 93% rename from patches/unapplied-server/0204-Shulker-change-color-with-dye.patch rename to patches/server/0201-Shulker-change-color-with-dye.patch index 7e0daecea..9c350a2ee 100644 --- a/patches/unapplied-server/0204-Shulker-change-color-with-dye.patch +++ b/patches/server/0201-Shulker-change-color-with-dye.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shulker change color with dye diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index df944e733ca589d407af3709e0ff025f568600b7..25b9f131f9d0fdb0a53ddcc685d8ae250cb3abd6 100644 +index 73063abbd051f1d044a8b2c0530cc8d2a96a6331..687fadf1ef64c5ae7e00c5da15b82245e07d3a39 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; +@@ -23,6 +23,8 @@ import net.minecraft.tags.DamageTypeTags; import net.minecraft.util.Mth; import net.minecraft.world.Difficulty; import net.minecraft.world.DifficultyInstance; @@ -16,8 +16,8 @@ index df944e733ca589d407af3709e0ff025f568600b7..25b9f131f9d0fdb0a53ddcc685d8ae25 +import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityDimensions; -@@ -49,6 +51,8 @@ import net.minecraft.world.entity.player.Player; + import net.minecraft.world.entity.EntitySelector; +@@ -48,6 +50,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.ShulkerBullet; import net.minecraft.world.item.DyeColor; diff --git a/patches/unapplied-server/0205-Extended-OfflinePlayer-API.patch b/patches/server/0202-Extended-OfflinePlayer-API.patch similarity index 97% rename from patches/unapplied-server/0205-Extended-OfflinePlayer-API.patch rename to patches/server/0202-Extended-OfflinePlayer-API.patch index 1f61bcad4..43aa6d94a 100644 --- a/patches/unapplied-server/0205-Extended-OfflinePlayer-API.patch +++ b/patches/server/0202-Extended-OfflinePlayer-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667c9e4dac0 100644 +index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486cad596515 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -335,14 +335,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -243,10 +243,10 @@ index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4e999cec1a004529a4bcd2f0ae63b3731bcac8f2..4a04c56371a2d9772fb542ffac5b9b98cbf1e86a 100644 +index 485c742874defe0a8cf1e7db09406b03ec40871b..0b278aaf675693e4babac5d551087285b59f8f5c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2670,6 +2670,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2736,6 +2736,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch b/patches/server/0203-Added-the-ability-to-add-combustible-items.patch similarity index 92% rename from patches/unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0203-Added-the-ability-to-add-combustible-items.patch index b2516f823..f5457d97f 100644 --- a/patches/unapplied-server/0206-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0203-Added-the-ability-to-add-combustible-items.patch @@ -24,11 +24,11 @@ index 1af7e1548f0648890a1ef2fc0ff4e4c3a56c947c..decea1697c075e7549ccc7501c8e5935 } else if (this.isFuel(itemstack1)) { if (!this.moveItemStackTo(itemstack1, 1, 2, false)) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index c5bbb83f54d942d438ce8cf3a060ef2184069b88..5a3a619c4b936a4d186c0593f5af7b2493b85825 100644 +index ce2c424068001eec16032361baa206f6a5aa5332..72f4c1bbdfbb3e0710af33cee419b4ce8b023102 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -209,6 +209,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit - // Paper end - cache burn durations +@@ -214,6 +214,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit + } } + // Purpur start @@ -51,7 +51,7 @@ index c5bbb83f54d942d438ce8cf3a060ef2184069b88..5a3a619c4b936a4d186c0593f5af7b24 private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a6affd4d7ecbe57a79fa18f4473c60662053d663..14e60675d23f9696fd8f64eb026fcd0b82b498f0 100644 +index 6a61d03ca1e88f4d8fe66bfa6c29e1550b88a103..b113e54cbe8262b7d0d8bae156d00baf04486b32 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1589,6 +1589,19 @@ public final class CraftServer implements Server { diff --git a/patches/unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 93% rename from patches/unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index a0072961c..c9989a31b 100644 --- a/patches/unapplied-server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db108f3bad 100644 +index 83ec2e31d81d6209953252a3780552c3cf110c68..42db3e64b120b753e98a0fd7e3f56c7d28256fd2 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1401,6 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1391,6 +1391,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1408,6 +1409,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1398,6 +1399,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 93% rename from patches/unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index d4aac716f..7bb4a3c7d 100644 --- a/patches/unapplied-server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1bf2f2d95 100644 +index fad69dfc20574ab23634b14252b50929cca75b21..7082486f6b760bed2a61938f493d5124722b58e2 100644 --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java @@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @@ -30,10 +30,10 @@ index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1 } diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7ebc6f398 100644 +index 260906f493416d98ab574a7262fce5e9b7e40c64..ce639e4a2d87202a10ef4fc73274c4b2c4e95720 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -7380,6 +7380,7 @@ public class Blocks { +@@ -7389,6 +7389,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -41,7 +41,7 @@ index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7 .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -7392,6 +7393,7 @@ public class Blocks { +@@ -7401,6 +7402,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/patches/unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch similarity index 90% rename from patches/unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch index b2e254f30..e2596f502 100644 --- a/patches/unapplied-server/0209-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc09484465fc9d 100644 +index a810eaa7dc319f5ea69b239190ae91838bfad4ec..6d194797d8fe2cd6e5652d596f4bc66ffc3b6375 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -517,6 +517,7 @@ public class ServerPlayerGameMode { +@@ -513,6 +513,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { + if (shiftClickMended(stack)) return InteractionResult.SUCCESS; // Purpur BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); - InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -619,4 +620,18 @@ public class ServerPlayerGameMode { + boolean cancelledBlock = false; +@@ -622,4 +623,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -36,10 +36,10 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ccd830286153405206110334cf58323315c02b7e..1cefa3b6bdd62ae7bf30da872012fc150905f5ae 100644 +index fea36f5e4f64281459d62f4a6a4a7dd129706150..7c96644ee70ea061a5eb29809c2c5cc1bf55e194 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2034,6 +2034,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 91% rename from patches/unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch index 869d163f6..1b217e7a7 100644 --- a/patches/unapplied-server/0210-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance 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 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777fcf1b29f3 100644 +index 38112239035b0c66c429c0762199867e70e0a67a..e539eefb6e6d3172611d1f9185a1138001481885 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -83,6 +83,7 @@ public class Dolphin extends WaterAnimal { +@@ -81,6 +81,7 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -16,15 +16,15 @@ index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777f private int spitCooldown; // Purpur public Dolphin(EntityType type, Level world) { -@@ -174,6 +175,7 @@ public class Dolphin extends WaterAnimal { - public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { +@@ -172,6 +173,7 @@ public class Dolphin extends WaterAnimal { + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); + this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance; // Purpur - return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, entityData); } -@@ -238,6 +240,7 @@ public class Dolphin extends WaterAnimal { +@@ -236,6 +238,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -32,7 +32,7 @@ index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777f this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); -@@ -245,12 +248,13 @@ public class Dolphin extends WaterAnimal { +@@ -243,12 +246,13 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); diff --git a/patches/unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch similarity index 87% rename from patches/unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch index e525cedf5..7f975656f 100644 --- a/patches/unapplied-server/0211-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e055ee3a7 100644 +index 8c908891c6c683332d8877ab3fa084a0849b17a9..106d2d692e2393517793c2bac8bebf401f717bea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; +@@ -39,6 +39,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; // CraftBukkit end public class Cow extends Animal { + private boolean isNaturallyAggressiveToPlayers; // Purpur - public Cow(EntityType type, Level world) { - super(type, world); -@@ -67,6 +68,7 @@ public class Cow extends Animal { + private static final EntityDimensions BABY_DIMENSIONS = EntityType.COW.getDimensions().scale(0.5F).withEyeHeight(0.665F); + +@@ -66,6 +67,7 @@ public class Cow extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); @@ -24,7 +24,7 @@ index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e } @Override -@@ -79,11 +81,18 @@ public class Cow extends Animal { +@@ -78,11 +80,18 @@ public class Cow extends Animal { return this.level().purpurConfig.cowTakeDamageFromWater; } @@ -41,15 +41,19 @@ index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -91,10 +100,11 @@ public class Cow extends Animal { + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> { + return level().purpurConfig.cowFeedMushrooms > 0 && (itemstack.is(Blocks.RED_MUSHROOM.asItem()) || itemstack.is(Blocks.BROWN_MUSHROOM.asItem())) || itemstack.is(ItemTags.COW_FOOD); // Purpur +@@ -91,6 +100,7 @@ public class Cow extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur } + @Override +@@ -99,7 +109,7 @@ public class Cow extends Animal { + } + public static AttributeSupplier.Builder createAttributes() { - return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur diff --git a/patches/unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 94% rename from patches/unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch index 0b234718c..f29316cac 100644 --- a/patches/unapplied-server/0212-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 ee509b5eea71c17ff466fb93fe63168710065add..d2b6d094c4b93055a4e6622372c6a0a83bd992a3 100644 +index a7c85c9efd13145cc061a3a0076b44a7af9812b9..1bace0d549ea4a4b45ac4cd1409524989ecac4ca 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1111,6 +1111,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1101,6 +1101,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/patches/unapplied-server/0213-Halloween-options-and-optimizations.patch b/patches/server/0210-Halloween-options-and-optimizations.patch similarity index 85% rename from patches/unapplied-server/0213-Halloween-options-and-optimizations.patch rename to patches/server/0210-Halloween-options-and-optimizations.patch index facc345ba..03547ad0e 100644 --- a/patches/unapplied-server/0213-Halloween-options-and-optimizations.patch +++ b/patches/server/0210-Halloween-options-and-optimizations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 3c7db09c5fbcb9d57febc937158b50634d68a082..08190c45b0807079b77c41203502e355ecaf2e14 100644 +index 76b858d0ab2da7b4cdf39aa6692e2a005958fee2..f7ac3a5b0a7c93240f948394649ad6dba5a1e4b5 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -304,7 +304,7 @@ public class Bat extends AmbientCreature { +@@ -301,7 +301,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -17,19 +17,19 @@ index 3c7db09c5fbcb9d57febc937158b50634d68a082..08190c45b0807079b77c41203502e355 b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -318,6 +318,7 @@ public class Bat extends AmbientCreature { - private static boolean isSpookySeason = false; - private static final int ONE_HOUR = 20 * 60 * 60; - private static int lastSpookyCheck = -ONE_HOUR; +@@ -311,6 +311,7 @@ public class Bat extends AmbientCreature { + } + } + + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur private static boolean isHalloween() { - if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) { LocalDate localdate = LocalDate.now(); + int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f..cb378b343f721c16868a6673aba59856574c7133 100644 +index 919767affe2ede755cf83398436fbf1581ad508f..8515e6360c1630385884a60f652f65fdefeaf540 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -143,11 +143,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -135,11 +135,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -43,10 +43,10 @@ index 3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f..cb378b343f721c16868a6673aba59856 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } 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 e568d014f577ab705645152446156dc04895b3bf..9e373fa5eba63ed061e666510e01a6d8cdd6997b 100644 +index 53f7659aed2378b36f1923a0208c7f86048eb85b..d5a5e51e23328deac09d6990539d8207b1567912 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -586,11 +586,7 @@ public class Zombie extends Monster { +@@ -575,11 +575,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/patches/unapplied-server/0214-Config-for-grindstones.patch b/patches/server/0211-Config-for-grindstones.patch similarity index 66% rename from patches/unapplied-server/0214-Config-for-grindstones.patch rename to patches/server/0211-Config-for-grindstones.patch index 6cb91c2a5..79efc1f17 100644 --- a/patches/unapplied-server/0214-Config-for-grindstones.patch +++ b/patches/server/0211-Config-for-grindstones.patch @@ -5,40 +5,41 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 23462de504932bd351b8dfacde514fe361343912..2a2bcd0fc2b7653d9087b88e9a01034b51f017b9 100644 +index db9444dda248260372d96ce239a590e88a4c1142..f7948de0180836f5bcf6818fe3a1362445a5befe 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { - Enchantment enchantment = (Enchantment) entry.getKey(); - Integer integer = (Integer) entry.getValue(); + Enchantment enchantment = (Enchantment) ((Holder) entry.getKey()).value(); + int k = entry.getIntValue(); - if (!enchantment.isCurse()) { + if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment)) { // Purpur - j += enchantment.getMinCost(integer); + j += enchantment.getMinCost(k); } } -@@ -230,7 +230,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { - Entry entry = (Entry) iterator.next(); - Enchantment enchantment = (Enchantment) entry.getKey(); +@@ -229,7 +229,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { + Entry> entry = (Entry) iterator.next(); + Enchantment enchantment = (Enchantment) ((Holder) entry.getKey()).value(); -- if (!enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { -+ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment) || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { // Purpur - itemstack2.enchant(enchantment, (Integer) entry.getValue()); +- if (!enchantment.isCurse() || itemenchantments_a.getLevel(enchantment) == 0) { ++ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment) || itemenchantments_a.getLevel(enchantment) == 0) { // Purpur + itemenchantments_a.upgrade(enchantment, entry.getIntValue()); + } } - } -@@ -250,7 +250,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { - } - - Map map = (Map) EnchantmentHelper.getEnchantments(item).entrySet().stream().filter((entry) -> { -- return ((Enchantment) entry.getKey()).isCurse(); -+ return org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains((Enchantment) entry.getKey()); // Purpur - }).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); - - EnchantmentHelper.setEnchantments(map, itemstack1); -@@ -266,6 +266,20 @@ public class GrindstoneMenu extends AbstractContainerMenu { - itemstack1.setRepairCost(AnvilMenu.calculateIncreasedRepairCost(itemstack1.getBaseRepairCost())); +@@ -240,7 +240,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { + private ItemStack removeNonCursesFrom(ItemStack item) { + ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments(item, (itemenchantments_a) -> { + itemenchantments_a.removeIf((holder) -> { +- return !((Enchantment) holder.value()).isCurse(); ++ return !org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(holder.value()); + }); + }); + +@@ -255,6 +255,21 @@ public class GrindstoneMenu extends AbstractContainerMenu { } + item.set(DataComponents.REPAIR_COST, i); ++ + // Purpur start + if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes && itemstack1.getTag() != null) { + for (String key : itemstack1.getTag().getAllKeys()) { @@ -53,11 +54,11 @@ index 23462de504932bd351b8dfacde514fe361343912..2a2bcd0fc2b7653d9087b88e9a01034b + } + // Purpur end + - return itemstack1; + return item; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 477639dddb7c5ae0c9cc45a6eca73d82e486409b..7161b449b20b6fb39a16df7a2da652168ccced97 100644 +index 042fd443c98258240042d3ce1650f36e601d72e3..6653162444df443ca990a25fc8b9f3c336841efb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -309,6 +309,9 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0215-UPnP-Port-Forwarding.patch b/patches/server/0212-UPnP-Port-Forwarding.patch similarity index 89% rename from patches/unapplied-server/0215-UPnP-Port-Forwarding.patch rename to patches/server/0212-UPnP-Port-Forwarding.patch index 31bc35e97..86b610183 100644 --- a/patches/unapplied-server/0215-UPnP-Port-Forwarding.patch +++ b/patches/server/0212-UPnP-Port-Forwarding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f694a188c 100644 +index 6d84eb68e3160f772d6832513df2bc4db87b594e..0f4fde2097b9db59b6c29935462f305f34747b3b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop CODEC = simpleCodec(Block::new); -@@ -320,7 +327,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -312,7 +319,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { @@ -63,7 +63,7 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -339,7 +346,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -331,7 +338,7 @@ public class Block extends BlockBehaviour implements ItemLike { event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { @@ -72,7 +72,7 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -356,13 +363,53 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -348,13 +355,53 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { @@ -128,19 +128,19 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a3999cbf9b8 100644 +index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c57962651abf69a 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory; - import net.minecraft.core.BlockPos; +@@ -17,6 +17,8 @@ import net.minecraft.core.component.PatchedDataComponentMap; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; + import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.resources.ResourceLocation; -@@ -73,10 +75,27 @@ public abstract class BlockEntity { +@@ -86,6 +88,14 @@ public abstract class BlockEntity { if (persistentDataTag instanceof CompoundTag) { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } @@ -155,24 +155,28 @@ index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a39 } // CraftBukkit end -- protected void saveAdditional(CompoundTag nbt) {} +@@ -102,6 +112,17 @@ public abstract class BlockEntity { + this.loadAdditional(nbt, registryLookup); + } + ++ // Purpur start + protected void saveAdditional(CompoundTag nbt) { -+ // Purpur start + if (this.persistentDisplayName != null) { + nbt.put("Purpur.persistentDisplayName", StringTag.valueOf(this.persistentDisplayName)); + } + if (this.persistentLore != null) { + nbt.put("Purpur.persistentLore", this.persistentLore); + } -+ // Purpur end + } ++ // Purpur end ++ + protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {} - public final CompoundTag saveWithFullMetadata() { - CompoundTag nbttagcompound = this.saveWithoutMetadata(); -@@ -262,4 +281,24 @@ public abstract class BlockEntity { - return tag; + public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) { +@@ -381,4 +402,24 @@ public abstract class BlockEntity { + + T getOrDefault(DataComponentType type, T fallback); } - // Paper end - Sanitize sent data + // Purpur start + private String persistentDisplayName = null; + private ListTag persistentLore = null; diff --git a/patches/unapplied-server/0220-Signs-allow-color-codes.patch b/patches/server/0217-Signs-allow-color-codes.patch similarity index 84% rename from patches/unapplied-server/0220-Signs-allow-color-codes.patch rename to patches/server/0217-Signs-allow-color-codes.patch index 458a64abf..3c202a537 100644 --- a/patches/unapplied-server/0220-Signs-allow-color-codes.patch +++ b/patches/server/0217-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0ba6ecf578e731a9705a384944aed482f829b58d..c0c9265e8acda3cbf0b4f2c3dca3838265a312d3 100644 +index 670aa56c1b7c9e5fabda45b6a048a6cf6084a7d0..85f58f5449ee63a7f592971769b497e521921fcc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1589,6 +1589,7 @@ public class ServerPlayer extends Player { +@@ -1684,6 +1684,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -17,10 +17,10 @@ index 0ba6ecf578e731a9705a384944aed482f829b58d..c0c9265e8acda3cbf0b4f2c3dca38382 this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbcc4c2415e 100644 +index a28be7a332659be655f419d969e0c64e659b6c21..2f5367fbca7b682eb0ffeab4171b66223f7e5dc6 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -200,16 +200,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -201,16 +201,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C return this.setText((SignText) textChanger.apply(signtext), front); } @@ -46,15 +46,15 @@ index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbc + org.bukkit.entity.Player player = (org.bukkit.craftbukkit.entity.CraftPlayer) entityhuman.getBukkitEntity(); // Purpur if (entityhuman.isTextFilteringEnabled()) { -- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only -+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur +- signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only ++ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur } else { -- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only -+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.raw()), chatmodifier), translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur +- signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only ++ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.raw()), chatmodifier), translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur } } -@@ -349,6 +364,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -350,6 +365,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C return ClientboundBlockEntityDataPacket.create(this); } @@ -81,8 +81,8 @@ index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbc + // Purpur end + @Override - public CompoundTag getUpdateTag() { - return this.saveWithoutMetadata(); + public CompoundTag getUpdateTag(HolderLookup.Provider registryLookup) { + return this.saveCustomOnly(registryLookup); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index b4d5ae4025d315cfe0e19fa1b077d1c5956523ba..d807da2719c5677c200e5f017e4cf5a1c7fa0ce9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 94% rename from patches/unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index 64bbddeef..e0c4575a3 100644 --- a/patches/unapplied-server/0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Kelp, cave, weeping, and twisting vines configurable max diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java -index bdd9f38dcb16b74c5916b75713dbe5082b32497d..65bae6630a11aa1d8d1b08d1f8e2519545ad850c 100644 +index 635fc086d832c641f840cf36d18cdc0fcc3beef3..e3ff7b8059da499cfde1106f6d51156931b292dc 100644 --- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -95,4 +95,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl +@@ -94,4 +94,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { world.setBlock(pos, state.setValue(BERRIES, Boolean.valueOf(true)), 2); } @@ -22,7 +22,7 @@ index bdd9f38dcb16b74c5916b75713dbe5082b32497d..65bae6630a11aa1d8d1b08d1f8e25195 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f76bfc0c62 100644 +index cf05da1c86e3018db11dc079bf50317b6639e5cc..8e9903899ac91e9431f00675c1f5ac4a18e61593 100644 --- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java @@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @@ -34,7 +34,7 @@ index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f7 } @Override - public boolean isRandomlyTicking(BlockState state) { + protected boolean isRandomlyTicking(BlockState state) { - return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25; + return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < getMaxGrowthAge(); // Purpur } @@ -87,11 +87,11 @@ index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f7 + public abstract int getMaxGrowthAge(); // Purpur } diff --git a/src/main/java/net/minecraft/world/level/block/KelpBlock.java b/src/main/java/net/minecraft/world/level/block/KelpBlock.java -index 1b83d44291029ce978187467832595b6dfd76dd5..69f2c6cae089aa7e1306c9dbe83d4ff582ec777c 100644 +index 784b19bc78c8ad9476b6dac37b6778a409a7c675..d49dd8b20d3785cc9482ed2a34fbd7aed4c9e537 100644 --- a/src/main/java/net/minecraft/world/level/block/KelpBlock.java +++ b/src/main/java/net/minecraft/world/level/block/KelpBlock.java @@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta - public FluidState getFluidState(BlockState state) { + protected FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } + @@ -135,7 +135,7 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 43be29d14cd79542358009d7e2cf2d1d56b6fb5d..fe5a35568fdcd24c5020f003f85f3b4d3b4ac631 100644 +index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -312,6 +312,10 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0222-Mobs-always-drop-experience.patch b/patches/server/0219-Mobs-always-drop-experience.patch similarity index 91% rename from patches/unapplied-server/0222-Mobs-always-drop-experience.patch rename to patches/server/0219-Mobs-always-drop-experience.patch index 2f040e2da..78bf08657 100644 --- a/patches/unapplied-server/0222-Mobs-always-drop-experience.patch +++ b/patches/server/0219-Mobs-always-drop-experience.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index d5bcc6e678aec21da855eea805a58a965ef5edee..09181e9a0d4ceac30d20f4ff488a85b0ab5b1d04 100644 +index 70e3d583f7a039a5c67428ce9e8beb1922574c7b..3e2ea26c23e88c395856b65001f2895db6a52bd4 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -51,6 +51,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index d5bcc6e678aec21da855eea805a58a965ef5edee..09181e9a0d4ceac30d20f4ff488a85b0 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 08190c45b0807079b77c41203502e355ecaf2e14..735445456bbfab8a64df488fed30f0be28d50159 100644 +index f7ac3a5b0a7c93240f948394649ad6dba5a1e4b5..274db35be501d1dd0c5407d350a37b04bf4fbb7e 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -285,6 +285,11 @@ public class Bat extends AmbientCreature { +@@ -282,6 +282,11 @@ public class Bat extends AmbientCreature { return this.level().purpurConfig.batTakeDamageFromWater; } @@ -37,10 +37,10 @@ index 08190c45b0807079b77c41203502e355ecaf2e14..735445456bbfab8a64df488fed30f0be public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); 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 8d80055253008bb1b2ed77e91a1c51c995208dac..9fa937d2d6c3b23e390447e4d4fa24543e2679e5 100644 +index 91c013f7ab58f570d0ebe2773932fcdb49344b3c..926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -493,6 +493,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -482,6 +482,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeTakeDamageFromWater; } @@ -53,26 +53,26 @@ index 8d80055253008bb1b2ed77e91a1c51c995208dac..9fa937d2d6c3b23e390447e4d4fa2454 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 d9b19f74b377721ed78cd0ea24d25e412cef1398..6af5e1dfcfd739e0bc857f648c189151d5a795c8 100644 +index 17aaeb734a5c1b16bd7771c909958f3acc956b7a..3e1345f1c534320e07820d573f5c8dba49746425 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -138,6 +138,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -144,6 +144,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -199,6 +199,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxTakeDamageFromWater; } @@ -146,13 +146,13 @@ index 1e04205a1707e46a1f540f5c8f6ec1b81bf1b5d7..445c1993a18da93e89792b7953e5eb71 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 02506902ca7e6f4e4c0fea47499cb8766e33960f..442eb602f5c82550a87e218e2013171b718abd62 100644 +index 8b08476457a6ead1a3c3e2ab35d08a8e0625c43e..12bc57d36d76f49596df0004fda31a6a678be60c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -103,6 +103,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -98,6 +98,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.summoner = summoner; } @@ -165,7 +165,7 @@ index 02506902ca7e6f4e4c0fea47499cb8766e33960f..442eb602f5c82550a87e218e2013171b protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3..48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee 100644 +index 6cb8d85986f4d891dfbb66b83163ed23bac694f6..06fac8dae42451f912c2db14d792461cee3dba83 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -96,6 +96,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -152,6 +152,11 @@ public class Rabbit extends Animal implements VariantHolder { public boolean isSensitiveToWater() { return this.level().purpurConfig.rabbitTakeDamageFromWater; } @@ -309,10 +309,10 @@ index e101c3bf425902908c43ffa18867fb83a5e1f16e..382e47f26ee94506cb76463a677351b9 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index d1a8b15de4f4aa20d6049135bcbef94f0d1fb388..ae2662a5cdc4e531e09876ff8664eaf66a63a960 100644 +index afec39ba3b51b121fd7ae937e7bac060ef430dfd..9e617b3f1ec4eac5f83bdf19a3563cdc81b008d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -151,6 +151,11 @@ public class Sheep extends Animal implements Shearable { +@@ -149,6 +149,11 @@ public class Sheep extends Animal implements Shearable { return this.level().purpurConfig.sheepTakeDamageFromWater; } @@ -325,10 +325,10 @@ index d1a8b15de4f4aa20d6049135bcbef94f0d1fb388..ae2662a5cdc4e531e09876ff8664eaf6 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d..df8e19a3adfa7dcc065160e8305d0f12c7c37887 100644 +index 8f2348a7fe830a85985ce2b19cb2a9159bca711f..69cdccca01fe7d10e6d958e16d91efe08f699505 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -86,6 +86,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -84,6 +84,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.summoner = summoner; } @@ -341,10 +341,10 @@ index 81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d..df8e19a3adfa7dcc065160e8305d0f12 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index daa4931c934c792b3c4ff32b730506762c4cf481..fa15e43d19482125e1793e049d1a1380aced906c 100644 +index 0d05879eadeff8731028d78d89d5d32142818ea2..b86676ebcd6c301e5dd857d8e84e1db2c1da416b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -95,6 +95,11 @@ public class Squid extends WaterAnimal { +@@ -93,6 +93,11 @@ public class Squid extends WaterAnimal { return this.level().purpurConfig.squidTakeDamageFromWater; } @@ -357,10 +357,10 @@ index daa4931c934c792b3c4ff32b730506762c4cf481..fa15e43d19482125e1793e049d1a1380 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 1f83844da76ee6e158f1ba3656ba90d6eff1895c..98205d89aa0cca82863257abfad46ab834385a20 100644 +index 4ac998e9d96aed3b0ea0ec3f9dcd5fdd74c45d24..2d04addd17d2c358fff598012b323cd7d8bf007e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -87,6 +87,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -89,6 +89,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder return this.level().purpurConfig.tropicalFishTakeDamageFromWater; } @@ -373,10 +373,10 @@ index 1f83844da76ee6e158f1ba3656ba90d6eff1895c..98205d89aa0cca82863257abfad46ab8 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 315006bdb344bb52a077c49a96c7712a33fbb0eb..2153dac7c7c83ef3192d2b8370b8924ee67383a8 100644 +index b146ac72584d998cee4279133b3b19051fbf14c9..01dc59695f295657b1cd7bb015558bfc2ce73b47 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -118,6 +118,11 @@ public class Turtle extends Animal { +@@ -119,6 +119,11 @@ public class Turtle extends Animal { return this.level().purpurConfig.turtleTakeDamageFromWater; } @@ -389,10 +389,10 @@ index 315006bdb344bb52a077c49a96c7712a33fbb0eb..2153dac7c7c83ef3192d2b8370b8924e this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 69caba70009268f7af7299f8a1dd84dc43caddf8..a90055fe8819a32180754b6060a0f88e81d1a3b6 100644 +index 5e9678ad46de7faf3136eec49e3b68b14cdfe4a4..ffe2e51cb59f72c878fb63c0c884c572b297f00d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -217,6 +217,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -231,6 +231,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 5b3126168e9406f6cbd0607b6b7cc2de4ab68b65..f7730ec3a6c8818baf2a7a738e5a49a56d17c0e8 100644 +index 412b44ea2d33ef68721b91da9f550738c6c780ba..79c27b5717fec000ea94138ebc76dbabf5b2eeaf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -119,6 +119,11 @@ public class Goat extends Animal { +@@ -118,6 +118,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatTakeDamageFromWater; } @@ -437,7 +437,7 @@ index 5b3126168e9406f6cbd0607b6b7cc2de4ab68b65..f7730ec3a6c8818baf2a7a738e5a49a5 protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83b6cb2fa5 100644 +index 891ea1cca8495c08a1817096c8c4277f5311d6c7..94021abe521aea4a70f5eaa78fb05f9f71b7c38c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse { @@ -453,10 +453,10 @@ index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83 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 8e4c3c01613a8944095a099427eb12ced32987a1..eab6efcae632a393924d7245a71c40b57c6e316d 100644 +index e623284b353831d1a540af40e139ac16091dcbf6..fdf9ec418b0fc567e286ac79dbdbeddac568ad67 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 -@@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -76,6 +76,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return this.level().purpurConfig.horseTakeDamageFromWater; } @@ -469,7 +469,7 @@ index 8e4c3c01613a8944095a099427eb12ced32987a1..eab6efcae632a393924d7245a71c40b5 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 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 100644 +index 12ff4091674f7efb3e324df0df2d798dcbc46027..7d2a5c806fd0f1228c45b8a8b56d7ba13b899a2d 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 @@ -150,6 +150,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a0a578318 100644 +index 76d47ba17dd140572a0be40dfda18c24851198bb..451762b3cd023b8c5828f68e2778aada9c50ab85 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -109,6 +109,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -107,6 +107,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { return this.level().purpurConfig.zoglinTakeDamageFromWater; } @@ -1029,10 +1029,10 @@ index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 9e373fa5eba63ed061e666510e01a6d8cdd6997b..c531d830f4d6b2d2213e160d7e1a5b50b80dbea5 100644 +index d5a5e51e23328deac09d6990539d8207b1567912..d48d22157a89f98c1bbabc70b0bb31187038176d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -147,6 +147,11 @@ public class Zombie extends Monster { +@@ -144,6 +144,11 @@ public class Zombie extends Monster { return this.level().purpurConfig.zombieTakeDamageFromWater; } @@ -1045,10 +1045,10 @@ index 9e373fa5eba63ed061e666510e01a6d8cdd6997b..c531d830f4d6b2d2213e160d7e1a5b50 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index f902814a23ef8a7d3893fc0349d1a0b3c203a123..712f77d4ddad04c7cd89d51c6d0c79c2f3ab9347 100644 +index fe43c744cccdc07d5e449ce3ede85f4c7d898018..091095d1690bdd4d0870910b19e5e4ee3a3f9e7c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -127,6 +127,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { return level().purpurConfig.zombieVillagerJockeyTryExistingChickens; } @@ -1058,13 +1058,13 @@ index f902814a23ef8a7d3893fc0349d1a0b3c203a123..712f77d4ddad04c7cd89d51c6d0c79c2 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + 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 e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a8046297f73 100644 +index bd2953448e568b1a20bcc6a889cef83b88418548..5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -106,6 +106,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -104,6 +104,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens; } @@ -1077,10 +1077,10 @@ index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a80 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8 100644 +index 9ca294d5177ec7d541433d644d2fb90d937b011c..a69a4d860cf537322cdf96bfd42e55d3fc684dd1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -124,6 +124,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -122,6 +122,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinTakeDamageFromWater; } @@ -1093,10 +1093,10 @@ index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72bc595d30b 100644 +index e5b24bd8e31ca5748185181bb6741760c86a92a1..811b622945ecf67cff1992c3cdd4fcd84f33fb68 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -121,6 +121,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento return this.level().purpurConfig.piglinTakeDamageFromWater; } @@ -1109,10 +1109,10 @@ index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72b public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d34631b4c 100644 +index 6c7e0f177382cb6329002dcde270f6ce51f08f9f..71d2501e88a99819ef305fa8715418aad65ec81d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -90,6 +90,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -89,6 +89,11 @@ public class PiglinBrute extends AbstractPiglin { return this.level().purpurConfig.piglinBruteTakeDamageFromWater; } @@ -1125,10 +1125,10 @@ index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa0783d03d5d 100644 +index 1bace0d549ea4a4b45ac4cd1409524989ecac4ca..17a247455dd853ae98e2f82f64a99bccc4d27438 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -196,6 +196,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -194,6 +194,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } @@ -1141,7 +1141,7 @@ index d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa07 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 657fdbabf18da7ab321e8e95a31d53362c605380..21a7cc86245d2440b8fc757d3664a29de293f7b0 100644 +index 0d11200ab580cc306602c29c61f7619565d8261d..62f5e5cfe5745deced2811d14d0c7ebb2c2c6948 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -103,6 +103,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0223-Potion-NamespacedKey.patch b/patches/server/0220-Potion-NamespacedKey.patch similarity index 58% rename from patches/unapplied-server/0223-Potion-NamespacedKey.patch rename to patches/server/0220-Potion-NamespacedKey.patch index b8daf5666..7b8d0b15e 100644 --- a/patches/unapplied-server/0223-Potion-NamespacedKey.patch +++ b/patches/server/0220-Potion-NamespacedKey.patch @@ -5,50 +5,52 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45918b57c2 100644 +index 32cf6ea96aaa2e6bd0cc28fa88492ceea3d34052..9787dd4fc6ca2ed8aba3db7674ad2dc26a529a7a 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -@@ -36,6 +36,7 @@ public class MobEffectInstance implements Comparable { +@@ -53,6 +53,7 @@ public class MobEffectInstance implements Comparable { private boolean showIcon; @Nullable public MobEffectInstance hiddenEffect; + private org.bukkit.NamespacedKey key; // Purpur - add key - private final Optional factorData; + private final MobEffectInstance.BlendState blendState = new MobEffectInstance.BlendState(); - public MobEffectInstance(MobEffect type) { -@@ -54,8 +55,14 @@ public class MobEffectInstance implements Comparable { - this(type, duration, amplifier, ambient, visible, visible); + public MobEffectInstance(Holder effect) { +@@ -71,8 +72,14 @@ public class MobEffectInstance implements Comparable { + this(effect, duration, amplifier, ambient, visible, visible); } + // Purpur start -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { -+ this(type, duration, amplifier, ambient, showParticles, showIcon, null, key, type.createFactorData()); -+ } ++ public MobEffectInstance(Holder effect, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { ++ this(effect, duration, amplifier, ambient, showParticles, showIcon, null, key); + // Purpur end ++ } + - public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { -- this(type, duration, amplifier, ambient, showParticles, showIcon, null, type.createFactorData()); -+ this(type, duration, amplifier, ambient, showParticles, showIcon, null, null, type.createFactorData()); // Purpur + public MobEffectInstance(Holder effect, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { +- this(effect, duration, amplifier, ambient, showParticles, showIcon, null); ++ this(effect, duration, amplifier, ambient, showParticles, showIcon, null, null); // Purpur } public MobEffectInstance( -@@ -66,6 +73,7 @@ public class MobEffectInstance implements Comparable { +@@ -82,7 +89,8 @@ public class MobEffectInstance implements Comparable { + boolean ambient, boolean showParticles, boolean showIcon, - @Nullable MobEffectInstance hiddenEffect, -+ @Nullable org.bukkit.NamespacedKey key, // Purpur - Optional factorCalculationData +- @Nullable MobEffectInstance hiddenEffect ++ @Nullable MobEffectInstance hiddenEffect, ++ @Nullable org.bukkit.NamespacedKey key // Purpur ) { - this.effect = type; -@@ -74,6 +82,7 @@ public class MobEffectInstance implements Comparable { + this.effect = effect; + this.duration = duration; +@@ -90,6 +98,7 @@ public class MobEffectInstance implements Comparable { this.ambient = ambient; this.visible = showParticles; this.showIcon = showIcon; + this.key = key; // Purpur - add key this.hiddenEffect = hiddenEffect; - this.factorData = factorCalculationData; } -@@ -94,6 +103,7 @@ public class MobEffectInstance implements Comparable { + +@@ -135,6 +144,7 @@ public class MobEffectInstance implements Comparable { this.ambient = that.ambient; this.visible = that.visible; this.showIcon = that.showIcon; @@ -56,7 +58,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45 } public boolean update(MobEffectInstance that) { -@@ -138,6 +148,13 @@ public class MobEffectInstance implements Comparable { +@@ -179,6 +189,13 @@ public class MobEffectInstance implements Comparable { bl = true; } @@ -70,7 +72,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45 return bl; } -@@ -181,6 +198,17 @@ public class MobEffectInstance implements Comparable { +@@ -222,6 +239,17 @@ public class MobEffectInstance implements Comparable { return this.showIcon; } @@ -88,7 +90,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45 public boolean tick(LivingEntity entity, Runnable overwriteCallback) { if (this.hasRemainingDuration()) { int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; -@@ -237,6 +265,12 @@ public class MobEffectInstance implements Comparable { +@@ -286,6 +314,12 @@ public class MobEffectInstance implements Comparable { string = string + ", Show Icon: false"; } @@ -101,7 +103,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45 return string; } -@@ -251,6 +285,7 @@ public class MobEffectInstance implements Comparable { +@@ -300,6 +334,7 @@ public class MobEffectInstance implements Comparable { && this.duration == mobEffectInstance.duration && this.amplifier == mobEffectInstance.amplifier && this.ambient == mobEffectInstance.ambient @@ -109,57 +111,22 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45 && this.effect.equals(mobEffectInstance.effect); } -@@ -275,6 +310,11 @@ public class MobEffectInstance implements Comparable { - nbt.putBoolean("ambient", this.isAmbient()); - nbt.putBoolean("show_particles", this.isVisible()); - nbt.putBoolean("show_icon", this.showIcon()); -+ // Purpur start -+ if (this.key != null) { -+ nbt.putString("key", this.key.toString()); -+ } -+ // Purpur end - if (this.hiddenEffect != null) { - CompoundTag compoundTag = new CompoundTag(); - this.hiddenEffect.save(compoundTag); -@@ -311,6 +351,13 @@ public class MobEffectInstance implements Comparable { - bl3 = nbt.getBoolean("show_icon"); - } - -+ // Purpur start -+ org.bukkit.NamespacedKey key = null; -+ if (nbt.contains("key")) { -+ key = org.bukkit.NamespacedKey.fromString(nbt.getString("key")); -+ } -+ // Purpur end -+ - MobEffectInstance mobEffectInstance = null; - if (nbt.contains("hidden_effect", 10)) { - mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect")); -@@ -325,7 +372,7 @@ public class MobEffectInstance implements Comparable { - optional = Optional.empty(); - } - -- return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional); -+ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, key, optional); // Purpur - add key - } - - @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 +index 4a9e6a679530025caa710a152c5249299ceffdf9..ea4f3f606aad69965384c73eb1273ed0644297b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -@@ -45,6 +45,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - static final ItemMetaKey POTION_COLOR = new ItemMetaKey("CustomPotionColor", "custom-color"); - static final ItemMetaKey ID = new ItemMetaKey("id", "potion-id"); - static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("Potion", "potion-type"); +@@ -42,6 +42,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { + static final ItemMetaKey POTION_EFFECTS = new ItemMetaKey("custom-effects"); + static final ItemMetaKey POTION_COLOR = new ItemMetaKey("custom-color"); + static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("potion-type"); + static final ItemMetaKey KEY = new ItemMetaKey("key", "namespacedkey"); // Purpur - add key - // Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type - // is treated as the empty form of the meta because it represents an empty potion with no effect -@@ -97,7 +98,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - boolean ambient = effect.getBoolean(CraftMetaPotion.AMBIENT.NBT); - boolean particles = effect.contains(CraftMetaPotion.SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT) : true; - boolean icon = effect.contains(CraftMetaPotion.SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_ICON.NBT) : particles; + private PotionType type; + private List customEffects; +@@ -91,7 +92,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { + boolean ambient = effect.isAmbient(); + boolean particles = effect.isVisible(); + boolean icon = effect.showIcon(); - this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon)); + // Purpur start + NamespacedKey key = null; @@ -169,21 +136,21 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445 + this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon, key)); + // Purpur end } - } + }); } -@@ -150,6 +157,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - effectData.putBoolean(CraftMetaPotion.AMBIENT.NBT, effect.isAmbient()); - effectData.putBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT, effect.hasParticles()); - effectData.putBoolean(CraftMetaPotion.SHOW_ICON.NBT, effect.hasIcon()); +@@ -130,6 +137,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { + if (this.customEffects != null) { + for (PotionEffect effect : this.customEffects) { + effectList.add(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraftHolder(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon())); + // Purpur start + if (effect.hasKey()) { + effectData.putString(CraftMetaPotion.KEY.NBT, effect.getKey().toString()); + } + // Purpur end - effectList.add(effectData); } } -@@ -225,7 +237,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { + +@@ -196,7 +208,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { if (index != -1) { if (overwrite) { PotionEffect old = this.customEffects.get(index); @@ -193,19 +160,19 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445 } this.customEffects.set(index, effect); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index e938255fcc5db0c289d3e132175a541187e4a748..f7a747ea73a80c97d863e0fd3772a0c333aef3c8 100644 +index 14c58cf8d255c51473fd3d0092faeaf5a3c1ae0c..3ee9c14440046872b83de628b7f460d0782e9315 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -@@ -74,7 +74,7 @@ public class CraftPotionUtil { +@@ -11,7 +11,7 @@ public class CraftPotionUtil { public static MobEffectInstance fromBukkit(PotionEffect effect) { - MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); + Holder type = CraftPotionEffectType.bukkitToMinecraftHolder(effect.getType()); // Paper - Note: do not copy over the hidden effect, as this method is only used for applying to entities which we do not want to convert over. - return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()); // Paper + return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()); // Paper // Purpur - add key } public static PotionEffect toBukkit(MobEffectInstance effect) { -@@ -83,7 +83,7 @@ public class CraftPotionUtil { +@@ -20,7 +20,7 @@ public class CraftPotionUtil { int duration = effect.getDuration(); boolean ambient = effect.isAmbient(); boolean particles = effect.isVisible(); @@ -213,20 +180,20 @@ index e938255fcc5db0c289d3e132175a541187e4a748..f7a747ea73a80c97d863e0fd3772a0c3 + return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.hiddenEffect == null ? null : toBukkit(effect.hiddenEffect), effect.getKey()); // Paper // Purpur - add key } - public static boolean equals(MobEffect mobEffect, PotionEffectType type) { + public static boolean equals(Holder mobEffect, PotionEffectType type) { diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java -index 8963d93e99bdaf719fa160c11dd5af6a1d86f9a4..d852d8b14f5000415cbb4f06601059b3934b7efc 100644 +index cbcd1c21646308b2a9706095e2e12177ca06734d..b3ccaea713e858e334cc91d1ae498e589e3daafa 100644 --- a/src/test/java/org/bukkit/potion/PotionTest.java +++ b/src/test/java/org/bukkit/potion/PotionTest.java -@@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; - import net.minecraft.world.effect.MobEffect; +@@ -10,6 +10,7 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.alchemy.Potion; -+import org.bukkit.NamespacedKey; + import org.bukkit.craftbukkit.legacy.FieldRename; ++import org.bukkit.NamespacedKey; // Purpur import org.bukkit.craftbukkit.potion.CraftPotionEffectType; import org.bukkit.support.AbstractTestingBase; import org.junit.jupiter.api.Test; -@@ -46,4 +47,27 @@ public class PotionTest extends AbstractTestingBase { +@@ -47,4 +48,27 @@ public class PotionTest extends AbstractTestingBase { assertEquals(bukkit, byName, "Same type not returned by name " + key); } } diff --git a/patches/unapplied-server/0224-Grindstone-API.patch b/patches/server/0221-Grindstone-API.patch similarity index 92% rename from patches/unapplied-server/0224-Grindstone-API.patch rename to patches/server/0221-Grindstone-API.patch index 54d59ad04..71aa41021 100644 --- a/patches/unapplied-server/0224-Grindstone-API.patch +++ b/patches/server/0221-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 2a2bcd0fc2b7653d9087b88e9a01034b51f017b9..af99ce32872e079beb6ac1caf3a8ac4c3cae4648 100644 +index f7948de0180836f5bcf6818fe3a1362445a5befe..3756543f05bfe56b0b5333281902fa200dad6951 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -21,7 +21,7 @@ index 2a2bcd0fc2b7653d9087b88e9a01034b51f017b9..af99ce32872e079beb6ac1caf3a8ac4c } world.levelEvent(1042, blockposition, 0); -@@ -341,7 +343,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -331,7 +333,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/patches/unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 92% rename from patches/unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 3d58f8c07..bd6dca784 100644 --- a/patches/unapplied-server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Ability for hoe to replant crops and nether warts diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java -index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff9900072ad36 100644 +index a7b4b5600e3c889c69ac22294899713d50b5fe5c..a27e298ffdfa6956be9cde429d2cd45483a51fed 100644 --- a/src/main/java/net/minecraft/world/level/block/BushBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BushBlock.java @@ -52,4 +52,24 @@ public abstract class BushBlock extends Block { - public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { - return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, world, pos, type); + protected boolean isPathfindable(BlockState state, PathComputationType type) { + return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, type); } + + // Purpur start @@ -34,7 +34,7 @@ index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff990 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 55e28eef76d9d534037d888d85c0609052478118..2077cb5dcf2352c9d5b502744aeb9a66df256939 100644 +index a69e7e8da81bd13578d230cc1e3f0f900817cbfd..5a190834baef60c7b61074393f8856a933902d81 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -54,7 +54,7 @@ index 55e28eef76d9d534037d888d85c0609052478118..2077cb5dcf2352c9d5b502744aeb9a66 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index 0fc333f240d6918e841a9221be42973839408802..464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910 100644 +index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff4a299289 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java @@ -68,4 +68,15 @@ public class NetherWartBlock extends BushBlock { diff --git a/patches/unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch index 2f53c8423..8f7e8aae8 100644 --- a/patches/unapplied-server/0226-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 430ccf1b9f5c6306bbe610d1f9058c1a4bfa2986..b18545e1bd55fa468af6d6c03211036eb9fa146d 100644 +index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d51813a600e67 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -169,7 +169,7 @@ public class TurtleEggBlock extends Block { +@@ -170,7 +170,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level world) { float f = world.getTimeOfDay(1.0F); diff --git a/patches/unapplied-server/0227-Mob-head-visibility-percent.patch b/patches/server/0224-Mob-head-visibility-percent.patch similarity index 97% rename from patches/unapplied-server/0227-Mob-head-visibility-percent.patch rename to patches/server/0224-Mob-head-visibility-percent.patch index 8693603bf..1611faa05 100644 --- a/patches/unapplied-server/0227-Mob-head-visibility-percent.patch +++ b/patches/server/0224-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3a1b8a94642339a96d8f7391714fae1648dc5149..21019c1484a281e6cbcaf1c3e462efa106fee5eb 100644 +index d85407573c47df162cedb8667c2fbc327e75588b..bfb9d3c92950b2600320ba3af409acbf810b5fe7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1049,9 +1049,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); diff --git a/patches/unapplied-server/0228-Configurable-valid-characters-for-usernames.patch b/patches/server/0225-Configurable-valid-characters-for-usernames.patch similarity index 69% rename from patches/unapplied-server/0228-Configurable-valid-characters-for-usernames.patch rename to patches/server/0225-Configurable-valid-characters-for-usernames.patch index 7c293be87..473ae940d 100644 --- a/patches/unapplied-server/0228-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0225-Configurable-valid-characters-for-usernames.patch @@ -4,20 +4,20 @@ Date: Sat, 1 Jan 2022 18:38:58 -0600 Subject: [PATCH] Configurable valid characters for usernames -diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e8000f236d3ec0476ec782f08e159eea6c99476a..4297622fecf2cde16cdcb206ecc3e912b06c0a66 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Player.java -+++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2429,6 +2429,7 @@ public abstract class Player extends LivingEntity { +diff --git a/src/main/java/net/minecraft/util/StringUtil.java b/src/main/java/net/minecraft/util/StringUtil.java +index ae7ef47446c15b8a6878dd2d31b60cd0670eaf83..118841518668c82f0031ec97fd89819a06f72c6b 100644 +--- a/src/main/java/net/minecraft/util/StringUtil.java ++++ b/src/main/java/net/minecraft/util/StringUtil.java +@@ -64,6 +64,7 @@ public class StringUtil { } - public static boolean isValidUsername(String name) { + public static boolean isValidPlayerName(String name) { + if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(name).matches(); // Purpur // Paper start - username validation overriding if (name == null || name.isEmpty() || name.length() > 16) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fe5a35568fdcd24c5020f003f85f3b4d3b4ac631..e24cd4274bfe7d8694a91f74a2f4674befb13bd6 100644 +index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -452,4 +452,11 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0229-Shears-can-have-looting-enchantment.patch b/patches/server/0226-Shears-can-have-looting-enchantment.patch similarity index 67% rename from patches/unapplied-server/0229-Shears-can-have-looting-enchantment.patch rename to patches/server/0226-Shears-can-have-looting-enchantment.patch index b047a28aa..978576f5f 100644 --- a/patches/unapplied-server/0229-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0226-Shears-can-have-looting-enchantment.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index 8d65cdb013706a932c2c73231108b2810b99e1c7..5b1938fc849db743e65cd7eed0f83ba059b9525e 100644 +index a024c697a65bbab27408da1d6a75e531d9719b47..64bbb3da8a75a90d85cdd3ac90a95c670ee032ae 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -@@ -104,7 +104,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { +@@ -105,7 +105,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { if (ishearable.readyForShearing()) { // CraftBukkit start // Paper start - Add drops to shear events @@ -31,19 +31,19 @@ index 2ee48ac3b665db2b02bcb1a30ec972d43a3725b0..59e8f5431ce5026209e1428b5fa5b548 } // Paper end - custom shear drops diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee..21632120b52e4d594153ebe057a14afa74c3f4eb 100644 +index 06fac8dae42451f912c2db14d792461cee3dba83..a7c95199234231db14faa4a07953bcde57d9861d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -161,7 +161,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder drops = this.generateDefaultDrops(); -+ List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur +- java.util.List drops = this.generateDefaultDrops(); ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { -@@ -213,13 +213,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder generateDefaultDrops() { -+ public List generateDefaultDrops(int looting) { // Purpur - List dropEntities = new java.util.ArrayList<>(5); +- public java.util.List generateDefaultDrops() { ++ public java.util.List generateDefaultDrops(int looting) { // Purpur + java.util.List dropEntities = new java.util.ArrayList<>(5); - for (int i = 0; i < 5; ++i) { + for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { // Purpur dropEntities.add(new ItemStack(this.getVariant().getBlockState().getBlock())); } return dropEntities; 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 ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc095259d12e 100644 +index 9e617b3f1ec4eac5f83bdf19a3563cdc81b008d8..6b1244d3957e7f62c96ffd34692b8916337839fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -292,7 +292,7 @@ public class Sheep extends Animal implements Shearable { +@@ -297,7 +297,7 @@ public class Sheep extends Animal implements Shearable { if (!this.level().isClientSide && this.readyForShearing()) { // CraftBukkit start // Paper start - custom shear drops @@ -73,7 +73,7 @@ index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc09 org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { -@@ -319,12 +319,13 @@ public class Sheep extends Animal implements Shearable { +@@ -322,12 +322,13 @@ public class Sheep extends Animal implements Shearable { @Override public void shear(SoundSource shearedSoundCategory) { // Paper start - custom shear drops @@ -90,10 +90,10 @@ index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc09 for (int j = 0; j < count; ++j) { dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607ef65fc25 100644 +index 69cdccca01fe7d10e6d958e16d91efe08f699505..3b74931ae4e3a869d8db38c119e57b44af887859 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -196,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -189,7 +189,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { // CraftBukkit start // Paper start - custom shear drops @@ -102,7 +102,7 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607 org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { -@@ -231,11 +231,20 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -222,11 +222,20 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public void shear(SoundSource shearedSoundCategory) { // Paper start - custom shear drops @@ -125,62 +125,14 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607 return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); } -diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -index cc83aa539f8538fbaed8a3e52d9d9d8901e4793d..4f8d8665cb90b746dc59913ec270839c4e5dba91 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -@@ -120,6 +120,12 @@ public enum EnchantmentCategory { - public boolean canEnchant(Item item) { - return item instanceof BowItem || item instanceof CrossbowItem; - } -+ }, -+ WEAPON_AND_SHEARS { -+ @Override -+ public boolean canEnchant(Item item) { -+ return WEAPON.canEnchant(item) || item instanceof net.minecraft.world.item.ShearsItem; -+ } - // Purpur end - }; - -diff --git a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java -index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f4637955fb14c9 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java -@@ -7,6 +7,14 @@ public class LootBonusEnchantment extends Enchantment { - super(rarity, target, slotTypes); - } - -+ // Purpur start -+ @Override -+ public boolean canEnchant(net.minecraft.world.item.ItemStack stack) { -+ // we have to cheat the system because this class is loaded before purpur's config is loaded -+ return (org.purpurmc.purpur.PurpurConfig.allowShearsLooting && this.category == EnchantmentCategory.WEAPON ? EnchantmentCategory.WEAPON_AND_SHEARS : this.category).canEnchant(stack.getItem()); -+ } -+ // Purpur end -+ - @Override - public int getMinCost(int level) { - return 15 + (level - 1) * 9; -diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index c1be4eb145e1a7e7749d24958bfed5c8268f1131..40d385c7865726545bb66f9a1856ed4e73e60202 100644 ---- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -@@ -72,6 +72,7 @@ public class CraftEnchantment extends Enchantment implements Handleable EnchantmentTarget.CROSSBOW; - case VANISHABLE -> EnchantmentTarget.VANISHABLE; - case BOW_AND_CROSSBOW -> EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur -+ case WEAPON_AND_SHEARS -> EnchantmentTarget.WEAPON_AND_SHEARS; // Purpur - }; - } - diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e24cd4274bfe7d8694a91f74a2f4674befb13bd6..ffff69021335ca52d10a07bb3b3f272eea6ebcb5 100644 +index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -391,6 +391,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; - public static boolean allowCrossbowInfinity = false; + public static boolean allowCrossbowInfinity = true; + public static boolean allowShearsLooting = false; public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; diff --git a/patches/unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch b/patches/server/0227-Stop-bees-from-dying-after-stinging.patch similarity index 92% rename from patches/unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0227-Stop-bees-from-dying-after-stinging.patch index 7a0dc55be..3d0ecb450 100644 --- a/patches/unapplied-server/0230-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0227-Stop-bees-from-dying-after-stinging.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop bees from dying after stinging 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 9fa937d2d6c3b23e390447e4d4fa24543e2679e5..c2dae3636145105ecb3ae950e07095f278f72ac2 100644 +index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c4e997eee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -446,6 +446,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -435,6 +435,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurt(this.damageSources().drown(), 1.0F); } diff --git a/patches/unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 92% rename from patches/unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 6619e6cf9..39d510ede 100644 --- a/patches/unapplied-server/0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ae8025a1c4280cde6b0503e0bcaf468f694a188c..1e017c7c33fd70803312efdd61e090cb8aaf2254 100644 +index 0f4fde2097b9db59b6c29935462f305f34747b3b..5081a631a94920db0307341261755eac399fea1e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1063,6 +1063,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 00a6aa924e47e18ae80b57e9fe1d38e2de15dd72..0c39126ce51439cce05747161aba43bce33a12d8 100644 +index 6b12864f323202a1202a59f66412b3d5be28023f..a208649685bbb33302445b54540e68dfa5212f78 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -110,7 +110,7 @@ public class FarmBlock extends Block { +@@ -111,7 +111,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. diff --git a/patches/unapplied-server/0233-Configurable-player-pickup-exp-delay.patch b/patches/server/0230-Configurable-player-pickup-exp-delay.patch similarity index 92% rename from patches/unapplied-server/0233-Configurable-player-pickup-exp-delay.patch rename to patches/server/0230-Configurable-player-pickup-exp-delay.patch index 86fac4794..a3c42a40f 100644 --- a/patches/unapplied-server/0233-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0230-Configurable-player-pickup-exp-delay.patch @@ -9,10 +9,10 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index c8671996f07f1daafe48448f4a5b837ca2f658c6..373a932b80be18b8a47ef849ce837dbfbba6f9cb 100644 +index 7ca70e9ddda24e2fe661c7b13fa439a6c19726dd..ce608784e0e35b67dde377436aaf42c956ce0644 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -314,7 +314,7 @@ public class ExperienceOrb extends Entity { +@@ -320,7 +320,7 @@ public class ExperienceOrb extends Entity { public void playerTouch(Player player) { if (!this.level().isClientSide) { if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -22,10 +22,10 @@ index c8671996f07f1daafe48448f4a5b837ca2f658c6..373a932b80be18b8a47ef849ce837dbf int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 4297622fecf2cde16cdcb206ecc3e912b06c0a66..43199815ffe3d666577390b96187aa898ceb910e 100644 +index 44ef706008a1477d2073c29f2c9d016bf91e15a6..102da46e66ac3a395af98fdb0013587ec6d7b48f 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -633,7 +633,7 @@ public abstract class Player extends LivingEntity { +@@ -632,7 +632,7 @@ public abstract class Player extends LivingEntity { while (iterator.hasNext()) { Entity entity = (Entity) iterator.next(); diff --git a/patches/unapplied-server/0234-Allow-void-trading.patch b/patches/server/0231-Allow-void-trading.patch similarity index 94% rename from patches/unapplied-server/0234-Allow-void-trading.patch rename to patches/server/0231-Allow-void-trading.patch index 3358bf825..270677cdf 100644 --- a/patches/unapplied-server/0234-Allow-void-trading.patch +++ b/patches/server/0231-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 39a6ff48d820b56728398ac287f9a4db108f3bad..b9ca61e2ec4318c55997840f33fc8eae926fda73 100644 +index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb04f772307 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2920,7 +2920,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2855,7 +2855,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal diff --git a/patches/unapplied-server/0235-Configurable-phantom-size.patch b/patches/server/0232-Configurable-phantom-size.patch similarity index 91% rename from patches/unapplied-server/0235-Configurable-phantom-size.patch rename to patches/server/0232-Configurable-phantom-size.patch index 422923628..5d94dafde 100644 --- a/patches/unapplied-server/0235-Configurable-phantom-size.patch +++ b/patches/server/0232-Configurable-phantom-size.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Configurable phantom size 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 8591fb95aa3079d7722f445ce1b1743c1f02b9bc..44a24707530ca46a6a42e8a4d9049e75f65aa66b 100644 +index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336abb3563d2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -265,7 +265,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override - public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { this.anchorPoint = this.blockPosition().above(5); - this.setPhantomSize(0); + // Purpur start @@ -18,7 +18,7 @@ index 8591fb95aa3079d7722f445ce1b1743c1f02b9bc..44a24707530ca46a6a42e8a4d9049e75 + int max = world.getLevel().purpurConfig.phantomMaxSize; + this.setPhantomSize(min == max ? min : world.getRandom().nextInt(max + 1 - min) + min); + // Purpur end - return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, entityData); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/unapplied-server/0237-Max-joins-per-second.patch b/patches/server/0233-Max-joins-per-second.patch similarity index 90% rename from patches/unapplied-server/0237-Max-joins-per-second.patch rename to patches/server/0233-Max-joins-per-second.patch index f80e8148a..46482bbe9 100644 --- a/patches/unapplied-server/0237-Max-joins-per-second.patch +++ b/patches/server/0233-Max-joins-per-second.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e908560335 100644 +index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf076cf7438 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -570,11 +570,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -607,11 +607,20 @@ public class Connection extends SimpleChannelInboundHandler> { private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world @@ -31,7 +31,7 @@ index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e9 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ce3ab604e6ed6669f38abf83d40b500148277b9d..a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d 100644 +index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -456,8 +456,10 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0238-Configurable-minimum-demand-for-trades.patch b/patches/server/0234-Configurable-minimum-demand-for-trades.patch similarity index 91% rename from patches/unapplied-server/0238-Configurable-minimum-demand-for-trades.patch rename to patches/server/0234-Configurable-minimum-demand-for-trades.patch index d5d59822b..23d1a98f8 100644 --- a/patches/unapplied-server/0238-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0234-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. 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 19a3e88ce5ccdd74b049246eb51eaa0783d03d5d..79184e4721236d4d30f9c516ac0efb56cf06af7d 100644 +index 17a247455dd853ae98e2f82f64a99bccc4d27438..4fa66af33ede3949f4e0236c806e3373f9dea730 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -547,7 +547,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -545,7 +545,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); @@ -22,10 +22,10 @@ index 19a3e88ce5ccdd74b049246eb51eaa0783d03d5d..79184e4721236d4d30f9c516ac0efb56 } diff --git a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java -index 02feea12c998f37098b72becf6bfaf6b27d155de..9c89a85d934955c9388cfe1361f13e70e699d279 100644 +index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef28515eb8 100644 --- a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java +++ b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java -@@ -149,7 +149,12 @@ public class MerchantOffer { +@@ -131,7 +131,12 @@ public class MerchantOffer { } public void updateDemand() { diff --git a/patches/unapplied-server/0239-Lobotomize-stuck-villagers.patch b/patches/server/0235-Lobotomize-stuck-villagers.patch similarity index 91% rename from patches/unapplied-server/0239-Lobotomize-stuck-villagers.patch rename to patches/server/0235-Lobotomize-stuck-villagers.patch index ee9f2fb36..6b9c00960 100644 --- a/patches/unapplied-server/0239-Lobotomize-stuck-villagers.patch +++ b/patches/server/0235-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers 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 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f5e130fc9 100644 +index 4fa66af33ede3949f4e0236c806e3373f9dea730..dd74825c04543ae8c0bb1ab5eef6c8a152b621fd 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -15,9 +15,9 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private int notLobotomizedCount = 0; // Purpur - public long nextGolemPanic = -1; // Pufferfish - -@@ -201,6 +203,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + public Villager(EntityType entityType, Level world) { + this(entityType, world, VillagerType.PLAINS); +@@ -199,6 +201,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -66,7 +66,7 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -298,13 +342,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -295,10 +339,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -74,20 +74,19 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f + protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end this.level().getProfiler().push("villagerBrain"); - // Purpur start ++ // Purpur start + if (this.level().purpurConfig.villagerLobotomizeEnabled) { + // treat as inactive if lobotomized + inactive = inactive || checkLobotomized(); + } else { + this.isLobotomized = false; + } ++ // Purpur end + if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ else if (this.isLobotomized && shouldRestock()) restock(); // Purpur + /*// Purpur start // Purpur - TODO: Pufferfish if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider this.getBrain().tick((ServerLevel) this.level(), this); // Paper -- } -+ } else if (this.isLobotomized && shouldRestock()) restock(); - // Purpur end - this.level().getProfiler().pop(); - if (this.assignProfessionWhenSpawned) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java diff --git a/patches/unapplied-server/0240-Option-for-villager-display-trade-item.patch b/patches/server/0236-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/unapplied-server/0240-Option-for-villager-display-trade-item.patch rename to patches/server/0236-Option-for-villager-display-trade-item.patch diff --git a/patches/unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 92% rename from patches/unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 0b5fcda87..a5a8a6c5c 100644 --- a/patches/unapplied-server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 75884a9e69a28404752c1a2cf854335bb78cac01..1fd69e6ab765236b1a09e2791188d1eb7f12ecbb 100644 +index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a2276f9f16b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -78,6 +78,6 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -72,6 +72,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end - Make water animal spawn height configurable diff --git a/patches/unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch index 6fa467d46..eb993307e 100644 --- a/patches/unapplied-server/0242-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 21019c1484a281e6cbcaf1c3e462efa106fee5eb..839f280eeb18e01712a18b595b1a13abfab6f45b 100644 +index bfb9d3c92950b2600320ba3af409acbf810b5fe7..484eff80394a55088f3cef726a8263e28accd6fe 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1555,13 +1555,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1561,13 +1561,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,10 +25,10 @@ index 21019c1484a281e6cbcaf1c3e462efa106fee5eb..839f280eeb18e01712a18b595b1a13ab if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 210040aa3f810c03cadf38df9d10da336dffaaa1..64c73cc7370c23c9ce68b68476fd0ddb3ca6beca 100644 +index d08f86f2122441d661e7693ad7dcb9854921a767..8d83832ef4bdc452c944101985c4b61cfcef0f08 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -506,7 +506,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -505,7 +505,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; diff --git a/patches/unapplied-server/0243-Anvil-repair-damage-options.patch b/patches/server/0239-Anvil-repair-damage-options.patch similarity index 94% rename from patches/unapplied-server/0243-Anvil-repair-damage-options.patch rename to patches/server/0239-Anvil-repair-damage-options.patch index 1b5dc7e93..e1c39b8fd 100644 --- a/patches/unapplied-server/0243-Anvil-repair-damage-options.patch +++ b/patches/server/0239-Anvil-repair-damage-options.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 18d2ff1baa2db0b97f2565eac006fbc4e81022fa..58d29c89e8e54fac143982c40c9aecc855b6cfd5 100644 +index 923357251ad950ec4f893e8771fcfa99de8a60c5..9273db1b30398b3d170df562dfeff040c2b14a92 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -@@ -62,6 +62,54 @@ public class AnvilBlock extends FallingBlock { +@@ -61,6 +61,54 @@ public class AnvilBlock extends FallingBlock { @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { + // Purpur start - repairable/damageable anvils + if (world.purpurConfig.anvilRepairIngotsAmount > 0) { + net.minecraft.world.item.ItemStack itemstack = player.getItemInHand(hand); diff --git a/patches/unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 5b8fbc7b1..4a6e93a01 100644 --- a/patches/unapplied-server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b18545e1bd55fa468af6d6c03211036eb9fa146d..9a76665c6369b4106d152370dc3d2f5645cb02b1 100644 +index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..c3df410f692219ef166a8b885980b23a2c79950d 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -218,7 +218,13 @@ public class TurtleEggBlock extends Block { +@@ -219,7 +219,13 @@ public class TurtleEggBlock extends Block { if (!(entity instanceof LivingEntity)) { return false; } diff --git a/patches/unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0241-Add-toggle-for-enchant-level-clamping.patch similarity index 65% rename from patches/unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0241-Add-toggle-for-enchant-level-clamping.patch index ab2a68da0..ffd326d92 100644 --- a/patches/unapplied-server/0245-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0241-Add-toggle-for-enchant-level-clamping.patch @@ -5,33 +5,31 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 829d84f48c7149ec1ba0b71b0f43ef19fed99380..f6664447c45b1d6f3371af7bed8b1175b17f25e2 100644 +index 0bc6edf82d77ae88d64bd6ca0a5294c2143f2f5c..53fc44af2b9ceca0abb6c7b287eb08bdd1bf7fdb 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1235,7 +1235,7 @@ public final class ItemStack { +@@ -1220,6 +1220,7 @@ public final class ItemStack implements DataComponentHolder { - ListTag nbttaglist = this.tag.getList("Enchantments", 10); - -- nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (byte) level)); -+ nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? (byte) level : (short) level)); // Purpur - processEnchantOrder(this.tag); // Paper + public void enchant(Enchantment enchantment, int level) { + EnchantmentHelper.updateEnchantments(this, (itemenchantments_a) -> { ++ //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option + itemenchantments_a.upgrade(enchantment, level); + }); } - 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 496c47eb3b13ba620fde1a2bc96f886c5b01e1de..06ca2cd5ae2a25205a37c783753ef7d56e72df94 100644 +index 6d0363cec691996be416ab22ef9d825196399158..96a402b8c5bf083c6120950eacf7970226972b8b 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -47,7 +47,7 @@ public class EnchantmentHelper { +@@ -35,6 +35,7 @@ public class EnchantmentHelper { + + public static int getItemEnchantmentLevel(Enchantment enchantment, ItemStack stack) { + ItemEnchantments itemEnchantments = stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); ++ //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option + return itemEnchantments.getLevel(enchantment); } - public static int getEnchantmentLevel(CompoundTag nbt) { -- return Mth.clamp(nbt.getInt("lvl"), 0, 255); -+ return Mth.clamp(nbt.getInt("lvl"), 0, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? 255 : 32767); // Purpur - } - - @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d..a504f727f5aaa605809938b4e7e7bbe9b84c522a 100644 +index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -398,6 +398,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0242-Skip-junit-tests-for-purpur-commands.patch similarity index 80% rename from patches/unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0242-Skip-junit-tests-for-purpur-commands.patch index bd9cfd575..d8c96ae4a 100644 --- a/patches/unapplied-server/0246-Skip-junit-tests-for-purpur-commands.patch +++ b/patches/server/0242-Skip-junit-tests-for-purpur-commands.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Skip junit tests for purpur commands diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -index afeb4271fffb7546209f1e651214065187c88302..81bc3af856b8af019fd13e1da1f7cccd526b7cf0 100644 +index 2f3ff50bf3f70b6b404d02d5ffcc079162a63bc1..4e57fdf21d4b7789cd7c3d3a18ddc6227bc77792 100644 --- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -@@ -45,6 +45,7 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { - Set foundPerms = new HashSet<>(); - for (CommandNode child : root.getChildren()) { - final String vanillaPerm = VanillaCommandWrapper.getPermission(child); +@@ -48,6 +48,7 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { + if ("bukkit.command.paper.pgive".equals(vanillaPerm)) { // skip our custom give command + continue; + } + if (TO_SKIP.contains(vanillaPerm)) continue; // Purpur if (!perms.contains(vanillaPerm)) { missing.add("Missing permission for " + child.getName() + " (" + vanillaPerm + ") command"); } else { -@@ -57,6 +58,25 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { +@@ -60,6 +61,25 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { } private static final List TO_SKIP = List.of( diff --git a/patches/unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch similarity index 94% rename from patches/unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch index 314a30caf..c96696d3e 100644 --- a/patches/unapplied-server/0247-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 a188a36d919037fa3177ad7f6930570f5e130fc9..ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c 100644 +index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec6eca73e4 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1102,6 +1102,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1095,6 +1095,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { diff --git a/patches/unapplied-server/0248-Stonecutter-damage.patch b/patches/server/0244-Stonecutter-damage.patch similarity index 80% rename from patches/unapplied-server/0248-Stonecutter-damage.patch rename to patches/server/0244-Stonecutter-damage.patch index 6d36c0321..4232be417 100644 --- a/patches/unapplied-server/0248-Stonecutter-damage.patch +++ b/patches/server/0244-Stonecutter-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b359f833064 100644 +index a375d40ec6365ba8704ba3ece22dd5b2de9857b5..357a79d72a2de02a019595e457fe432bf409e516 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -100,6 +100,8 @@ public class CombatTracker { +@@ -101,6 +101,8 @@ public class CombatTracker { // Purpur start if (damageSource.isScissors()) { return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); @@ -18,10 +18,10 @@ index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b35 // Purpur end return damageSource.getLocalizedDeathMessage(this.mob); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86e5054cb9 100644 +index 9c18134cb5474a7f3be2337036c7af253ec0b21e..b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -28,6 +28,7 @@ public class DamageSource { +@@ -29,6 +29,7 @@ public class DamageSource { private boolean melting = false; private boolean poison = false; private boolean scissors = false; // Purpur @@ -29,7 +29,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86 @Nullable private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API -@@ -67,6 +68,15 @@ public class DamageSource { +@@ -68,6 +69,15 @@ public class DamageSource { public boolean isScissors() { return this.scissors; } @@ -45,7 +45,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86 // Purpur end // Paper start - fix DamageSource API -@@ -113,6 +123,7 @@ public class DamageSource { +@@ -114,6 +124,7 @@ public class DamageSource { damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); damageSource.scissors = this.isScissors(); // Purpur @@ -54,7 +54,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3cf987349 100644 +index b3d7790fa3e873f2e9b8fa4e4e749ef9c06973b9..e8c0cec909deea5cd9a031856d9d249f85d5e5f7 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -45,12 +45,14 @@ public class DamageSources { @@ -83,11 +83,11 @@ index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3 public DamageSource inFire() { diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6af6987aa8 100644 +index c6ecb378d0cb2ac05b8f22f92fb85df060038f77..b0199a8ffb1ea4cafeadedb8b833063db177b3cd 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -@@ -99,4 +99,14 @@ public class StonecutterBlock extends Block { - public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { +@@ -98,4 +98,14 @@ public class StonecutterBlock extends Block { + protected boolean isPathfindable(BlockState state, PathComputationType type) { return false; } + @@ -102,32 +102,23 @@ index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6a + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index b7f9793900d365f91d6e30dd22881a30e4250ac8..a0527e9f9c84353d2f4e56bf2f5341fd99daad94 100644 +index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f67a6731f 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -475,7 +475,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - return BlockPathTypes.BLOCKED; - } else { - // Paper end - Do not load chunks during pathfinding -- if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) { -+ if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur - return BlockPathTypes.DANGER_OTHER; - } - -@@ -509,7 +509,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - return BlockPathTypes.TRAPDOOR; +@@ -491,7 +491,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { + return PathType.TRAPDOOR; } else if (blockState.is(Blocks.POWDER_SNOW)) { - return BlockPathTypes.POWDER_SNOW; + return PathType.POWDER_SNOW; - } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) { + } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur - return BlockPathTypes.DAMAGE_OTHER; + return PathType.DAMAGE_OTHER; } else if (blockState.is(Blocks.HONEY_BLOCK)) { - return BlockPathTypes.STICKY_HONEY; + return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0b913fe09 100644 +index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138facb06f76f9 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1133,7 +1133,7 @@ public class CraftEventFactory { +@@ -1130,7 +1130,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; @@ -137,7 +128,7 @@ index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0 } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a504f727f5aaa605809938b4e7e7bbe9b84c522a..9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2 100644 +index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch similarity index 96% rename from patches/unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch index 7b733c49e..12d624dac 100644 --- a/patches/unapplied-server/0249-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -index 746c211b575ca588deadbbcd5c55b614e8660ba8..2f38bac9efc224084505e802546623260830b6d4 100644 +index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30febc744f179 100644 --- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java @@ -29,7 +29,7 @@ public class MagmaBlock extends Block { diff --git a/patches/unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch b/patches/server/0246-Add-config-for-snow-on-blue-ice.patch similarity index 91% rename from patches/unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0246-Add-config-for-snow-on-blue-ice.patch index 7847c74cd..9c19930b3 100644 --- a/patches/unapplied-server/0250-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0246-Add-config-for-snow-on-blue-ice.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Add config for snow on blue ice diff --git a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java -index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db91aaaee22 100644 +index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e115c69458 100644 --- a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java @@ -88,6 +88,12 @@ public class SnowLayerBlock extends Block { - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { + protected boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { BlockState iblockdata1 = world.getBlockState(pos.below()); + // Purpur start From c96e71fbabfb55914328350895994da70ffece71 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 02:12:36 -0700 Subject: [PATCH 104/148] all patches applied \o/ --- .../0247-Skeletons-eat-wither-roses.patch} | 2 +- ...48-Enchantment-Table-Persists-Lapis.patch} | 72 +-- .../0249-Spark-Profiler.patch} | 4 +- ...-disable-kick-for-out-of-order-chat.patch} | 6 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- .../0252-Config-to-not-let-coral-die.patch} | 4 +- .../0253-Add-local-difficulty-api.patch} | 4 +- ...254-Add-toggle-for-RNG-manipulation.patch} | 8 +- .../0255-Send-client-custom-name-of-BE.patch} | 6 +- .../0256-Remove-Timings.patch} | 162 +++--- .../0257-Remove-Mojang-Profiler.patch} | 466 +++++++++--------- ...r-output-for-invalid-movement-kicks.patch} | 6 +- .../0259-Add-Bee-API.patch} | 8 +- .../0260-Debug-Marker-API.patch} | 10 +- ...g-option-to-ignore-creative-players.patch} | 4 +- ...62-Add-skeleton-bow-accuracy-option.patch} | 4 +- .../0263-Allay-respect-item-NBT.patch} | 4 +- .../0264-Add-death-screen-API.patch} | 4 +- ...5-Implement-ram-and-rambar-commands.patch} | 22 +- ...Configurable-block-blast-resistance.patch} | 12 +- ...gurable-block-fall-damage-modifiers.patch} | 12 +- .../0268-Language-API.patch} | 4 +- .../0269-Milk-Keeps-Beneficial-Effects.patch} | 6 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 .../0273-Fire-Immunity-API.patch} | 18 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- .../0275-Added-got-ram-event.patch} | 4 +- .../0276-Log-skipped-entity-s-position.patch} | 4 +- .../0277-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 8 +- ...ute-clamping-and-armor-limit-config.patch} | 24 +- ...ig-to-remove-explosion-radius-clamp.patch} | 6 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 8 +- .../0282-Add-PreExplodeEvents.patch} | 6 +- ...3-Improve-output-of-plugins-command.patch} | 0 .../0284-Add-mending-multiplier.patch} | 4 +- .../0285-Make-GUI-Great-Again.patch} | 14 +- .../0286-Shears-can-defuse-TNT.patch} | 4 +- .../0287-Explorer-Map-API.patch} | 24 +- ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 4 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 8 +- ...ways-showing-item-in-player-death-m.patch} | 20 +- ...0291-place-end-crystal-on-any-block.patch} | 4 +- .../0292-Add-hover-lines-API.patch} | 4 +- ...able-the-copper-oxidation-proximity.patch} | 0 ...4-register-minecraft-debug-commands.patch} | 14 +- ...Configurable-villager-search-radius.patch} | 0 49 files changed, 492 insertions(+), 528 deletions(-) rename patches/{unapplied-server/0251-Skeletons-eat-wither-roses.patch => server/0247-Skeletons-eat-wither-roses.patch} (98%) rename patches/{unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch => server/0248-Enchantment-Table-Persists-Lapis.patch} (60%) rename patches/{unapplied-server/0253-Spark-Profiler.patch => server/0249-Spark-Profiler.patch} (97%) rename patches/{unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch => server/0250-Option-to-disable-kick-for-out-of-order-chat.patch} (87%) rename patches/{unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch => server/0251-Config-for-sculk-shrieker-can_summon-state.patch} (92%) rename patches/{unapplied-server/0256-Config-to-not-let-coral-die.patch => server/0252-Config-to-not-let-coral-die.patch} (92%) rename patches/{unapplied-server/0257-Add-local-difficulty-api.patch => server/0253-Add-local-difficulty-api.patch} (86%) rename patches/{unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch => server/0254-Add-toggle-for-RNG-manipulation.patch} (89%) rename patches/{unapplied-server/0259-Send-client-custom-name-of-BE.patch => server/0255-Send-client-custom-name-of-BE.patch} (84%) rename patches/{unapplied-server/0260-Remove-Timings.patch => server/0256-Remove-Timings.patch} (89%) rename patches/{unapplied-server/0261-Remove-Mojang-Profiler.patch => server/0257-Remove-Mojang-Profiler.patch} (83%) rename patches/{unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch => server/0258-Add-more-logger-output-for-invalid-movement-kicks.patch} (91%) rename patches/{unapplied-server/0263-Add-Bee-API.patch => server/0259-Add-Bee-API.patch} (89%) rename patches/{unapplied-server/0264-Debug-Marker-API.patch => server/0260-Debug-Marker-API.patch} (94%) rename patches/{unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch => server/0261-mob-spawning-option-to-ignore-creative-players.patch} (94%) rename patches/{unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch => server/0262-Add-skeleton-bow-accuracy-option.patch} (95%) rename patches/{unapplied-server/0267-Allay-respect-item-NBT.patch => server/0263-Allay-respect-item-NBT.patch} (94%) rename patches/{unapplied-server/0268-Add-death-screen-API.patch => server/0264-Add-death-screen-API.patch} (87%) rename patches/{unapplied-server/0270-Implement-ram-and-rambar-commands.patch => server/0265-Implement-ram-and-rambar-commands.patch} (96%) rename patches/{unapplied-server/0273-Configurable-block-blast-resistance.patch => server/0266-Configurable-block-blast-resistance.patch} (78%) rename patches/{unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch => server/0267-Configurable-block-fall-damage-modifiers.patch} (93%) rename patches/{unapplied-server/0275-Language-API.patch => server/0268-Language-API.patch} (88%) rename patches/{unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch => server/0269-Milk-Keeps-Beneficial-Effects.patch} (94%) rename patches/{unapplied-server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => server/0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/{unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch => server/0271-Add-log-suppression-for-LibraryLoader.patch} (94%) rename patches/{unapplied-server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch => server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/{unapplied-server/0280-Fire-Immunity-API.patch => server/0273-Fire-Immunity-API.patch} (79%) rename patches/{unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/{unapplied-server/0282-Added-got-ram-event.patch => server/0275-Added-got-ram-event.patch} (86%) rename patches/{unapplied-server/0283-Log-skipped-entity-s-position.patch => server/0276-Log-skipped-entity-s-position.patch} (86%) rename patches/{unapplied-server/0284-End-Crystal-Cramming.patch => server/0277-End-Crystal-Cramming.patch} (96%) rename patches/{unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (91%) rename patches/{unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch => server/0279-Add-attribute-clamping-and-armor-limit-config.patch} (76%) rename patches/{unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch => server/0280-Config-to-remove-explosion-radius-clamp.patch} (91%) rename patches/{unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch => server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch} (94%) rename patches/{unapplied-server/0289-Add-PreExplodeEvents.patch => server/0282-Add-PreExplodeEvents.patch} (86%) rename patches/{unapplied-server/0290-Improve-output-of-plugins-command.patch => server/0283-Improve-output-of-plugins-command.patch} (100%) rename patches/{unapplied-server/0291-Add-mending-multiplier.patch => server/0284-Add-mending-multiplier.patch} (93%) rename patches/{unapplied-server/0292-Make-GUI-Great-Again.patch => server/0285-Make-GUI-Great-Again.patch} (96%) rename patches/{unapplied-server/0294-Shears-can-defuse-TNT.patch => server/0286-Shears-can-defuse-TNT.patch} (95%) rename patches/{unapplied-server/0295-Explorer-Map-API.patch => server/0287-Explorer-Map-API.patch} (66%) rename patches/{unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch => server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch} (93%) rename patches/{unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (86%) rename patches/{unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch => server/0290-Add-option-for-always-showing-item-in-player-death-m.patch} (64%) rename patches/{unapplied-server/0299-place-end-crystal-on-any-block.patch => server/0291-place-end-crystal-on-any-block.patch} (93%) rename patches/{unapplied-server/0300-Add-hover-lines-API.patch => server/0292-Add-hover-lines-API.patch} (88%) rename patches/{unapplied-server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch => server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/{unapplied-server/0302-register-minecraft-debug-commands.patch => server/0294-register-minecraft-debug-commands.patch} (85%) rename patches/{unapplied-server/0303-Configurable-villager-search-radius.patch => server/0295-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/unapplied-server/0251-Skeletons-eat-wither-roses.patch b/patches/server/0247-Skeletons-eat-wither-roses.patch similarity index 98% rename from patches/unapplied-server/0251-Skeletons-eat-wither-roses.patch rename to patches/server/0247-Skeletons-eat-wither-roses.patch index 06d088a7b..f751cc545 100644 --- a/patches/unapplied-server/0251-Skeletons-eat-wither-roses.patch +++ b/patches/server/0247-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 2064d6177b3e43810d5962102fe914296e2627ff..30ff77f5f137614b5d0d2df6dc90f47c97e8ab13 100644 +index 1aae461eed332fe31c1449c47d0928f655c740da..9eb6ed001bfc578311300977dda6f3f156d07190 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; diff --git a/patches/unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch similarity index 60% rename from patches/unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0248-Enchantment-Table-Persists-Lapis.patch index 506dc5fc1..a796d25b3 100644 --- a/patches/unapplied-server/0252-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b38115209 100644 +index 5b3e33807e0e13480e3359c0cf067719e5749237..8a7cb30524c75d155c27571e32da6511e265cbf4 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -40,6 +40,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; +@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.entity.Player; // CraftBukkit end @@ -21,7 +21,7 @@ index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b public class EnchantmentMenu extends AbstractContainerMenu { static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = new ResourceLocation("item/empty_slot_lapis_lazuli"); -@@ -74,6 +80,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -72,6 +78,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return context.getLocation(); } // CraftBukkit end @@ -44,7 +44,7 @@ index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b }; this.random = RandomSource.create(); this.enchantmentSeed = DataSlot.standalone(); -@@ -99,6 +121,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -97,6 +119,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { } }); @@ -62,7 +62,7 @@ index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b int j; for (j = 0; j < 3; ++j) { -@@ -351,6 +384,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -332,6 +365,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { @@ -70,69 +70,37 @@ index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b this.clearContainer(player, this.enchantSlots); }); } -diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index af3a8d5f4d80b22d67092bb0c2af5da31b2e3bce..7d5233a96dfa9fca2255e8e44b02179313087ef6 100644 ---- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -@@ -30,6 +30,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; - import net.minecraft.world.phys.BlockHitResult; - import net.minecraft.world.phys.shapes.CollisionContext; - import net.minecraft.world.phys.shapes.VoxelShape; -+import net.minecraft.world.Containers; // Purpur -+import net.minecraft.world.item.Items; // Purpur - - public class EnchantmentTableBlock extends BaseEntityBlock { - public static final MapCodec CODEC = simpleCodec(EnchantmentTableBlock::new); -@@ -137,4 +139,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { - public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { - return false; - } -+ -+ // Purpur start -+ @Override -+ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean moved) { -+ BlockEntity blockEntity = level.getBlockEntity(pos); -+ -+ if (level.purpurConfig.enchantmentTableLapisPersists && blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { -+ Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis())); -+ level.updateNeighbourForOutputSignal(pos, this); -+ } -+ -+ super.onRemove(state, level, pos, newState, moved); -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java -index a912a1ccd3816a9c398946a8724bd3c882f4e9c3..af936b9a2daff9974c2f6ca3c8f5541db94cb40d 100644 ---- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java -+++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java -@@ -24,6 +24,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable - public float tRot; +diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb9280831c0d0fb 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +@@ -28,6 +28,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable private static final RandomSource RANDOM = RandomSource.create(); + @Nullable private Component name; + private int lapis = 0; // Purpur - public EnchantmentTableBlockEntity(BlockPos pos, BlockState state) { + public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -35,6 +36,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable +@@ -39,6 +40,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable if (this.hasCustomName()) { - nbt.putString("CustomName", Component.Serializer.toJson(this.name)); + nbt.putString("CustomName", Component.Serializer.toJson(this.name, registryLookup)); } + nbt.putInt("Purpur.Lapis", this.lapis); // Purpur } @Override -@@ -43,6 +45,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable +@@ -47,6 +49,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable if (nbt.contains("CustomName", 8)) { - this.name = io.papermc.paper.util.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException + this.name = io.papermc.paper.util.MCUtil.getBaseComponentFromNbt("CustomName", nbt, registryLookup); // Paper - Catch ParseException } + this.lapis = nbt.getInt("Purpur.Lapis"); // Purpur } - public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantmentTableBlockEntity blockEntity) { -@@ -117,4 +120,14 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable - public Component getCustomName() { - return this.name; + public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantingTableBlockEntity blockEntity) { +@@ -138,4 +141,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable + public void removeComponentsFromTag(CompoundTag nbt) { + nbt.remove("CustomName"); } + + // Purpur start diff --git a/patches/unapplied-server/0253-Spark-Profiler.patch b/patches/server/0249-Spark-Profiler.patch similarity index 97% rename from patches/unapplied-server/0253-Spark-Profiler.patch rename to patches/server/0249-Spark-Profiler.patch index a6de0555e..8ec8899bb 100644 --- a/patches/unapplied-server/0253-Spark-Profiler.patch +++ b/patches/server/0249-Spark-Profiler.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Spark Profiler Co-authored-by: granny diff --git a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -index 708e5bb9bbf0476fcc2c4b92c6830b094703b43e..6141f716b15ad47ac2ac4c9ce92a3897b3ad8807 100644 +index bb1cfa8ea8b11fc36ea72c8e382b8554bccd0ce5..a1af6a07a5fcd280993ad9dae139f3343200692f 100644 --- a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java +++ b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -@@ -104,6 +104,7 @@ public class PluginInitializerManager { +@@ -109,6 +109,7 @@ public class PluginInitializerManager { @SuppressWarnings("unchecked") java.util.List files = ((java.util.List) optionSet.valuesOf("add-plugin")).stream().map(File::toPath).toList(); io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, files); diff --git a/patches/unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 87% rename from patches/unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch index 9d3f78cc2..52d21411d 100644 --- a/patches/unapplied-server/0254-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1cefa3b6bdd62ae7bf30da872012fc150905f5ae..db42bf7c5604f32b9b06accb4bbc004ed264a3c2 100644 +index 7c96644ee70ea061a5eb29809c2c5cc1bf55e194..530421935473693681819073e1ce9a52cb275775 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1696,7 +1696,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { @@ -18,7 +18,7 @@ index 1cefa3b6bdd62ae7bf30da872012fc150905f5ae..db42bf7c5604f32b9b06accb4bbc004e voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2..b55a4366f69a1f259d5d7aed01764aec14a1dbb2 100644 +index 07d6455c781b8743a833cbc04576015433686c4b..d038e62a0151e3b5c9dee06f1b2682684d0b496e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -461,9 +461,11 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch index 6436c671a..c1bcf0d56 100644 --- a/patches/unapplied-server/0255-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for sculk shrieker can_summon state diff --git a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java -index 09c61eb5ba129e9630a756b452ef6aa61745c533..837c8399b2f490d98ca556e66018bfd471cf05bf 100644 +index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5aee778cce4 100644 --- a/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -137,7 +137,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo +@@ -134,7 +134,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { diff --git a/patches/unapplied-server/0256-Config-to-not-let-coral-die.patch b/patches/server/0252-Config-to-not-let-coral-die.patch similarity index 92% rename from patches/unapplied-server/0256-Config-to-not-let-coral-die.patch rename to patches/server/0252-Config-to-not-let-coral-die.patch index f57e87cf2..47b3baeb5 100644 --- a/patches/unapplied-server/0256-Config-to-not-let-coral-die.patch +++ b/patches/server/0252-Config-to-not-let-coral-die.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to not let coral die diff --git a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index ffcb4849d83e0f02adbb106f4543bb4898678267..700108e84cf3836a0542c5e04856a9fe254794e9 100644 +index ce9f189bdafec26360bfadd0f36a8bc2726e132b..d5465b48531fd4b4094874c135274abf985ee71a 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java @@ -38,6 +38,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat @@ -17,7 +17,7 @@ index ffcb4849d83e0f02adbb106f4543bb4898678267..700108e84cf3836a0542c5e04856a9fe return true; } else { diff --git a/src/main/java/net/minecraft/world/level/block/CoralBlock.java b/src/main/java/net/minecraft/world/level/block/CoralBlock.java -index 8fd8285e07de4a0457da507501e49a807542f3b1..e580c5a141bebdc45893b5abde01e633c864fc13 100644 +index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b3741927543f 100644 --- a/src/main/java/net/minecraft/world/level/block/CoralBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CoralBlock.java @@ -59,6 +59,7 @@ public class CoralBlock extends Block { diff --git a/patches/unapplied-server/0257-Add-local-difficulty-api.patch b/patches/server/0253-Add-local-difficulty-api.patch similarity index 86% rename from patches/unapplied-server/0257-Add-local-difficulty-api.patch rename to patches/server/0253-Add-local-difficulty-api.patch index d33da05e7..512458afe 100644 --- a/patches/unapplied-server/0257-Add-local-difficulty-api.patch +++ b/patches/server/0253-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 00357d78182b3ff87e3d9a45705b072af56739c8..06abe25b335606b42ac2a7b5551f0c9e7143a474 100644 +index f2b20ed5063a293f0b464548f590d652170cd1d8..b7a02ae4eda06cab8ffd1220259a061558981dec 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2416,6 +2416,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2424,6 +2424,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch b/patches/server/0254-Add-toggle-for-RNG-manipulation.patch similarity index 89% rename from patches/unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0254-Add-toggle-for-RNG-manipulation.patch index 0fd9e65a7..ea5530bb4 100644 --- a/patches/unapplied-server/0258-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0254-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2cac12d2b788b0962b719a83b43dc23177b76ac6..ec6187bc3f445acb86e69161ab1b82248b6e99e0 100644 +index 2d1fc8734f440c284710c71abc6789e8185ec909..68e8f9913055219486ce19d95dcf9d7c76e08082 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -597,7 +597,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -597,7 +597,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -20,10 +20,10 @@ index 2cac12d2b788b0962b719a83b43dc23177b76ac6..ec6187bc3f445acb86e69161ab1b8224 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); 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 fa15e43d19482125e1793e049d1a1380aced906c..38d1eb5680281b2812f2396677ffb959a6e089ce 100644 +index b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233d73ab22e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -44,7 +44,7 @@ public class Squid extends WaterAnimal { +@@ -42,7 +42,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); diff --git a/patches/unapplied-server/0259-Send-client-custom-name-of-BE.patch b/patches/server/0255-Send-client-custom-name-of-BE.patch similarity index 84% rename from patches/unapplied-server/0259-Send-client-custom-name-of-BE.patch rename to patches/server/0255-Send-client-custom-name-of-BE.patch index a54970c0e..964e26215 100644 --- a/patches/unapplied-server/0259-Send-client-custom-name-of-BE.patch +++ b/patches/server/0255-Send-client-custom-name-of-BE.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Send client custom name of BE diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 8e1afae66742fc69d5aab1074ba94a3999cbf9b8..e9701ed4e5b35ace1accd2b46f082191d8ab6497 100644 +index 4ea15e17a1393864422edb6d5c57962651abf69a..a78ed43288cfefaeb2592ed0a33fd11565dea2b2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -205,10 +205,24 @@ public abstract class BlockEntity { +@@ -256,10 +256,24 @@ public abstract class BlockEntity { @Nullable public Packet getUpdatePacket() { @@ -22,7 +22,7 @@ index 8e1afae66742fc69d5aab1074ba94a3999cbf9b8..e9701ed4e5b35ace1accd2b46f082191 return null; } - public CompoundTag getUpdateTag() { + public CompoundTag getUpdateTag(HolderLookup.Provider registryLookup) { + // Purpur start + if (this instanceof net.minecraft.world.Nameable nameable && nameable.hasCustomName()) { + CompoundTag nbt = this.saveWithoutMetadata(); diff --git a/patches/unapplied-server/0260-Remove-Timings.patch b/patches/server/0256-Remove-Timings.patch similarity index 89% rename from patches/unapplied-server/0260-Remove-Timings.patch rename to patches/server/0256-Remove-Timings.patch index d63b5a6c6..f947838cd 100644 --- a/patches/unapplied-server/0260-Remove-Timings.patch +++ b/patches/server/0256-Remove-Timings.patch @@ -21,7 +21,7 @@ index 6bc7c6f16a1649fc9e24e7cf90fca401e5bd4875..e1ffd62f4ebceecb9bc5471df3da406c private static final ThreadLocal> CURRENT_TICKET_UPDATE_SCHEDULING = new ThreadLocal<>(); diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java -index b66a7d4aab887309579154815a0d4abf9de506b0..e6f56bc5b129699bab60db9c97c7f73b6ede2351 100644 +index 56b07a3306e5735816c8d89601b519cb0db6379a..604de7aed6db44c9c84d541765e57da48883cf00 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java @@ -1779,7 +1779,7 @@ public final class NewChunkHolder { @@ -43,10 +43,10 @@ index b66a7d4aab887309579154815a0d4abf9de506b0..e6f56bc5b129699bab60db9c97c7f73b return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI ? new SaveStat(executedUnloadTask || canSaveChunk, canSaveEntities, canSavePOI): null; } diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index 83302c252f54481f239522e5c6861ccfe233070a..620edb63cacd15e38f7fc859efd4095bfb5e5f72 100644 +index 57e76b53e5e314c3e6b8856010f7a84188121582..8c134a642ccaf3530022f2e675a858d726e1dda4 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -@@ -50,7 +50,7 @@ public class PacketUtils { +@@ -51,7 +51,7 @@ public class PacketUtils { if (listener instanceof ServerCommonPacketListenerImpl serverCommonPacketListener && serverCommonPacketListener.processedDisconnect) return; // CraftBukkit - Don't handle sync packets for kicked players if (listener.shouldHandleMessage(packet)) { co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings @@ -54,12 +54,12 @@ index 83302c252f54481f239522e5c6861ccfe233070a..620edb63cacd15e38f7fc859efd4095b + try { // Paper - timings // Purpur packet.handle(listener); } catch (Exception exception) { - label25: + if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 71fca0aae67c632198625cbec4381afeff7771be..0b1f9a51aaf97c3fb8a68bb7141ff76430d3b1a5 100644 +index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1439,7 +1439,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index 71fca0aae67c632198625cbec4381afeff7771be..0b1f9a51aaf97c3fb8a68bb7141ff764 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1694,21 +1694,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -297,7 +297,7 @@ index 1081e9df44bb24b2c51ebd9364c21c7b2a3a205a..3fbc1e7e401331790d590dcd513a0a26 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1198,17 +1198,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1214,17 +1214,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -319,10 +319,10 @@ index 1081e9df44bb24b2c51ebd9364c21c7b2a3a205a..3fbc1e7e401331790d590dcd513a0a26 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d4415a7671a 100644 +index b99f50604bafecbc68835974c9ed0caa91911a40..07b428ed7837642254b1edd55fd08a7beac7e303 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -281,10 +281,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -274,10 +274,10 @@ public class ServerChunkCache extends ChunkSource { if (!completablefuture.isDone()) { // Paper io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.pushChunkWait(this.level, x1, z1); // Paper - rewrite chunk system com.destroystokyo.paper.io.SyncLoadFinder.logSyncLoad(this.level, x, z); // Paper - Add debug for sync chunk loads @@ -333,9 +333,9 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 - this.level.timings.syncChunkLoad.stopTiming(); // Paper + //this.level.timings.syncChunkLoad.stopTiming(); // Paper // Purpur } // Paper - ichunkaccess = (ChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> { - return ichunkaccess1; -@@ -433,17 +433,17 @@ public class ServerChunkCache extends ChunkSource { + ChunkResult chunkresult = (ChunkResult) completablefuture.join(); + ChunkAccess ichunkaccess1 = (ChunkAccess) chunkresult.orElse(null); // CraftBukkit - decompile error +@@ -425,17 +425,17 @@ public class ServerChunkCache extends ChunkSource { public void save(boolean flush) { this.runDistanceManagerUpdates(); @@ -357,13 +357,16 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 } // Paper end - Incremental chunk and player saving -@@ -480,23 +480,23 @@ public class ServerChunkCache extends ChunkSource { +@@ -472,26 +472,25 @@ public class ServerChunkCache extends ChunkSource { @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); - this.level.timings.doChunkMap.startTiming(); // Spigot + //this.level.timings.doChunkMap.startTiming(); // Spigot // Purpur - this.distanceManager.purgeStaleTickets(); + if (this.level.tickRateManager().runsNormally() || !tickChunks) { + this.distanceManager.purgeStaleTickets(); + } +- this.runDistanceManagerUpdates(); - this.level.timings.doChunkMap.stopTiming(); // Spigot + //this.level.timings.doChunkMap.stopTiming(); // Spigot // Purpur @@ -387,7 +390,7 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 this.level.getProfiler().pop(); this.clearCache(); } -@@ -512,14 +512,14 @@ public class ServerChunkCache extends ChunkSource { +@@ -507,13 +506,13 @@ public class ServerChunkCache extends ChunkSource { gameprofilerfiller.push("pollingChunks"); gameprofilerfiller.push("filteringLoadedChunks"); // Paper - optimise chunk tick iteration @@ -396,24 +399,23 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 // Paper - optimise chunk tick iteration - this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random - if (this.level.getServer().tickRateManager().runsNormally()) { + if (this.level.tickRateManager().runsNormally()) { gameprofilerfiller.popPush("naturalSpawnCount"); - this.level.timings.countNaturalMobs.startTiming(); // Paper - timings + //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns int naturalSpawnChunkCount = k; -@@ -549,7 +549,7 @@ public class ServerChunkCache extends ChunkSource { - // Pufferfish end +@@ -538,7 +537,7 @@ public class ServerChunkCache extends ChunkSource { + spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end - Optional per player mob spawns - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings + // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("spawnAndTick"); -@@ -658,19 +658,19 @@ public class ServerChunkCache extends ChunkSource { +@@ -647,19 +646,19 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -437,7 +439,7 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -684,7 +684,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -673,7 +672,7 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -447,10 +449,10 @@ index 1cf8c819c0d7776c3b33d6594ca81abe3c2a719d..bbc3153379d7da8b4d91c49a3ba83d44 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a09bba649a 100644 +index ae2b9732b2795ea7faec96af4c27ccb04f772307..a84a9218838fb42c49a00c0d5f28e9e486fc7dac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -866,7 +866,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -872,7 +872,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("tickPending"); @@ -459,7 +461,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -875,24 +875,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -881,24 +881,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks gameprofilerfiller.pop(); } @@ -491,7 +493,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 } this.handlingTick = false; -@@ -905,7 +905,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -911,7 +911,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -500,16 +502,16 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -913,7 +913,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -919,7 +919,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot - this.timings.entityTick.startTiming(); // Spigot + //this.timings.entityTick.startTiming(); // Spigot // Purpur this.entityTickList.forEach((entity) -> { - entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -954,8 +954,8 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed +@@ -946,8 +946,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -520,7 +522,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -1099,7 +1099,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1089,7 +1089,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper - Option to disable ice and snow gameprofilerfiller.popPush("tickBlocks"); @@ -529,7 +531,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 if (randomTickSpeed > 0) { // Paper start - optimize random block ticking LevelChunkSection[] sections = chunk.getSections(); -@@ -1133,7 +1133,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1123,7 +1123,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking @@ -538,7 +540,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 gameprofilerfiller.pop(); } -@@ -1477,8 +1477,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1467,8 +1467,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -549,7 +551,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1494,7 +1494,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1484,7 +1484,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -558,7 +560,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1517,8 +1517,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1507,8 +1507,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -569,7 +571,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1548,7 +1548,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1538,7 +1538,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -578,7 +580,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 } } else { passenger.stopRiding(); -@@ -1568,14 +1568,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1558,14 +1558,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -596,7 +598,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1587,7 +1587,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1577,7 +1577,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -605,7 +607,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 } // Paper end - Incremental chunk and player saving -@@ -1601,7 +1601,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1591,7 +1591,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -614,7 +616,7 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1611,11 +1611,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1601,11 +1601,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -630,10 +632,10 @@ index 8caa45d3bdf1a7b576427f6e3ae976bbfcb911f6..0d9ac7d3248686780b7482afab3059a0 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 716377ce3236c9ae012b9bbcf432251ca06a9342..fdbdaa1d8d5760c5c661cbeca803e8ff8ec46aac 100644 +index 530421935473693681819073e1ce9a52cb275775..5ae8b009e5ba2fc896e7f52b864aecafe4e892d4 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2456,7 +2456,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2509,7 +2509,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -642,7 +644,7 @@ index 716377ce3236c9ae012b9bbcf432251ca06a9342..fdbdaa1d8d5760c5c661cbeca803e8ff if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2466,7 +2466,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2519,7 +2519,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -651,7 +653,7 @@ index 716377ce3236c9ae012b9bbcf432251ca06a9342..fdbdaa1d8d5760c5c661cbeca803e8ff return; } -@@ -2479,7 +2479,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2532,7 +2532,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -661,10 +663,10 @@ index 716377ce3236c9ae012b9bbcf432251ca06a9342..fdbdaa1d8d5760c5c661cbeca803e8ff } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d..ac1e0c66f167218306504db6037cc1d6509072a0 100644 +index d20a7a79e27db1092ff78910df5d45982971cc3e..b863f6fe65c796a1d3102cc3eddb5d6c5becd3ac 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1274,7 +1274,7 @@ public abstract class PlayerList { +@@ -1273,7 +1273,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -673,7 +675,7 @@ index 1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d..ac1e0c66f167218306504db6037cc1d6 int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1285,7 +1285,7 @@ public abstract class PlayerList { +@@ -1284,7 +1284,7 @@ public abstract class PlayerList { } // Paper end - Incremental chunk and player saving } @@ -683,7 +685,7 @@ index 1b8b0bafce3352bd65d570ac7cb4ea3acdfe991d..ac1e0c66f167218306504db6037cc1d6 } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -index 03092417cd8ab5c6d266f3af9f20f47b34cfaba3..8f7d9f8a5138bcd572691d66c814aaa7c308b317 100644 +index 9379dd4056018b52c93ed4888dcdc94579bd9691..612a14806ec63b0dcf31814396282f4b7f4a527c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java @@ -59,9 +59,9 @@ public abstract class Behavior implements BehaviorContro @@ -715,7 +717,7 @@ index 03092417cd8ab5c6d266f3af9f20f47b34cfaba3..8f7d9f8a5138bcd572691d66c814aaa7 protected void tick(ServerLevel world, E entity, long time) { diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index 9e90cb2f51d1bacacb287e912d14ab9152523205..e553f52de2e0b30511ac1b73cb436374017cd7d7 100644 +index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2e7ae1578 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java @@ -53,10 +53,10 @@ public abstract class Sensor { @@ -732,10 +734,10 @@ index 9e90cb2f51d1bacacb287e912d14ab9152523205..e553f52de2e0b30511ac1b73cb436374 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9e896ede9f84568b5675e04294bb9b6a8d016324..ea9b33eb48d8610943d122811cc49d211bc22d86 100644 +index edd9762e2475aa8828930ada59eb331a8e8d3970..4d00d72d66adfb282d354e22703552b333138694 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1317,15 +1317,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1306,15 +1306,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -754,7 +756,7 @@ index 9e896ede9f84568b5675e04294bb9b6a8d016324..ea9b33eb48d8610943d122811cc49d21 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1354,7 +1354,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1343,7 +1343,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -764,10 +766,10 @@ index 9e896ede9f84568b5675e04294bb9b6a8d016324..ea9b33eb48d8610943d122811cc49d21 co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 661acdf4b1f33d150b0caf179e925d3162d7be35..78eb2d8ba58f2937c1145147e2d9e7de802e541e 100644 +index ed8032495af9ce9c23419224814b8d27e4a97c17..2812505185df691e8f08932aa0bba162a7d9db86 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -133,7 +133,7 @@ public final class NaturalSpawner { +@@ -128,7 +128,7 @@ public final class NaturalSpawner { public static void spawnForChunk(ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnState info, boolean spawnAnimals, boolean spawnMonsters, boolean rareSpawn) { world.getProfiler().push("spawner"); @@ -776,7 +778,7 @@ index 661acdf4b1f33d150b0caf179e925d3162d7be35..78eb2d8ba58f2937c1145147e2d9e7de MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES; int i = aenumcreaturetype.length; -@@ -186,7 +186,7 @@ public final class NaturalSpawner { +@@ -181,7 +181,7 @@ public final class NaturalSpawner { } } @@ -786,10 +788,10 @@ index 661acdf4b1f33d150b0caf179e925d3162d7be35..78eb2d8ba58f2937c1145147e2d9e7de } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index d087c8271dbdfe3dc6d805539a710d37ed6d7f21..8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3 100644 +index 2a8609e33716949ff1877b6d10f64a9d7a7c81e9..e8d14bf4120dd9861e4ccb8bd6c14e175343c55d 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -799,7 +799,7 @@ public class LevelChunk extends ChunkAccess { +@@ -785,7 +785,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -798,7 +800,7 @@ index d087c8271dbdfe3dc6d805539a710d37ed6d7f21..8b1f5d290efbebe5fb6fc90b6031356e this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -819,7 +819,7 @@ public class LevelChunk extends ChunkAccess { +@@ -805,7 +805,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -807,7 +809,7 @@ index d087c8271dbdfe3dc6d805539a710d37ed6d7f21..8b1f5d290efbebe5fb6fc90b6031356e } } } -@@ -1177,7 +1177,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1161,7 +1161,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -816,7 +818,7 @@ index d087c8271dbdfe3dc6d805539a710d37ed6d7f21..8b1f5d290efbebe5fb6fc90b6031356e BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1204,7 +1204,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1188,7 +1188,7 @@ public class LevelChunk extends ChunkAccess { // Paper end - Prevent block entity and entity crashes // Spigot start } finally { @@ -903,10 +905,10 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index c63b7d5b442f2be5dadd529a2f4f65302e44e792..56e52b16b419c882440a15947f037ae1a902bc70 100644 +index a8fc07e06039e1418e020f7c1ad2cd36b9b94eb4..de2b469f06f6679aed1d20156052bfbef5e7c30b 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -172,7 +172,7 @@ public class ActivationRange +@@ -168,7 +168,7 @@ public class ActivationRange */ public static void activateEntities(Level world) { @@ -915,7 +917,7 @@ index c63b7d5b442f2be5dadd529a2f4f65302e44e792..56e52b16b419c882440a15947f037ae1 final int miscActivationRange = world.spigotConfig.miscActivationRange; final int raiderActivationRange = world.spigotConfig.raiderActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -251,7 +251,7 @@ public class ActivationRange +@@ -228,7 +228,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/unapplied-server/0261-Remove-Mojang-Profiler.patch b/patches/server/0257-Remove-Mojang-Profiler.patch similarity index 83% rename from patches/unapplied-server/0261-Remove-Mojang-Profiler.patch rename to patches/server/0257-Remove-Mojang-Profiler.patch index 3f5796f0f..03afccdd0 100644 --- a/patches/unapplied-server/0261-Remove-Mojang-Profiler.patch +++ b/patches/server/0257-Remove-Mojang-Profiler.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Mojang Profiler diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6198527fd 100644 +index 67ec90a2a05269a5912b3c8e64d6d4162a8c6ca2..d3c42c19a051fb3a670e541fc746b55717192a91 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -165,7 +165,7 @@ public class Commands { +@@ -166,7 +166,7 @@ public class Commands { DamageCommand.register(this.dispatcher, commandRegistryAccess); DataCommands.register(this.dispatcher); DataPackCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6 DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -332,9 +332,9 @@ public class Commands { +@@ -333,9 +333,9 @@ public class Commands { public void performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); @@ -29,7 +29,7 @@ index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6 ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - Add UnknownCommandEvent try { -@@ -363,7 +363,7 @@ public class Commands { +@@ -364,7 +364,7 @@ public class Commands { Commands.LOGGER.error("'/{}' threw an exception", s, exception); } } finally { @@ -83,10 +83,10 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0b1f9a51aaf97c3fb8a68bb7141ff76430d3b1a5..4611116f3328c0f8d5b37c8765feca36b2448ffe 100644 +index f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572..dfeae138e830e95ab823b6349a91160b02622208 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -341,13 +341,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1582,7 +1582,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - this.profiler.push(() -> { + /*this.profiler.push(() -> { // Purpur - return worldserver + " " + worldserver.dimension().location(); + String s = String.valueOf(worldserver); + + return s + " " + String.valueOf(worldserver.dimension().location()); - }); + });*/ // Purpur /* Drop global time updates @@ -238,7 +242,7 @@ index 0b1f9a51aaf97c3fb8a68bb7141ff76430d3b1a5..4611116f3328c0f8d5b37c8765feca36 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1769,17 +1769,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2738,40 +2738,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + /*gameprofilerfiller.push(() -> { // Purpur - return "function " + function.id(); + return "function " + String.valueOf(function.id()); - }); + });*/ // Purpur try { - InstantiatedFunction instantiatedfunction = function.instantiate((CompoundTag) null, this.getDispatcher(), source); + InstantiatedFunction instantiatedfunction = function.instantiate((CompoundTag) null, this.getDispatcher()); @@ -86,7 +86,7 @@ public class ServerFunctionManager { } catch (Exception exception) { ServerFunctionManager.LOGGER.warn("Failed to execute function {}", function.id(), exception); @@ -442,10 +445,10 @@ index df0c15f6b5b2224d53e4f8fad42b9a1e5f33dc25..92aa26881818fec92d0663e2ccf50716 } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 3fbc1e7e401331790d590dcd513a0a267b5ea181..bb412ca874b85d777c0e3565fcefcee15b23182b 100644 +index bbe4580f7fc7cb6c8eb7055c82e2af7ad2ccd59d..4e6fccec4f5ca14562bf5bae495ac36c14982d85 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -538,20 +538,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -541,20 +541,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -471,10 +474,10 @@ index 3fbc1e7e401331790d590dcd513a0a267b5ea181..bb412ca874b85d777c0e3565fcefcee1 public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f36005536e 100644 +index 07b428ed7837642254b1edd55fd08a7beac7e303..476a04d87a61b021816d2970e86042bde32d95a2 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -264,16 +264,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -259,14 +259,14 @@ public class ServerChunkCache extends ChunkSource { return ifLoaded; } // Paper end - Perf: Optimise getChunkAt calls for loaded chunks @@ -485,16 +488,14 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 + //gameprofilerfiller.incrementCounter("getChunk"); // Purpur long k = ChunkPos.asLong(x, z); - ChunkAccess ichunkaccess; - // Paper - rewrite chunk system - there are no correct callbacks to remove items from cache in the new chunk system - gameprofilerfiller.incrementCounter("getChunkCacheMiss"); + //gameprofilerfiller.incrementCounter("getChunkCacheMiss"); // Purpur - CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper + CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create); ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; -@@ -467,24 +467,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -459,26 +459,26 @@ public class ServerChunkCache extends ChunkSource { // CraftBukkit start - modelled on below public void purgeUnload() { if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system @@ -516,7 +517,9 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 - this.level.getProfiler().push("purge"); + //this.level.getProfiler().push("purge"); // Purpur //this.level.timings.doChunkMap.startTiming(); // Spigot // Purpur - this.distanceManager.purgeStaleTickets(); + if (this.level.tickRateManager().runsNormally() || !tickChunks) { + this.distanceManager.purgeStaleTickets(); + } this.runDistanceManagerUpdates(); //this.level.timings.doChunkMap.stopTiming(); // Spigot // Purpur - this.level.getProfiler().popPush("chunks"); @@ -524,7 +527,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes -@@ -494,10 +494,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -488,10 +488,10 @@ public class ServerChunkCache extends ChunkSource { } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -537,7 +540,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 this.clearCache(); } -@@ -507,10 +507,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -501,17 +501,17 @@ public class ServerChunkCache extends ChunkSource { this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { @@ -551,25 +554,24 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 // Paper - optimise chunk tick iteration //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur -@@ -518,7 +518,7 @@ public class ServerChunkCache extends ChunkSource { + // Paper - optimise chunk tick iteration - this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random - if (this.level.getServer().tickRateManager().runsNormally()) { + if (this.level.tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); + //gameprofilerfiller.popPush("naturalSpawnCount"); // Purpur //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns -@@ -552,7 +552,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -540,7 +540,7 @@ public class ServerChunkCache extends ChunkSource { // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + this.lastSpawnState = spawnercreature_d; - gameprofilerfiller.popPush("spawnAndTick"); + //gameprofilerfiller.popPush("spawnAndTick"); // Purpur boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit // Paper start - optimise chunk tick iteration -@@ -660,7 +660,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -648,7 +648,7 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration // this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -578,7 +580,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 if (flag) { //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -668,7 +668,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -656,7 +656,7 @@ public class ServerChunkCache extends ChunkSource { } } @@ -587,7 +589,7 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 // Paper - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur // Paper start - optimise chunk tick iteration -@@ -686,8 +686,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -674,8 +674,8 @@ public class ServerChunkCache extends ChunkSource { // Paper end - optimise chunk tick iteration //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur // Paper - optimise chunk tick iteration @@ -596,9 +598,9 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 + //gameprofilerfiller.pop(); // Purpur + //gameprofilerfiller.pop(); // Purpur } - - // Pufferfish start - optimize mob spawning -@@ -893,7 +893,7 @@ public class ServerChunkCache extends ChunkSource { + } + +@@ -847,7 +847,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -608,10 +610,10 @@ index bbc3153379d7da8b4d91c49a3ba83d4415a7671a..7b3ba500f465b999ce11964b0e4e30f3 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7954f1b26 100644 +index a84a9218838fb42c49a00c0d5f28e9e486fc7dac..f72af2feb74626abbdfbfd090c15357457810240 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -824,16 +824,16 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -830,16 +830,16 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void tick(BooleanSupplier shouldKeepTicking) { @@ -631,7 +633,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 this.advanceWeatherCycle(); } -@@ -865,30 +865,30 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -871,30 +871,30 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickTime(); } @@ -669,7 +671,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 if (flag) { // this.timings.doSounds.startTiming(); // Spigot // Purpur this.runBlockEvents(); -@@ -896,7 +896,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -902,7 +902,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } this.handlingTick = false; @@ -678,7 +680,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this if (flag1) { -@@ -904,12 +904,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -910,12 +910,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag1 || this.emptyTime++ < 300) { @@ -694,7 +696,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -920,9 +920,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -925,9 +925,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -706,19 +708,13 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -934,7 +934,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -939,22 +939,21 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } - gameprofilerfiller.push("tick"); + //gameprofilerfiller.push("tick"); // Purpur - // Pufferfish start - copied from this.guardEntityTick - try { - this.tickNonPassenger(entity); // Pufferfish - changed -@@ -949,20 +949,19 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - } - // Pufferfish end + this.guardEntityTick(this::tickNonPassenger, entity); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -739,7 +735,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 } @Override -@@ -1044,9 +1043,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1034,9 +1033,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -750,8 +746,8 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 + //gameprofilerfiller.push("thunder"); // Purpur final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - Option to disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -1085,7 +1084,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder +@@ -1075,7 +1074,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -760,7 +756,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1098,7 +1097,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1088,7 +1087,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper - Option to disable ice and snow @@ -769,7 +765,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { // Paper start - optimize random block ticking -@@ -1134,7 +1133,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1124,7 +1123,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -778,7 +774,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 } @VisibleForTesting -@@ -1481,19 +1480,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1471,19 +1470,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -803,7 +799,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1522,12 +1521,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1512,12 +1511,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -820,7 +816,7 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1539,7 +1538,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1529,7 +1528,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -830,10 +826,10 @@ index 0d9ac7d3248686780b7482afab3059a09bba649a..00ac2902be93327c7dd1bf78ee5922d7 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c0c9265e8acda3cbf0b4f2c3dca3838265a312d3..d78c2348160795fcc9ff23b448e7d3c48f34c272 100644 +index 85f58f5449ee63a7f592971769b497e521921fcc..054a8aff30181d1a568ad931eb150fc2992cac97 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1240,7 +1240,7 @@ public class ServerPlayer extends Player { +@@ -1318,7 +1318,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -842,7 +838,7 @@ index c0c9265e8acda3cbf0b4f2c3dca3838265a312d3..d78c2348160795fcc9ff23b448e7d3c4 worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1263,8 +1263,8 @@ public class ServerPlayer extends Player { +@@ -1341,8 +1341,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -853,7 +849,7 @@ index c0c9265e8acda3cbf0b4f2c3dca3838265a312d3..d78c2348160795fcc9ff23b448e7d3c4 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1282,7 +1282,7 @@ public class ServerPlayer extends Player { +@@ -1360,7 +1360,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -863,10 +859,10 @@ index c0c9265e8acda3cbf0b4f2c3dca3838265a312d3..d78c2348160795fcc9ff23b448e7d3c4 this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 6d9dea1dbd47df98ea44881deb6b7493edbdbd5d..02e65b0bd212d46855baee48fab35dc95a88b43f 100644 +index 3a15085e0421f46800f779066d235ef21b463289..8368c5ff929df9d32cdb95cc2da0e9f7f3b85d2a 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -222,7 +222,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -265,7 +265,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } protected void keepConnectionAlive() { @@ -875,7 +871,7 @@ index 6d9dea1dbd47df98ea44881deb6b7493edbdbd5d..02e65b0bd212d46855baee48fab35dc9 // Paper start - give clients a longer time to respond to pings as per pre 1.12.2 timings // This should effectively place the keepalive handling back to "as it was" before 1.12.2 long currentTime = Util.getMillis(); -@@ -258,7 +258,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -298,7 +298,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } // Paper end - give clients a longer time to respond to pings as per pre 1.12.2 timings @@ -883,7 +879,7 @@ index 6d9dea1dbd47df98ea44881deb6b7493edbdbd5d..02e65b0bd212d46855baee48fab35dc9 + //this.server.getProfiler().pop(); // Purpur } - public void suspendFlushing() { + private boolean checkIfClosed(long time) { diff --git a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java index f14113eef226e906c0d21641e74a27471254909d..0c25f3ed0a8a538edc7cadd3476100c9b3631f7a 100644 --- a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java @@ -1089,19 +1085,19 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2b7b546d0 100644 +index 68e8f9913055219486ce19d95dcf9d7c76e08082..2c3ad553272ad651e6ca26917719e6d9fffdef68 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -897,7 +897,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public void baseTick() { - this.level().getProfiler().push("entityBaseTick"); + //this.level().getProfiler().push("entityBaseTick"); // Purpur if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups - this.feetBlockState = null; + this.inBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -922,7 +922,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -958,7 +958,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } this.firstTick = false; @@ -1110,7 +1106,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1141,7 +1141,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1175,7 +1175,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1119,7 +1115,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1150,7 +1150,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1184,7 +1184,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1128,7 +1124,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 return; } // Paper end -@@ -1171,8 +1171,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1205,8 +1205,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1139,7 +1135,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1191,7 +1191,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1225,7 +1225,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1148,7 +1144,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1329,7 +1329,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1363,7 +1363,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1157,7 +1153,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 } } // Paper start - detailed watchdog information -@@ -3205,7 +3205,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3258,7 +3258,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1166,7 +1162,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 this.portalTime = i; // Paper start - Add EntityPortalReadyEvent io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3223,7 +3223,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3276,7 +3276,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } // Paper - Add EntityPortalReadyEvent // CraftBukkit end @@ -1175,7 +1171,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 } this.isInsidePortal = false; -@@ -3697,14 +3697,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3736,14 +3736,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Paper end - Fix item duplication and teleport issues if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1192,7 +1188,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3743,7 +3743,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3782,7 +3782,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.unRide(); // CraftBukkit end @@ -1201,7 +1197,7 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 // Paper start - Fix item duplication and teleport issues if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3770,10 +3770,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3809,10 +3809,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } this.removeAfterChangingDimensions(); @@ -1215,10 +1211,10 @@ index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcbb3ebce06 100644 +index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06d0a38bce 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1227,7 +1223,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -526,7 +526,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1236,7 +1232,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb } public boolean canSpawnSoulSpeedParticle() { -@@ -3187,10 +3187,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3226,10 +3226,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1250,7 +1246,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3202,7 +3202,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3241,7 +3241,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1259,7 +1255,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3497,19 +3497,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3464,19 +3464,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1284,7 +1280,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3536,8 +3536,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3503,8 +3503,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1295,7 +1291,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3564,8 +3564,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3529,8 +3529,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1306,7 +1302,7 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3582,15 +3582,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3547,15 +3547,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1326,10 +1322,10 @@ index 839f280eeb18e01712a18b595b1a13abfab6f45b..e64d2425f6b5cec9a72bcbf451284fcb // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4182a146dcad83d141cd5bacdbfc39d912360c40..dd275ece5887f5215cb785564af27152b29b370e 100644 +index ee98efa69d67cd22eb5722cf68f3b7063e2595c8..56da8a4600688efd1987d82d4fcad1757e33f4f2 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -368,13 +368,13 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -376,13 +376,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti @Override public void baseTick() { super.baseTick(); @@ -1345,7 +1341,7 @@ index 4182a146dcad83d141cd5bacdbfc39d912360c40..dd275ece5887f5215cb785564af27152 incrementTicksSinceLastInteraction(); // Purpur } -@@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -747,7 +747,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti @Override public void aiStep() { super.aiStep(); @@ -1354,7 +1350,7 @@ index 4182a146dcad83d141cd5bacdbfc39d912360c40..dd275ece5887f5215cb785564af27152 if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -725,7 +725,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -767,7 +767,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti } } @@ -1363,78 +1359,77 @@ index 4182a146dcad83d141cd5bacdbfc39d912360c40..dd275ece5887f5215cb785564af27152 } protected Vec3i getPickupReach() { -@@ -937,46 +937,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -992,44 +992,44 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti return; } // Paper end - Allow nerfed mobs to jump and float -- this.level().getProfiler().push("sensing"); -+ //this.level().getProfiler().push("sensing"); // Purpur +- ProfilerFiller gameprofilerfiller = this.level().getProfiler(); ++ //ProfilerFiller gameprofilerfiller = this.level().getProfiler(); // Purpur + +- gameprofilerfiller.push("sensing"); ++ //gameprofilerfiller.push("sensing"); // Purpur this.sensing.tick(); -- this.level().getProfiler().pop(); -+ //this.level().getProfiler().pop(); // Purpur - int i = this.level().getServer().getTickCount() + this.getId(); +- gameprofilerfiller.pop(); ++ //gameprofilerfiller.pop(); // Purpur + int i = this.tickCount + this.getId(); if (i % 2 != 0 && this.tickCount > 1) { -- this.level().getProfiler().push("targetSelector"); -+ //this.level().getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking +- gameprofilerfiller.push("targetSelector"); ++ //gameprofilerfiller.push("targetSelector"); // Purpur this.targetSelector.tickRunningGoals(false); -- this.level().getProfiler().pop(); -- this.level().getProfiler().push("goalSelector"); -+ //this.level().getProfiler().pop(); // Purpur -+ //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking +- gameprofilerfiller.pop(); +- gameprofilerfiller.push("goalSelector"); ++ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.push("goalSelector"); // Purpur this.goalSelector.tickRunningGoals(false); -- this.level().getProfiler().pop(); -+ //this.level().getProfiler().pop(); // Purpur +- gameprofilerfiller.pop(); ++ //gameprofilerfiller.pop(); // Purpur } else { -- this.level().getProfiler().push("targetSelector"); -+ //this.level().getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking +- gameprofilerfiller.push("targetSelector"); ++ //gameprofilerfiller.push("targetSelector"); // Purpur this.targetSelector.tick(); -- this.level().getProfiler().pop(); -- this.level().getProfiler().push("goalSelector"); -+ //this.level().getProfiler().pop(); // Purpur -+ //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking +- gameprofilerfiller.pop(); +- gameprofilerfiller.push("goalSelector"); ++ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.push("goalSelector"); // Purpur this.goalSelector.tick(); -- this.level().getProfiler().pop(); -+ //this.level().getProfiler().pop(); // Purpur +- gameprofilerfiller.pop(); ++ //gameprofilerfiller.pop(); // Purpur } -- this.level().getProfiler().push("navigation"); -+ //this.level().getProfiler().push("navigation"); // Purpur +- gameprofilerfiller.push("navigation"); ++ //gameprofilerfiller.push("navigation"); // Purpur this.navigation.tick(); -- this.level().getProfiler().pop(); -- this.level().getProfiler().push("mob tick"); -+ //this.level().getProfiler().pop(); // Purpur -+ //this.level().getProfiler().push("mob tick"); // Purpur +- gameprofilerfiller.pop(); +- gameprofilerfiller.push("mob tick"); ++ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.push("mob tick"); // Purpur this.customServerAiStep(); -- this.level().getProfiler().pop(); -- this.level().getProfiler().push("controls"); -- this.level().getProfiler().push("move"); -+ //this.level().getProfiler().pop(); // Purpur -+ //this.level().getProfiler().push("controls"); // Purpur -+ //this.level().getProfiler().push("move"); // Purpur +- gameprofilerfiller.pop(); +- gameprofilerfiller.push("controls"); +- gameprofilerfiller.push("move"); ++ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.push("controls"); // Purpur ++ //gameprofilerfiller.push("move"); // Purpur this.moveControl.tick(); -- this.level().getProfiler().popPush("look"); -+ //this.level().getProfiler().popPush("look"); // Purpur +- gameprofilerfiller.popPush("look"); ++ //gameprofilerfiller.popPush("look"); // Purpur this.lookControl.tick(); -- this.level().getProfiler().popPush("jump"); -+ //this.level().getProfiler().popPush("jump"); // Purpur +- gameprofilerfiller.popPush("jump"); ++ //gameprofilerfiller.popPush("jump"); // Purpur this.jumpControl.tick(); -- this.level().getProfiler().pop(); -- this.level().getProfiler().pop(); -+ //this.level().getProfiler().pop(); // Purpur -+ //this.level().getProfiler().pop(); // Purpur +- gameprofilerfiller.pop(); +- gameprofilerfiller.pop(); ++ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.pop(); // Purpur this.sendDebugPackets(); } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578fec9b10da 100644 +index 74d4f653d5c7f1923c59019effd78337402f7025..b4e4670536f6dcea109c029d75d9710cb386f1d0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -104,8 +104,8 @@ public class GoalSelector { +@@ -87,8 +87,8 @@ public class GoalSelector { } public void tick() { @@ -1445,10 +1440,10 @@ index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578f for (WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { // Paper - Perf: optimize goal types by removing streams -@@ -122,8 +122,8 @@ public class GoalSelector { - } +@@ -97,8 +97,8 @@ public class GoalSelector { } + this.lockedFlags.entrySet().removeIf(entry -> !entry.getValue().isRunning()); - profilerFiller.pop(); - profilerFiller.push("goalUpdate"); + //profilerFiller.pop(); // Purpur @@ -1456,7 +1451,7 @@ index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578f for (WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -143,13 +143,13 @@ public class GoalSelector { +@@ -118,13 +118,13 @@ public class GoalSelector { } } @@ -1473,7 +1468,7 @@ index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578f for (WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -157,7 +157,7 @@ public class GoalSelector { +@@ -132,7 +132,7 @@ public class GoalSelector { } } @@ -1483,7 +1478,7 @@ index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578f public Set getAvailableGoals() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index e3a7eaf31ab19cc9f23a0c87649b74bb42976cb4..e12cf130678bda7c1f5873cb03172a698e18fc85 100644 +index 2e9991e6b3c05584002744a2ee2579b1dba218b2..544920a31b649985333f82beafa94a3392f5853e 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -172,12 +172,12 @@ public abstract class PathNavigation { @@ -1518,16 +1513,16 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489 this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475 100644 +index 09502b15c20f401c3b56ecedc4d3b515384d654f..bca7b7192debb3a34a08047010a2438e7b7e2a78 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -259,13 +259,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - private int behaviorTick = 0; // Pufferfish +@@ -252,13 +252,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + @Override protected void customServerAiStep() { - this.level().getProfiler().push("allayBrain"); + //this.level().getProfiler().push("allayBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("allayActivityUpdate"); @@ -1540,16 +1535,16 @@ index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aeb } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index e73d7b47327da59dbf49c2160acd0b3ebb2a4232..e3f72230e94b15a401e45cf8c10a1890d3278431 100644 +index ea1515f189bf3bc4cfef4524fb40f0d826f68cc0..d330f79e860662bc93a1703215e66e6564d181b9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -315,13 +315,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index baca84088350c82569fb7969136c65bbc4c52f5b..8616a8c09a21f576a07daaa93ebf64e0f03d0c88 100644 +index ed67fcd2b67bfe581863cc6748692c3348f6c883..24a1663cf1cd3f888981a13907811b55bdbf6133 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 -@@ -160,14 +160,14 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -151,14 +151,14 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @Override protected void customServerAiStep() { @@ -1585,16 +1580,16 @@ index baca84088350c82569fb7969136c65bbc4c52f5b..8616a8c09a21f576a07daaa93ebf64e0 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 907cdc32c30291f5668c806b874da0fbe0754738..37f1d3c656997906cef57d9dbefc226d04fc65fe 100644 +index b0f8115b328eda1e3571051870b5310c5a7e115a..ee8c232ddaa518377bdfa54e83ffc04f7a2f2c9a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -239,13 +239,13 @@ public class Frog extends Animal implements VariantHolder { - private int behaviorTick = 0; // Pufferfish +@@ -237,13 +237,13 @@ public class Frog extends Animal implements VariantHolder> { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("frogBrain"); + //this.level().getProfiler().push("frogBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("frogActivityUpdate"); @@ -1607,16 +1602,17 @@ index 907cdc32c30291f5668c806b874da0fbe0754738..37f1d3c656997906cef57d9dbefc226d } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index c19513b3b35bbb05c3159606caacee0559366610..2a9c2a69a0589e4e7b7c79d3716376b360a2eba1 100644 +index b98a34357e59168bbb22c967b86a449fc91f47f0..09c4cf772df4644413e40055fedcdf42ee8064fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -120,12 +120,12 @@ public class Tadpole extends AbstractFish { - private int behaviorTick = 0; // Pufferfish +@@ -122,13 +122,13 @@ public class Tadpole extends AbstractFish { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("tadpoleBrain"); + //this.level().getProfiler().push("tadpoleBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("tadpoleActivityUpdate"); + //this.level().getProfiler().pop(); // Purpur @@ -1628,16 +1624,16 @@ index c19513b3b35bbb05c3159606caacee0559366610..2a9c2a69a0589e4e7b7c79d3716376b3 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index f7730ec3a6c8818baf2a7a738e5a49a56d17c0e8..566f117ba6742ba17ffb8a2673a8c320c39549f7 100644 +index 79c27b5717fec000ea94138ebc76dbabf5b2eeaf..4e855055abe4d300b6b126e8a9deecaab5827a33 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -226,13 +226,13 @@ public class Goat extends Animal { - private int behaviorTick = 0; // Pufferfish +@@ -224,13 +224,13 @@ public class Goat extends Animal { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("goatBrain"); + //this.level().getProfiler().push("goatBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goatActivityUpdate"); @@ -1650,10 +1646,10 @@ index f7730ec3a6c8818baf2a7a738e5a49a56d17c0e8..566f117ba6742ba17ffb8a2673a8c320 } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 4d1071546f523c63b9c981e90a09393e9e4400fa..5e7d76dcdc170b809ab82f6e2259c9b4d3d741be 100644 +index 0cc5b9e44dd6f1e0afdbb62ef41aa749c0c79b18..21bdcbd51d9f440e0734750b40cefa4c08cdaf5f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -517,11 +517,11 @@ public class Sniffer extends Animal { +@@ -504,11 +504,11 @@ public class Sniffer extends Animal { @Override protected void customServerAiStep() { @@ -1669,10 +1665,10 @@ index 4d1071546f523c63b9c981e90a09393e9e4400fa..5e7d76dcdc170b809ab82f6e2259c9b4 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index c1125279b80bad8d7b6b273e709c412a0a578318..abafb15ab1294e11810798795bd103fb8bd5f64a 100644 +index 451762b3cd023b8c5828f68e2778aada9c50ab85..f9bb83f35a41e5b076ae438af613a97b8e60c0c3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -273,10 +273,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -266,10 +266,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { @@ -1686,10 +1682,10 @@ index c1125279b80bad8d7b6b273e709c412a0a578318..abafb15ab1294e11810798795bd103fb } diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index b5ef8d9e55656100085a4d9858c3530bb08d3c16..aa27c014ce53e2dd49f02d413d5c4d763261a803 100644 +index 796ce24185ab9e80864116f9523c4289fcaad243..82391c84789c27353212d3142c036cc5aedb98f9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -202,10 +202,10 @@ public class Breeze extends Monster { +@@ -226,11 +226,11 @@ public class Breeze extends Monster { @Override protected void customServerAiStep() { @@ -1697,23 +1693,24 @@ index b5ef8d9e55656100085a4d9858c3530bb08d3c16..aa27c014ce53e2dd49f02d413d5c4d76 + //this.level().getProfiler().push("breezeBrain"); // Purpur this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().popPush("breezeActivityUpdate"); -- this.level().getProfiler().pop(); + //this.level().getProfiler().popPush("breezeActivityUpdate"); // Purpur + BreezeAi.updateActivity(this); +- this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8..cfa7ec9b5b3125cb80b591e80f8d42815c25f568 100644 +index a69a4d860cf537322cdf96bfd42e55d3fc684dd1..757d2b7bcb83f5bdcddf85a00e90288f3b82a2d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -195,10 +195,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - private int behaviorTick; // Pufferfish +@@ -192,10 +192,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("hoglinBrain"); + //this.level().getProfiler().push("hoglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1721,16 +1718,16 @@ index 4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8..cfa7ec9b5b3125cb80b591e80f8d4281 if (this.isConverting()) { this.timeInOverworld++; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971bdbd8451 100644 +index 811b622945ecf67cff1992c3cdd4fcd84f33fb68..1b5977aa14d9a7254e7692bb152cc2808d52107a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -335,10 +335,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - private int behaviorTick; // Pufferfish +@@ -328,10 +328,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + @Override protected void customServerAiStep() { - this.level().getProfiler().push("piglinBrain"); + //this.level().getProfiler().push("piglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1738,10 +1735,10 @@ index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971 super.customServerAiStep(); } diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 5ae1b1de412aeacbbc5e04299e94351d34631b4c..40f6af92d1fc58a6115fc16b02d296aef897b607 100644 +index 71d2501e88a99819ef305fa8715418aad65ec81d..407a0f27719d3944b3a005c664d80246ea1c7cf4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -145,10 +145,10 @@ public class PiglinBrute extends AbstractPiglin { +@@ -138,10 +138,10 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { @@ -1755,16 +1752,16 @@ index 5ae1b1de412aeacbbc5e04299e94351d34631b4c..40f6af92d1fc58a6115fc16b02d296ae PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 384e7b29215cadfa40af07a183a9c9c6a5b4a80a..bf7ef72a7d92db8f11789a69583270644de0dac7 100644 +index 9f5325444cc4f64fc88f85794fbad09ddd4f7860..0bb577ec9ba0d23a741ccf067ac35f6be68312ca 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -302,10 +302,10 @@ public class Warden extends Monster implements VibrationSystem { +@@ -299,9 +299,10 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); - worldserver.getProfiler().push("wardenBrain"); + //worldserver.getProfiler().push("wardenBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ //if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - TODO: Move to Ridables patch this.getBrain().tick(worldserver, this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1772,10 +1769,10 @@ index 384e7b29215cadfa40af07a183a9c9c6a5b4a80a..bf7ef72a7d92db8f11789a6958327064 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c..50202286a0d83f7fe5331eb669d999718a9082cf 100644 +index dcf580d852ede8ea01f5d91944a224ec6eca73e4..4be218129188c1be8736940170a861adc10fdb7d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -344,7 +344,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -341,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end @@ -1784,20 +1781,20 @@ index ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c..50202286a0d83f7fe5331eb669d99971 // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -356,7 +356,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -357,7 +357,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getBrain().tick((ServerLevel) this.level(), this); // Paper - } else if (this.isLobotomized && shouldRestock()) restock(); - // Purpur end + } + // Purpur end*/ // Purpur - TODO: Pufferfish - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 90a82bd7977ebe520bdcc2ab99e11452d5cf4a21..5dcfb077fc58a92f32425aaafb82d6b41d488e13 100644 +index feb470e8036ecfcd838cff05a0dc1d43cc96ae3c..6b6340ae8ca3f81f08f9038b63ebc419e003cf6b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -675,7 +675,7 @@ public class Explosion { +@@ -681,7 +681,7 @@ public class Explosion { } if (flag1) { @@ -1806,7 +1803,7 @@ index 90a82bd7977ebe520bdcc2ab99e11452d5cf4a21..5dcfb077fc58a92f32425aaafb82d6b4 List> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); -@@ -751,7 +751,7 @@ public class Explosion { +@@ -757,7 +757,7 @@ public class Explosion { Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } @@ -1816,10 +1813,10 @@ index 90a82bd7977ebe520bdcc2ab99e11452d5cf4a21..5dcfb077fc58a92f32425aaafb82d6b4 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58dbfc645c 100644 +index 4d00d72d66adfb282d354e22703552b333138694..eda2f8cc034cf46293be1be117a60cf8b663c303 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1314,9 +1314,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1303,9 +1303,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1831,7 +1828,7 @@ index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58 //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1357,7 +1357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1346,7 +1346,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1840,7 +1837,7 @@ index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58 this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1567,7 +1567,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1561,7 +1561,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1849,7 +1846,7 @@ index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1586,7 +1586,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1580,7 +1580,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1858,20 +1855,19 @@ index ea9b33eb48d8610943d122811cc49d211bc22d86..311c853f2150247350ab6ccb2dd92d58 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1845,7 +1845,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1835,6 +1835,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { -- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish -+ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur ++ //if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur // Purpur - TODO: Pufferfish return (ProfilerFiller) this.profiler.get(); } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 78eb2d8ba58f2937c1145147e2d9e7de802e541e..d657de0bcc0684d1ba49ddad4db35e0e23fac108 100644 +index 2812505185df691e8f08932aa0bba162a7d9db86..35e94c06361795d032f995e8282f8b35c075dae7 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -132,7 +132,7 @@ public final class NaturalSpawner { +@@ -127,7 +127,7 @@ public final class NaturalSpawner { } public static void spawnForChunk(ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnState info, boolean spawnAnimals, boolean spawnMonsters, boolean rareSpawn) { @@ -1880,7 +1876,7 @@ index 78eb2d8ba58f2937c1145147e2d9e7de802e541e..d657de0bcc0684d1ba49ddad4db35e0e //world.timings.mobSpawn.startTiming(); // Spigot // Purpur MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES; int i = aenumcreaturetype.length; -@@ -187,7 +187,7 @@ public final class NaturalSpawner { +@@ -182,7 +182,7 @@ public final class NaturalSpawner { } //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur @@ -1890,10 +1886,10 @@ index 78eb2d8ba58f2937c1145147e2d9e7de802e541e..d657de0bcc0684d1ba49ddad4db35e0e // Paper start - Add mobcaps commands diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cda5cda823 100644 +index e8d14bf4120dd9861e4ccb8bd6c14e175343c55d..fd637415625fdabcac07e120e9168d09c06141d4 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -457,11 +457,11 @@ public class LevelChunk extends ChunkAccess { +@@ -443,11 +443,11 @@ public class LevelChunk extends ChunkAccess { if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1908,7 +1904,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1174,9 +1174,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1158,9 +1158,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1920,7 +1916,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1193,7 +1193,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1177,7 +1177,7 @@ public class LevelChunk extends ChunkAccess { // Paper end - Remove the Block Entity if it's invalid } @@ -1930,7 +1926,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index d1e1f12451058f7f276f8277536a4c0a4d736601..2046ac397f5c46cc45f233e36abbdbe717753fc7 100644 +index 18bbb3f8f99849333ff4bc020c8ce758a69312a5..404080976208c30e9e95e5bee47c2a749e709a45 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java @@ -53,8 +53,8 @@ public class PathFinder { diff --git a/patches/unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0258-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 91% rename from patches/unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0258-Add-more-logger-output-for-invalid-movement-kicks.patch index 38adc0de0..f46d7935a 100644 --- a/patches/unapplied-server/0262-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0258-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fdbdaa1d8d5760c5c661cbeca803e8ff8ec46aac..872be72e24017fdcb3060f6e4e9a92c342d59fc1 100644 +index 5ae8b009e5ba2fc896e7f52b864aecafe4e892d4..f86096f74b9ff401d8b1add64912bdf69c576139 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -753,6 +753,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause @@ -16,7 +16,7 @@ index fdbdaa1d8d5760c5c661cbeca803e8ff8ec46aac..872be72e24017fdcb3060f6e4e9a92c3 return; } -@@ -1364,8 +1365,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1334,8 +1335,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/unapplied-server/0263-Add-Bee-API.patch b/patches/server/0259-Add-Bee-API.patch similarity index 89% rename from patches/unapplied-server/0263-Add-Bee-API.patch rename to patches/server/0259-Add-Bee-API.patch index 8180a08fe..b09f65216 100644 --- a/patches/unapplied-server/0263-Add-Bee-API.patch +++ b/patches/server/0259-Add-Bee-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Bee API 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 c2dae3636145105ecb3ae950e07095f278f72ac2..997ab942be9f742804041b07d607e7dd6473ba96 100644 +index 221c0051c7a0e20c1b7a464df26eb63c4e997eee..539170813921de2dfcd7ef84dd7512d73cd27e68 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -814,6 +814,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -797,6 +797,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { if (optional.isPresent()) { Bee.this.savedFlowerPos = (BlockPos) optional.get(); Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D); @@ -16,7 +16,7 @@ index c2dae3636145105ecb3ae950e07095f278f72ac2..997ab942be9f742804041b07d607e7dd return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -870,6 +871,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -853,6 +854,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -24,7 +24,7 @@ index c2dae3636145105ecb3ae950e07095f278f72ac2..997ab942be9f742804041b07d607e7dd } @Override -@@ -916,6 +918,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -899,6 +901,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/patches/unapplied-server/0264-Debug-Marker-API.patch b/patches/server/0260-Debug-Marker-API.patch similarity index 94% rename from patches/unapplied-server/0264-Debug-Marker-API.patch rename to patches/server/0260-Debug-Marker-API.patch index d677dbccf..495a63065 100644 --- a/patches/unapplied-server/0264-Debug-Marker-API.patch +++ b/patches/server/0260-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 14e60675d23f9696fd8f64eb026fcd0b82b498f0..659450d3538cc1499fd427868159e8c32b007dd2 100644 +index b113e54cbe8262b7d0d8bae156d00baf04486b32..dcb9d516e8078da4a51a716080ef9a442f6cdb67 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1600,6 +1600,42 @@ public final class CraftServer implements Server { @@ -52,10 +52,10 @@ index 14e60675d23f9696fd8f64eb026fcd0b82b498f0..659450d3538cc1499fd427868159e8c3 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 06abe25b335606b42ac2a7b5551f0c9e7143a474..69c12d9049af908380c48c7f13d3d5c7220f8e39 100644 +index b7a02ae4eda06cab8ffd1220259a061558981dec..226ff7c6048b510be2e71ecc5d5ff3581092aa5e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2420,6 +2420,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2428,6 +2428,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 06abe25b335606b42ac2a7b5551f0c9e7143a474..69c12d9049af908380c48c7f13d3d5c7 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4a04c56371a2d9772fb542ffac5b9b98cbf1e86a..9d2b39e871c83ab7af9c2cbde08e560006fcb005 100644 +index 0b278aaf675693e4babac5d551087285b59f8f5c..10f879310af7c0f31a65d59bf0bbb33ed2cdaeb5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3508,5 +3508,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3565,5 +3565,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0261-mob-spawning-option-to-ignore-creative-players.patch similarity index 94% rename from patches/unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0261-mob-spawning-option-to-ignore-creative-players.patch index 015722f81..1de4d2a1c 100644 --- a/patches/unapplied-server/0265-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0261-mob-spawning-option-to-ignore-creative-players.patch @@ -5,10 +5,10 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index d657de0bcc0684d1ba49ddad4db35e0e23fac108..a2026900948e9157cb35ba0183dc3af20c63214f 100644 +index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd1193d882 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -258,7 +258,7 @@ public final class NaturalSpawner { +@@ -253,7 +253,7 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; diff --git a/patches/unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch b/patches/server/0262-Add-skeleton-bow-accuracy-option.patch similarity index 95% rename from patches/unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0262-Add-skeleton-bow-accuracy-option.patch index 8306cc224..ea00f2812 100644 --- a/patches/unapplied-server/0266-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0262-Add-skeleton-bow-accuracy-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index cb378b343f721c16868a6673aba59856574c7133..a00646bc8a9caefe56e48b7682e8fb0c464b81fa 100644 +index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e459276848dcb4c9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -182,7 +182,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -183,7 +183,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo double d2 = target.getZ() - this.getZ(); double d3 = Math.sqrt(d0 * d0 + d2 * d2); diff --git a/patches/unapplied-server/0267-Allay-respect-item-NBT.patch b/patches/server/0263-Allay-respect-item-NBT.patch similarity index 94% rename from patches/unapplied-server/0267-Allay-respect-item-NBT.patch rename to patches/server/0263-Allay-respect-item-NBT.patch index 9faf279ca..c209860d2 100644 --- a/patches/unapplied-server/0267-Allay-respect-item-NBT.patch +++ b/patches/server/0263-Allay-respect-item-NBT.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f27e01ee8b 100644 +index bca7b7192debb3a34a08047010a2438e7b7e2a78..53765198483e137d411e227119e4f912964aefe3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -406,9 +406,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -399,9 +399,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override public boolean wantsToPickUp(ItemStack stack) { diff --git a/patches/unapplied-server/0268-Add-death-screen-API.patch b/patches/server/0264-Add-death-screen-API.patch similarity index 87% rename from patches/unapplied-server/0268-Add-death-screen-API.patch rename to patches/server/0264-Add-death-screen-API.patch index d8f90eb6d..7975b0a84 100644 --- a/patches/unapplied-server/0268-Add-death-screen-API.patch +++ b/patches/server/0264-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9d2b39e871c83ab7af9c2cbde08e560006fcb005..fb2d05e43df3bfb72b1f6e325736dd3cbc6c3096 100644 +index 10f879310af7c0f31a65d59bf0bbb33ed2cdaeb5..90338017ebcb2a690dff7dad57aa6fbb95e0ff93 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3546,5 +3546,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3603,5 +3603,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/unapplied-server/0270-Implement-ram-and-rambar-commands.patch b/patches/server/0265-Implement-ram-and-rambar-commands.patch similarity index 96% rename from patches/unapplied-server/0270-Implement-ram-and-rambar-commands.patch rename to patches/server/0265-Implement-ram-and-rambar-commands.patch index ab9ceaac5..3c1d70723 100644 --- a/patches/unapplied-server/0270-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0265-Implement-ram-and-rambar-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 48a4f26eec06777b4ae165db6566c1f6198527fd..b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4 100644 +index d3c42c19a051fb3a670e541fc746b55717192a91..13dfb3e506d50c0b191baf5d05bbfc28c20be0ae 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -256,6 +256,8 @@ public class Commands { +@@ -258,6 +258,8 @@ public class Commands { org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur @@ -18,10 +18,10 @@ index 48a4f26eec06777b4ae165db6566c1f6198527fd..b6cc108c2d4361e6f415cfc3ff8c7699 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d78c2348160795fcc9ff23b448e7d3c48f34c272..305b90d10a499e9731f5178433fb10207e428091 100644 +index 054a8aff30181d1a568ad931eb150fc2992cac97..4404380383e9e78a70c4195dbb49aff76515441a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -284,6 +284,7 @@ public class ServerPlayer extends Player { +@@ -301,6 +301,7 @@ public class ServerPlayer extends Player { public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -29,23 +29,23 @@ index d78c2348160795fcc9ff23b448e7d3c48f34c272..305b90d10a499e9731f5178433fb1020 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -571,6 +572,7 @@ public class ServerPlayer extends Player { - } +@@ -611,6 +612,7 @@ public class ServerPlayer extends Player { + }); } + if (nbt.contains("Purpur.RamBar")) { this.ramBar = nbt.getBoolean("Purpur.RamBar"); } // Purpur - if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur + if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur - TODO: move back up if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur } -@@ -639,6 +641,7 @@ public class ServerPlayer extends Player { +@@ -689,6 +691,7 @@ public class ServerPlayer extends Player { + }); } - this.getBukkitEntity().setExtraData(nbt); // CraftBukkit + nbt.putBoolean("Purpur.RamBar", this.ramBar); // Purpur nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2915,5 +2918,13 @@ public class ServerPlayer extends Player { +@@ -3024,5 +3027,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } @@ -60,7 +60,7 @@ index d78c2348160795fcc9ff23b448e7d3c48f34c272..305b90d10a499e9731f5178433fb1020 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b55a4366f69a1f259d5d7aed01764aec14a1dbb2..5313ba91ffc625b27d5bb99395f0e719829f6bda 100644 +index d038e62a0151e3b5c9dee06f1b2682684d0b496e..b94f7b882405345f6154383beaef8d89673726c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0273-Configurable-block-blast-resistance.patch b/patches/server/0266-Configurable-block-blast-resistance.patch similarity index 78% rename from patches/unapplied-server/0273-Configurable-block-blast-resistance.patch rename to patches/server/0266-Configurable-block-blast-resistance.patch index 3504b073e..efd300477 100644 --- a/patches/unapplied-server/0273-Configurable-block-blast-resistance.patch +++ b/patches/server/0266-Configurable-block-blast-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 63c4d52c348d9297a24abb17e105b2f4c7758740..d38d8fc7ef22fb68e867cc29dab1171c9aa6ac35 100644 +index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc188406712ab9953f 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -84,7 +84,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; public final boolean hasCollision; @@ -18,12 +18,12 @@ index 63c4d52c348d9297a24abb17e105b2f4c7758740..d38d8fc7ef22fb68e867cc29dab1171c protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 88763ca8cc31bda23f8f31d2bc990fb4a85c9955..b13635ec623c80b1c32f2a6c11680dae899e8ec7 100644 +index b94f7b882405345f6154383beaef8d89673726c9..b0e560b1efa0368949fa0e3a6706807d9dbfca20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -578,4 +578,19 @@ public class PurpurConfig { - private static void fixProjectileLootingTransfer() { - fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); +@@ -497,4 +497,19 @@ public class PurpurConfig { + String setPattern = getString("settings.username-valid-characters", defaultPattern); + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } + + private static void blastResistanceSettings() { diff --git a/patches/unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch b/patches/server/0267-Configurable-block-fall-damage-modifiers.patch similarity index 93% rename from patches/unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0267-Configurable-block-fall-damage-modifiers.patch index a5a16d4a8..feb5dfd24 100644 --- a/patches/unapplied-server/0274-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0267-Configurable-block-fall-damage-modifiers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 58d4554785d066962acad59d983d15e6419c4869..83fa72b5a8fde431e7035fe5cacc50e33ae506bf 100644 +index 9084e11df829fb24489773d15435a3a3570135fe..fe37651b9d5a1f786944c39de0c8a438951b4303 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -183,7 +183,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -182,7 +182,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -18,7 +18,7 @@ index 58d4554785d066962acad59d983d15e6419c4869..83fa72b5a8fde431e7035fe5cacc50e3 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 34b4c19220e73efad9ff22f3798ee7fbbd5a1968..284149925440f413d23a9ec3ce704e70a74f4c08 100644 +index 49dad044ac21bbfe2e60be76757ada4750b607b4..c5215d3a65856db760089f9e3dc38426c70e75ba 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -96,6 +96,10 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -32,7 +32,7 @@ index 34b4c19220e73efad9ff22f3798ee7fbbd5a1968..284149925440f413d23a9ec3ce704e70 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -522,7 +526,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -514,7 +518,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b13635ec623c80b1c32f2a6c11680dae899e8ec7..bc001cac7d478baf5118ec746de8d2d2eba2ba5c 100644 +index b0e560b1efa0368949fa0e3a6706807d9dbfca20..384d07ffdbae9b764d5313fa8d172f95d1c1aebd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -593,4 +593,50 @@ public class PurpurConfig { +@@ -512,4 +512,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/unapplied-server/0275-Language-API.patch b/patches/server/0268-Language-API.patch similarity index 88% rename from patches/unapplied-server/0275-Language-API.patch rename to patches/server/0268-Language-API.patch index fa7b7a005..32b0743ed 100644 --- a/patches/unapplied-server/0275-Language-API.patch +++ b/patches/server/0268-Language-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 659450d3538cc1499fd427868159e8c32b007dd2..dabaf0cff6dafe8ca411996e67ead9a2cf84dfb8 100644 +index dcb9d516e8078da4a51a716080ef9a442f6cdb67..8d754bf77cb88d8ddf964f3221183e4097f06d13 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -400,6 +400,20 @@ public final class CraftServer implements Server { +@@ -403,6 +403,20 @@ public final class CraftServer implements Server { this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); Bukkit.setServer(this); diff --git a/patches/unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch similarity index 94% rename from patches/unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0269-Milk-Keeps-Beneficial-Effects.patch index 51cad8b58..f0f24129a 100644 --- a/patches/unapplied-server/0276-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e64d2425f6b5cec9a72bcbf451284fcbb3ebce06..d6705dce3bc8c1964184fe425386b3f3c0a8202e 100644 +index def30f8c79a4244116f1b9d9ae1a9d06d0a38bce..319e33285b9ba1c65bab9cf2266a15aa0f24d002 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1133,6 +1133,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1154,6 +1154,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -17,7 +17,7 @@ index e64d2425f6b5cec9a72bcbf451284fcbb3ebce06..d6705dce3bc8c1964184fe425386b3f3 if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 21a7cc86245d2440b8fc757d3664a29de293f7b0..b133c186d2d1412aa623ba3db68091bc69c282a5 100644 +index 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8b39c7d38 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -115,7 +115,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/unapplied-server/0277-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0271-Add-log-suppression-for-LibraryLoader.patch similarity index 94% rename from patches/unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0271-Add-log-suppression-for-LibraryLoader.patch index e636b97ae..2722dbce3 100644 --- a/patches/unapplied-server/0278-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0271-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bc001cac7d478baf5118ec746de8d2d2eba2ba5c..5343628ea71c14fba785a0b36ef4abd05b6f63c3 100644 +index 384d07ffdbae9b764d5313fa8d172f95d1c1aebd..c7159eb65efaac72091fe3b9e7e63f9c778c15aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -470,11 +470,14 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/unapplied-server/0279-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/unapplied-server/0280-Fire-Immunity-API.patch b/patches/server/0273-Fire-Immunity-API.patch similarity index 79% rename from patches/unapplied-server/0280-Fire-Immunity-API.patch rename to patches/server/0273-Fire-Immunity-API.patch index d96bf9aab..2a3980e0f 100644 --- a/patches/unapplied-server/0280-Fire-Immunity-API.patch +++ b/patches/server/0273-Fire-Immunity-API.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e991807b91df78 100644 +index 2c3ad553272ad651e6ca26917719e6d9fffdef68..7a27388b5155e7b2478b0daa02cb616829a5d4a2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -427,6 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S - public boolean activatedPriorityReset = false; // Pufferfish - DAB - public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // Pufferfish - DAB (golf score) - public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // Pufferfish - reduce entity allocations +@@ -427,6 +427,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + private UUID originWorld; + public boolean freezeLocked = false; // Paper - Freeze Tick Lock API + public boolean fixedPose = false; // Paper - Expand Pose API + public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1827,7 +1828,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1878,7 +1879,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e99180 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2524,6 +2525,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2575,6 +2576,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e99180 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2671,6 +2677,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2722,6 +2728,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,7 +50,7 @@ index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e99180 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b6ecb58718b7de7ba9c90236f3dc11715652daa9..7121de7f623b4a57937a9c60c8fc0f4307e538dc 100644 +index 3c674ecd3b80501047b4593e8872034287defd2e..0ed18542fd8e2a992dc56a5f421eaa840e0af193 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 6384b858d..95a0d2dde 100644 --- a/patches/unapplied-server/0281-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a2f5027910b4d690eff73aaab7e991807b91df78..f2c6b52fe7fbb05afa0074684cd195f6ae598f1f 100644 +index 7a27388b5155e7b2478b0daa02cb616829a5d4a2..3aae4fa4176c0bf170f4532ae187e3122c142a6a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -936,6 +936,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -972,6 +972,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/patches/unapplied-server/0282-Added-got-ram-event.patch b/patches/server/0275-Added-got-ram-event.patch similarity index 86% rename from patches/unapplied-server/0282-Added-got-ram-event.patch rename to patches/server/0275-Added-got-ram-event.patch index 64bcba860..9809d3a17 100644 --- a/patches/unapplied-server/0282-Added-got-ram-event.patch +++ b/patches/server/0275-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 566f117ba6742ba17ffb8a2673a8c320c39549f7..9d356b08279fd611fb9a7d25be6ede59998a9799 100644 +index 4e855055abe4d300b6b126e8a9deecaab5827a33..6a3c68839d3b993c82fabd4e17f53e38ce9c38f7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -429,6 +429,7 @@ public class Goat extends Animal { +@@ -427,6 +427,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/unapplied-server/0283-Log-skipped-entity-s-position.patch b/patches/server/0276-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/unapplied-server/0283-Log-skipped-entity-s-position.patch rename to patches/server/0276-Log-skipped-entity-s-position.patch index aa49315a4..19da920bc 100644 --- a/patches/unapplied-server/0283-Log-skipped-entity-s-position.patch +++ b/patches/server/0276-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index d52af9fa2ca4a07f3499dfee5fe5a7c7b9239cad..a9e2a758669550530eb29475ba99fe42e520f6ae 100644 +index 3097529a9066841a58c899ce55b3bc0cd6af7e88..8120f39a9689dae1233b243b74825e9ff110eac3 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -619,6 +619,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -625,6 +625,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/unapplied-server/0284-End-Crystal-Cramming.patch b/patches/server/0277-End-Crystal-Cramming.patch similarity index 96% rename from patches/unapplied-server/0284-End-Crystal-Cramming.patch rename to patches/server/0277-End-Crystal-Cramming.patch index e1fbb7d55..63bfa1843 100644 --- a/patches/unapplied-server/0284-End-Crystal-Cramming.patch +++ b/patches/server/0277-End-Crystal-Cramming.patch @@ -5,7 +5,7 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 24ad1bae912fa6ee82ea8b6bdbb0af664dc1006c..34f5006f72ec357c474a19f22ee339e3a1dc786f 100644 +index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdbc4f8ff8d 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 @@ -100,6 +100,7 @@ public class EndCrystal extends Entity { diff --git a/patches/unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 91% rename from patches/unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 2a53548ca..a923faa04 100644 --- a/patches/unapplied-server/0285-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 4a0bca08585fae3620da108f6a4cc07e500e5e03..428773361d12ecbcf3a6bf790aedfe12a384f511 100644 +index 37ce2605c8803d8d87770bf6a95a83aa975b99fe..39d4e47b1408dd7c0174a6cf8b4ebac63d590a53 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -174,6 +174,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -178,6 +178,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name int j = pos.getY(); int k = pos.getZ(); BlockPos blockposition1; @@ -16,7 +16,7 @@ index 4a0bca08585fae3620da108f6a4cc07e500e5e03..428773361d12ecbcf3a6bf790aedfe12 if (blockEntity.lastCheckY < j) { blockposition1 = pos; -@@ -207,6 +208,9 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -211,6 +212,9 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name } } } else { @@ -26,7 +26,7 @@ index 4a0bca08585fae3620da108f6a4cc07e500e5e03..428773361d12ecbcf3a6bf790aedfe12 if (tileentitybeacon_beaconcolortracker == null || iblockdata1.getLightBlock(world, blockposition1) >= 15 && !iblockdata1.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = l; -@@ -226,7 +230,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -230,7 +234,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name blockEntity.levels = BeaconBlockEntity.updateBase(world, i, j, k); } diff --git a/patches/unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch similarity index 76% rename from patches/unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch index 63c6d9a31..4a36a5b5b 100644 --- a/patches/unapplied-server/0286-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch @@ -5,16 +5,19 @@ Subject: [PATCH] Add attribute clamping and armor limit config diff --git a/src/main/java/net/minecraft/world/damagesource/CombatRules.java b/src/main/java/net/minecraft/world/damagesource/CombatRules.java -index ccbfcef3e83b1bef364447657bfd08a92d615cf6..aa2331c6df4e79d4bb0add071a0b11d2a3a08b88 100644 +index ddc880ac0c8378bc1132be5deba746c1484c941c..7a8e4b9a9f2e1e5a9c38ad330c75df1f880d3e8b 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatRules.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatRules.java -@@ -11,12 +11,12 @@ public class CombatRules { +@@ -12,7 +12,7 @@ public class CombatRules { - public static float getDamageAfterAbsorb(float damage, float armor, float armorToughness) { - float f = 2.0F + armorToughness / 4.0F; + public static float getDamageAfterAbsorb(float damage, DamageSource source, float armor, float armorToughnesss) { + float f = 2.0F + armorToughnesss / 4.0F; - float g = Mth.clamp(armor - damage / f, armor * 0.2F, 20.0F); + float g = Mth.clamp(armor - damage / f, armor * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur - return damage * (1.0F - g / 25.0F); + float h = g / 25.0F; + float i = EnchantmentHelper.calculateArmorBreach(source.getEntity(), h); + float j = 1.0F - i; +@@ -20,7 +20,7 @@ public class CombatRules { } public static float getDamageAfterMagicAbsorb(float damageDealt, float protection) { @@ -36,18 +39,13 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5343628ea71c14fba785a0b36ef4abd05b6f63c3..cd2c365bcaca0720dc543188a23ff585192cb76e 100644 +index c7159eb65efaac72091fe3b9e7e63f9c778c15aa..538239ed3d8ece17e219e097162eb66bff7d43c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -582,6 +582,16 @@ public class PurpurConfig { - fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); +@@ -501,6 +501,11 @@ public class PurpurConfig { + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } -+ public static boolean clampAttributes = true; -+ private static void clampAttributes() { -+ clampAttributes = getBoolean("settings.clamp-attributes", clampAttributes); -+ } -+ + public static boolean limitArmor = true; + private static void limitArmor() { + limitArmor = getBoolean("settings.limit-armor", limitArmor); diff --git a/patches/unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0280-Config-to-remove-explosion-radius-clamp.patch similarity index 91% rename from patches/unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0280-Config-to-remove-explosion-radius-clamp.patch index 471a6ae75..6eb9e20bd 100644 --- a/patches/unapplied-server/0287-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0280-Config-to-remove-explosion-radius-clamp.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 5dcfb077fc58a92f32425aaafb82d6b41d488e13..9b5da37a532595541eaac0a4607aff9045a20ff3 100644 +index 6b6340ae8ca3f81f08f9038b63ebc419e003cf6b..ed31528ddfec06e723827a505daeca5938dba865 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -97,7 +97,7 @@ public class Explosion { +@@ -98,7 +98,7 @@ public class Explosion { this.hitPlayers = Maps.newHashMap(); this.level = world; this.source = entity; @@ -17,7 +17,7 @@ index 5dcfb077fc58a92f32425aaafb82d6b41d488e13..9b5da37a532595541eaac0a4607aff90 this.x = x; this.y = y; this.z = z; -@@ -425,7 +425,7 @@ public class Explosion { +@@ -426,7 +426,7 @@ public class Explosion { public void explode() { // CraftBukkit start diff --git a/patches/unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 94% rename from patches/unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch index 448204a4d..9988211a0 100644 --- a/patches/unapplied-server/0288-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -5,7 +5,7 @@ Subject: [PATCH] bonemealable sugarcane, cactus, and netherwart diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index 84b04419d2cb536ac42ec5373cc74cc29418755c..02ea708a5b5df9f753194cdc9312fc830af85c68 100644 +index 9200d75b05ce535f7b7f5c1572cd8f6261c6955b..066181ed274a492762baebf05bf51ac7848878cc 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; @@ -18,7 +18,7 @@ index 84b04419d2cb536ac42ec5373cc74cc29418755c..02ea708a5b5df9f753194cdc9312fc83 public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; @@ -134,4 +134,34 @@ public class CactusBlock extends Block { - public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { + protected boolean isPathfindable(BlockState state, PathComputationType type) { return false; } + @@ -53,7 +53,7 @@ index 84b04419d2cb536ac42ec5373cc74cc29418755c..02ea708a5b5df9f753194cdc9312fc83 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java -index 464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910..13eb4dffd60ea7902d620f484df5e3f2c4688402 100644 +index da1c7999ca64199387054de46489d3ff4a299289..b8355ea1de26c4b6905f477fb4e110f1762447b4 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java @@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; @@ -89,7 +89,7 @@ index 464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910..13eb4dffd60ea7902d620f484df5e3f2 // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java -index 04957d461d0e968d443737068aaeec1d0bce78b2..7a283fbe4663cb321739f8e42ade4039d84e462b 100644 +index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce803449418fbed2a 100644 --- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.level.material.FluidState; diff --git a/patches/unapplied-server/0289-Add-PreExplodeEvents.patch b/patches/server/0282-Add-PreExplodeEvents.patch similarity index 86% rename from patches/unapplied-server/0289-Add-PreExplodeEvents.patch rename to patches/server/0282-Add-PreExplodeEvents.patch index cde070b54..4fc6f26f6 100644 --- a/patches/unapplied-server/0289-Add-PreExplodeEvents.patch +++ b/patches/server/0282-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 9b5da37a532595541eaac0a4607aff9045a20ff3..0be03430d8257d918b7cf646af518473ae027399 100644 +index ed31528ddfec06e723827a505daeca5938dba865..58aa5059c484c9e8acf429a3ae4f07d83594f991 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -429,6 +429,23 @@ public class Explosion { +@@ -430,6 +430,23 @@ public class Explosion { return; } // CraftBukkit end @@ -29,6 +29,6 @@ index 9b5da37a532595541eaac0a4607aff9045a20ff3..0be03430d8257d918b7cf646af518473 + } + //Purpur end + - this.level.gameEvent(this.source, GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z)); + this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z)); Set set = Sets.newHashSet(); boolean flag = true; diff --git a/patches/unapplied-server/0290-Improve-output-of-plugins-command.patch b/patches/server/0283-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/unapplied-server/0290-Improve-output-of-plugins-command.patch rename to patches/server/0283-Improve-output-of-plugins-command.patch diff --git a/patches/unapplied-server/0291-Add-mending-multiplier.patch b/patches/server/0284-Add-mending-multiplier.patch similarity index 93% rename from patches/unapplied-server/0291-Add-mending-multiplier.patch rename to patches/server/0284-Add-mending-multiplier.patch index af6e76b7b..c6cc8341f 100644 --- a/patches/unapplied-server/0291-Add-mending-multiplier.patch +++ b/patches/server/0284-Add-mending-multiplier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mending multiplier diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 373a932b80be18b8a47ef849ce837dbfbba6f9cb..9a3210e34decb4096533c58f36687e31330198c4 100644 +index ce608784e0e35b67dde377436aaf42c956ce0644..f5debc8ddc496cd3e2d8b253511ee5cc9a723b38 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -360,13 +360,15 @@ public class ExperienceOrb extends Entity { +@@ -366,13 +366,15 @@ public class ExperienceOrb extends Entity { } } diff --git a/patches/unapplied-server/0292-Make-GUI-Great-Again.patch b/patches/server/0285-Make-GUI-Great-Again.patch similarity index 96% rename from patches/unapplied-server/0292-Make-GUI-Great-Again.patch rename to patches/server/0285-Make-GUI-Great-Again.patch index 4445c7f52..758d27fe1 100644 --- a/patches/unapplied-server/0292-Make-GUI-Great-Again.patch +++ b/patches/server/0285-Make-GUI-Great-Again.patch @@ -96,10 +96,10 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 85b861e21d8798a883ecbd0a09cc25f87e801b7b..5ca6af93362d205438f8321ee2461ae7f8160df1 100644 +index 0d2d254fc2795f0ec844029bd4c05cdf6dc94207..775c5de4f5094260096cef6723dd50dfe2cb0c81 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -110,6 +110,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return; } // Paper start - Use TerminalConsoleAppender @@ -108,7 +108,7 @@ index 85b861e21d8798a883ecbd0a09cc25f87e801b7b..5ca6af93362d205438f8321ee2461ae7 /* jline.console.ConsoleReader bufferedreader = DedicatedServer.this.reader; diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java -index 7704a5951ac3d02020ed0f40d76500dd6ba005af..0dec2f3762aa55cfaa7af5b357f0fe243a3b2cc6 100644 +index 759062d219ff490a3cb19e710c4d18e3e08288e0..8f74c2ec5252b6265549589310d742337c91cb2c 100644 --- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java +++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java @@ -43,6 +43,11 @@ public class MinecraftServerGui extends JComponent { @@ -200,7 +200,7 @@ index 7704a5951ac3d02020ed0f40d76500dd6ba005af..0dec2f3762aa55cfaa7af5b357f0fe24 + } + }); + // Purpur end - jtextarea.addFocusListener(new FocusAdapter() { + jtextarea.addFocusListener(new FocusAdapter() { // CraftBukkit - decompile error public void focusGained(FocusEvent focusevent) {} }); @@ -210,7 +248,7 @@ public class MinecraftServerGui extends JComponent { @@ -398,14 +398,14 @@ index 0000000000000000000000000000000000000000..d75fb5e77eff27d86135ed7d605dbc25 + } +} diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index 675cd61221e807aadf28322b46c3daa1370241b5..0769f5c4711a3b7f59489e611ed01ad8367e5db1 100644 +index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda433567d2 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -2,7 +2,16 @@ - + -- +- + + + diff --git a/patches/unapplied-server/0294-Shears-can-defuse-TNT.patch b/patches/server/0286-Shears-can-defuse-TNT.patch similarity index 95% rename from patches/unapplied-server/0294-Shears-can-defuse-TNT.patch rename to patches/server/0286-Shears-can-defuse-TNT.patch index 81402150c..7f454b077 100644 --- a/patches/unapplied-server/0294-Shears-can-defuse-TNT.patch +++ b/patches/server/0286-Shears-can-defuse-TNT.patch @@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index e712bd07ea2946167782473a536e0c72fab4bccd..6d934405cd18d63943171448743cafd5c52026e2 100644 +index f1f352ec0e51f5db59254841a06c176c5a876fc9..ded6bacd7baf7e7c8aa225825c345aefd8d42aa9 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -200,4 +200,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -193,4 +193,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/patches/unapplied-server/0295-Explorer-Map-API.patch b/patches/server/0287-Explorer-Map-API.patch similarity index 66% rename from patches/unapplied-server/0295-Explorer-Map-API.patch rename to patches/server/0287-Explorer-Map-API.patch index a4ae1c0b2..c5d511c0f 100644 --- a/patches/unapplied-server/0295-Explorer-Map-API.patch +++ b/patches/server/0287-Explorer-Map-API.patch @@ -5,22 +5,22 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index d8dd99ec8bf7444c5a3c426db3a9c13e334dc0ff..8d3c1897044f9a2bbe1911e1a72dc9a00fb246df 100644 +index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..4704080612cb9d3f6338d158aba8078332b57c58 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java -@@ -235,6 +235,7 @@ public class MapItem extends ComplexItem { - MapItemSavedData worldmap = MapItem.getSavedData(map, world); - - if (worldmap != null) { +@@ -195,6 +195,7 @@ public class MapItem extends ComplexItem { + public static void renderBiomePreviewMap(ServerLevel world, ItemStack map) { + MapItemSavedData mapItemSavedData = getSavedData(map, world); + if (mapItemSavedData != null) { + worldmap.isExplorerMap = true; // Purpur - if (world.dimension() == worldmap.dimension) { - int i = 1 << worldmap.scale; - int j = worldmap.centerX; + if (world.dimension() == mapItemSavedData.dimension) { + int i = 1 << mapItemSavedData.scale; + int j = mapItemSavedData.centerX; diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index 45269115e63cfc3bd7dc740a5694e2cc7c35bcb1..e1498d496aa01c433b6fa198608e33916eadecf3 100644 +index cf8ae635fce7ea66d4e1ab1dc05575f035fa95ef..e26f6215ca42885cb0635a3183a8df93a924ba7f 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -67,6 +67,7 @@ public class MapItemSavedData extends SavedData { +@@ -79,6 +79,7 @@ public class MapItemSavedData extends SavedData { private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper @@ -29,10 +29,10 @@ index 45269115e63cfc3bd7dc740a5694e2cc7c35bcb1..e1498d496aa01c433b6fa198608e3391 // CraftBukkit start public final CraftMapView mapView; diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -index 15e9dd8844f893de5e8372b847c9e8295d6f69ca..b4b105c0190502328d5aeb680dd8e67c2875618f 100644 +index 0cbbd915631904fe8c6effefb92895422b33eff6..aef19cfbecb4ddfc8dc71c4f3b2a011364c12dc2 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -@@ -46,4 +46,10 @@ public class CraftMapRenderer extends MapRenderer { +@@ -47,4 +47,10 @@ public class CraftMapRenderer extends MapRenderer { } } diff --git a/patches/unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 93% rename from patches/unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch index 82a355e1d..5fe1444e3 100644 --- a/patches/unapplied-server/0296-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option Ocelot Spawn Under Sea Level 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 af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf598352a62a35 100644 +index 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f66a207ad3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -295,7 +295,7 @@ public class Ocelot extends Animal { +@@ -293,7 +293,7 @@ public class Ocelot extends Animal { if (world.isUnobstructed(this) && !world.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockposition = this.blockPosition(); diff --git a/patches/unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 86% rename from patches/unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index cca01ecf0..c0e4a8146 100644 --- a/patches/unapplied-server/0297-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 4f4f557b7f4232ec3b90dda43c6bed30521318ba..dd4313e0507d3adda0ec84c79f1af13ecc2d7ef3 100644 +index e25af9af8f87e6762716749c367658bf6bda9e34..8c209106c9f09f7d3e661c6fa3cffccf08e73182 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -599,20 +599,33 @@ public class PiglinAi { +@@ -597,20 +597,33 @@ public class PiglinAi { Iterator iterator = iterable.iterator(); Item item; @@ -23,8 +23,8 @@ index 4f4f557b7f4232ec3b90dda43c6bed30521318ba..dd4313e0507d3adda0ec84c79f1af13e + itemstack = (ItemStack) iterator.next(); // Purpur item = itemstack.getItem(); -- } while (!(item instanceof ArmorItem) || ((ArmorItem) item).getMaterial() != ArmorMaterials.GOLD); -+ } while (!(item instanceof ArmorItem) || ((ArmorItem) item).getMaterial() != ArmorMaterials.GOLD && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(entity, itemstack))); // Purpur +- } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD)); ++ } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD) && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(entity, itemstack))); return true; } diff --git a/patches/unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 64% rename from patches/unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch index 54306ecc1..43ecdf2ef 100644 --- a/patches/unapplied-server/0298-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch @@ -5,36 +5,36 @@ Subject: [PATCH] Add option for always showing item in player death messages diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 925654e40a170d1a4af0b9fcde1b9b359f833064..bf06bb78d060bb54d9aaade3605d42ce837d598b 100644 +index 357a79d72a2de02a019595e457fe432bf409e516..4fb025a63628eb60509d90b680922a0220104bcb 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -53,7 +53,7 @@ public class CombatTracker { +@@ -54,7 +54,7 @@ public class CombatTracker { private Component getMessageForAssistedFall(Entity attacker, Component attackerDisplayName, String itemDeathTranslationKey, String deathTranslationKey) { ItemStack itemStack = attacker instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; -- return !itemStack.isEmpty() && itemStack.hasCustomHoverName() -+ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.hasCustomHoverName()) // Purpur +- return !itemStack.isEmpty() && itemStack.has(DataComponents.CUSTOM_NAME) ++ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.has(DataComponents.CUSTOM_NAME)) // Purpur ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 41651c877246f38c73cc9c81b37a0b86e5054cb9..a1724d2d545aa808ea380f910c0190658fc7881b 100644 +index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb90078ffabff 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -196,7 +196,7 @@ public class DamageSource { +@@ -197,7 +197,7 @@ public class DamageSource { ItemStack itemstack1 = itemstack; -- return !itemstack1.isEmpty() && itemstack1.hasCustomHoverName() ? Component.translatable(s + ".item", killed.getDisplayName(), ichatbasecomponent, itemstack1.getDisplayName()) : Component.translatable(s, killed.getDisplayName(), ichatbasecomponent); -+ return !itemstack1.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemstack1.hasCustomHoverName()) ? Component.translatable(s + ".item", killed.getDisplayName(), ichatbasecomponent, itemstack1.getDisplayName()) : Component.translatable(s, killed.getDisplayName(), ichatbasecomponent); +- return !itemstack1.isEmpty() && itemstack1.has(DataComponents.CUSTOM_NAME) ? Component.translatable(s + ".item", killed.getDisplayName(), ichatbasecomponent, itemstack1.getDisplayName()) : Component.translatable(s, killed.getDisplayName(), ichatbasecomponent); ++ return !itemstack1.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemstack1.has(DataComponents.CUSTOM_NAME)) ? Component.translatable(s + ".item", killed.getDisplayName(), ichatbasecomponent, itemstack1.getDisplayName()) : Component.translatable(s, killed.getDisplayName(), ichatbasecomponent); } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cd2c365bcaca0720dc543188a23ff585192cb76e..776d397fc31db121fa933a2ae2b4f1589fc10247 100644 +index 538239ed3d8ece17e219e097162eb66bff7d43c8..ecb9b15939ab8ff6cfa7e15457701428019b443a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -652,4 +652,9 @@ public class PurpurConfig { +@@ -566,4 +566,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/unapplied-server/0299-place-end-crystal-on-any-block.patch b/patches/server/0291-place-end-crystal-on-any-block.patch similarity index 93% rename from patches/unapplied-server/0299-place-end-crystal-on-any-block.patch rename to patches/server/0291-place-end-crystal-on-any-block.patch index 5003d9f9b..87405372a 100644 --- a/patches/unapplied-server/0299-place-end-crystal-on-any-block.patch +++ b/patches/server/0291-place-end-crystal-on-any-block.patch @@ -5,10 +5,10 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index faa3f62d22266a3c32d6c95c3ffebd4aa3880739..0cf62b1f64afa56c319392eafe0d444b7c5662c7 100644 +index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317e4167bf9 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -@@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { +@@ -27,7 +27,7 @@ public class EndCrystalItem extends Item { BlockPos blockposition = context.getClickedPos(); BlockState iblockdata = world.getBlockState(blockposition); diff --git a/patches/unapplied-server/0300-Add-hover-lines-API.patch b/patches/server/0292-Add-hover-lines-API.patch similarity index 88% rename from patches/unapplied-server/0300-Add-hover-lines-API.patch rename to patches/server/0292-Add-hover-lines-API.patch index 453474d45..47c1dd61e 100644 --- a/patches/unapplied-server/0300-Add-hover-lines-API.patch +++ b/patches/server/0292-Add-hover-lines-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 71aac5d4cf29cea9daa378fc8ac584750de4d1ca..0496871db7437322d3932ca3d3504d84af832d90 100644 +index 6e2a6ce5cf456bd9f6c8c18a58f08e2285dc77ed..b27d16e74c3f99aa693b38590c1fb62db8204509 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -@@ -596,4 +596,17 @@ public final class CraftItemFactory implements ItemFactory { +@@ -619,4 +619,17 @@ public final class CraftItemFactory implements ItemFactory { return CraftItemStack.asCraftMirror(enchanted); } // Paper end - enchantWithLevels API diff --git a/patches/unapplied-server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/unapplied-server/0301-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/unapplied-server/0302-register-minecraft-debug-commands.patch b/patches/server/0294-register-minecraft-debug-commands.patch similarity index 85% rename from patches/unapplied-server/0302-register-minecraft-debug-commands.patch rename to patches/server/0294-register-minecraft-debug-commands.patch index be6a9283d..d1d70ac86 100644 --- a/patches/unapplied-server/0302-register-minecraft-debug-commands.patch +++ b/patches/server/0294-register-minecraft-debug-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] register minecraft debug commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4..b203394ed62807e7d5df433830993f1d2ee14939 100644 +index 13dfb3e506d50c0b191baf5d05bbfc28c20be0ae..f9d0e8ee9414b3897f268ba78a1469ddf868f51a 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -221,8 +221,8 @@ public class Commands { +@@ -222,8 +222,8 @@ public class Commands { JfrCommand.register(this.dispatcher); } @@ -17,13 +17,13 @@ index b6cc108c2d4361e6f415cfc3ff8c7699a8e222f4..b203394ed62807e7d5df433830993f1d + if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur + if (!org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands) TestCommand.register(this.dispatcher); // Purpur ResetChunksCommand.register(this.dispatcher); - RaidCommand.register(this.dispatcher); + RaidCommand.register(this.dispatcher, commandRegistryAccess); DebugPathCommand.register(this.dispatcher); diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index bc391d27399d8c22e78735ca39aa8ab45efb6413..4ef8eaad4485a2ee920f80556f9dda04e59d2b2a 100644 +index 5443013060b62e3bfcc51cddca96d1c0bc59fe72..868932a170c3052e49dc69c2e8eb3ac9c405b45f 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -130,6 +130,10 @@ public class Main { +@@ -133,6 +133,10 @@ public class Main { // Paper start - load config files early for access below if needed org.bukkit.configuration.file.YamlConfiguration bukkitConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("bukkit-settings")); org.bukkit.configuration.file.YamlConfiguration spigotConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("spigot-settings")); @@ -35,10 +35,10 @@ index bc391d27399d8c22e78735ca39aa8ab45efb6413..4ef8eaad4485a2ee920f80556f9dda04 if (optionset.has("initSettings")) { // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 776d397fc31db121fa933a2ae2b4f1589fc10247..efe25d3894f3ad000257c72d9a5e06ef22446d41 100644 +index ecb9b15939ab8ff6cfa7e15457701428019b443a..ea383b56c5985069fb55e5a2252510e45783df7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -657,4 +657,9 @@ public class PurpurConfig { +@@ -571,4 +571,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/unapplied-server/0303-Configurable-villager-search-radius.patch b/patches/server/0295-Configurable-villager-search-radius.patch similarity index 100% rename from patches/unapplied-server/0303-Configurable-villager-search-radius.patch rename to patches/server/0295-Configurable-villager-search-radius.patch From ca265bae645317df9a08b4f2b0b00d58858da9bb Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 02:29:56 -0700 Subject: [PATCH 105/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a3c4dc9 Fix the incorrect codec usage in the Style convert (#10465) PaperMC/Paper@e16263c Fix firework meta NPE PaperMC/Paper@306b203 more fixes for ItemMeta relating to components --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index feaa82d60..433db491b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.5-R0.1-SNAPSHOT mcVersion = 1.20.5 -paperCommit = f187fd696aa2bec774b1199b2e3c6937dd12937f +paperCommit = 306b203c2d06979e94eeab36d21c6a9596254d56 org.gradle.caching = true org.gradle.parallel = true From 9d2dae3c9c48655fffb633d8f82b52f3110cb021 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 02:36:05 -0700 Subject: [PATCH 106/148] missed these in the build file --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 68aec3b5b..be3817628 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,6 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java `maven-publish` - id("com.github.johnrengelman.shadow") version "8.1.1" apply false id("io.papermc.paperweight.patcher") version "1.6.2" } @@ -43,6 +42,7 @@ subprojects { repositories { mavenCentral() maven(paperMavenPublicUrl) + maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") // TODO - Adventure snapshot maven("https://jitpack.io") } } From dc9993f4d1676a6cbec704cf353b537c945d73d8 Mon Sep 17 00:00:00 2001 From: Krakenied <46192742+Krakenied@users.noreply.github.com> Date: Sun, 28 Apr 2024 22:23:25 +0200 Subject: [PATCH 107/148] Fix compilation issues (#1509) --- gradle.properties | 2 +- .../0015-ItemStack-convenience-methods.patch | 70 +----------- patches/api/0049-Add-hover-lines-API.patch | 4 +- patches/server/0006-Ridables.patch | 10 +- ...g-mends-most-damages-equipment-first.patch | 4 +- .../0058-Implement-elytra-settings.patch | 12 +- .../0077-Dispensers-place-anvils-option.patch | 4 +- .../server/0092-Infinity-bow-settings.patch | 4 +- ...e-entity-breeding-times-configurable.patch | 16 +++ ...mes-from-item-forms-of-entities-to-e.patch | 10 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 4 +- patches/server/0114-Implement-TPSBar.patch | 12 +- .../server/0116-PlayerBookTooLargeEvent.patch | 4 +- .../0121-Farmland-trampling-changes.patch | 6 +- .../server/0123-Fix-stuck-in-portals.patch | 4 +- .../server/0128-Dont-run-with-scissors.patch | 8 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 4 +- ...0139-Sneak-to-bulk-process-composter.patch | 94 ++++++++-------- .../0142-Allow-infinity-on-crossbows.patch | 4 +- ...nfig-for-unverified-username-message.patch | 4 +- ...omizable-sleeping-actionbar-messages.patch | 4 +- patches/server/0190-Add-compass-command.patch | 4 +- ...t-right-click-to-use-exp-for-mending.patch | 4 +- .../server/0217-Signs-allow-color-codes.patch | 4 +- ...rable-valid-characters-for-usernames.patch | 12 +- ...-Shears-can-have-looting-enchantment.patch | 4 +- .../0239-Anvil-repair-damage-options.patch | 103 +++++++++--------- ...e-turtle-egg-trampling-with-feather-.patch | 6 +- ...248-Enchantment-Table-Persists-Lapis.patch | 8 +- ...o-disable-kick-for-out-of-order-chat.patch | 4 +- patches/server/0256-Remove-Timings.patch | 8 +- .../server/0257-Remove-Mojang-Profiler.patch | 8 +- ...65-Implement-ram-and-rambar-commands.patch | 4 +- .../0269-Milk-Keeps-Beneficial-Effects.patch | 4 +- .../server/0286-Shears-can-defuse-TNT.patch | 4 +- patches/server/0287-Explorer-Map-API.patch | 4 +- 36 files changed, 207 insertions(+), 258 deletions(-) diff --git a/gradle.properties b/gradle.properties index 433db491b..abbe3e3d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.5-R0.1-SNAPSHOT mcVersion = 1.20.5 -paperCommit = 306b203c2d06979e94eeab36d21c6a9596254d56 +paperCommit = 0f3e324152d03fdeb11ea8762325fc600d1e7fcb org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0015-ItemStack-convenience-methods.patch b/patches/api/0015-ItemStack-convenience-methods.patch index 1fa7d92b9..4da624c03 100644 --- a/patches/api/0015-ItemStack-convenience-methods.patch +++ b/patches/api/0015-ItemStack-convenience-methods.patch @@ -50,10 +50,10 @@ index 82d009c0bbe4b3026a535e02d6e0ed20c7bd525d..0366400fe6dea7af40badaa3335b49ff + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 84a7bf0936d35bf42b5ed038d295d5c31740f472..4eb8ade7116b6271baf5b99917c66c7156d8e594 100644 +index 84a7bf0936d35bf42b5ed038d295d5c31740f472..6e9b4cbc81878616b1c48add5db534286d267b05 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; +@@ -17,6 +17,17 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.material.MaterialData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,12 +67,11 @@ index 84a7bf0936d35bf42b5ed038d295d5c31740f472..4eb8ade7116b6271baf5b99917c66c71 +import org.bukkit.inventory.meta.Repairable; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataHolder; -+import com.destroystokyo.paper.Namespaced; +// Purpur end /** * Represents a stack of items. -@@ -1073,4 +1085,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1073,4 +1084,565 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player); } // Paper end - expose itemstack tooltip lines @@ -557,67 +556,6 @@ index 84a7bf0936d35bf42b5ed038d295d5c31740f472..4eb8ade7116b6271baf5b99917c66c71 + } + + /** -+ * Gets the collection of namespaced keys that the item can destroy in {@link org.bukkit.GameMode#ADVENTURE} -+ * -+ * @return Set of {@link com.destroystokyo.paper.Namespaced} -+ */ -+ @NotNull -+ public java.util.Set getDestroyableKeys() { -+ return getItemMeta().getDestroyableKeys(); -+ } -+ -+ /** -+ * Sets the collection of namespaced keys that the item can destroy in {@link org.bukkit.GameMode#ADVENTURE} -+ * -+ * @param canDestroy Collection of {@link com.destroystokyo.paper.Namespaced} -+ */ -+ public void setDestroyableKeys(@NotNull Collection canDestroy) { -+ ItemMeta itemMeta = getItemMeta(); -+ itemMeta.setDestroyableKeys(canDestroy); -+ setItemMeta(itemMeta); -+ } -+ -+ /** -+ * Gets the collection of namespaced keys that the item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} -+ * -+ * @return Set of {@link com.destroystokyo.paper.Namespaced} -+ */ -+ @NotNull -+ public java.util.Set getPlaceableKeys() { -+ return getItemMeta().getPlaceableKeys(); -+ } -+ -+ /** -+ * Sets the set of namespaced keys that the item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} -+ * -+ * @param canPlaceOn Collection of {@link com.destroystokyo.paper.Namespaced} -+ */ -+ @NotNull -+ public void setPlaceableKeys(@NotNull Collection canPlaceOn) { -+ ItemMeta itemMeta = getItemMeta(); -+ itemMeta.setPlaceableKeys(canPlaceOn); -+ setItemMeta(itemMeta); -+ } -+ -+ /** -+ * Checks for the existence of any keys that the item can be placed on -+ * -+ * @return true if this item has placeable keys -+ */ -+ public boolean hasPlaceableKeys() { -+ return hasItemMeta() && getItemMeta().hasPlaceableKeys(); -+ } -+ -+ /** -+ * Checks for the existence of any keys that the item can destroy -+ * -+ * @return true if this item has destroyable keys -+ */ -+ public boolean hasDestroyableKeys() { -+ return hasItemMeta() && getItemMeta().hasDestroyableKeys(); -+ } -+ -+ /** + * Repairs this item by 1 durability + */ + public void repair() { @@ -662,7 +600,7 @@ index 84a7bf0936d35bf42b5ed038d295d5c31740f472..4eb8ade7116b6271baf5b99917c66c71 + public boolean damage(int amount, boolean ignoreUnbreaking) { + Damageable damageable = (Damageable) getItemMeta(); + if (amount > 0) { -+ int unbreaking = getEnchantLevel(Enchantment.DURABILITY); ++ int unbreaking = getEnchantLevel(Enchantment.UNBREAKING); + int reduce = 0; + for (int i = 0; unbreaking > 0 && i < amount; ++i) { + if (reduceDamage(java.util.concurrent.ThreadLocalRandom.current(), unbreaking)) { diff --git a/patches/api/0049-Add-hover-lines-API.patch b/patches/api/0049-Add-hover-lines-API.patch index ae1b61647..052712ac8 100644 --- a/patches/api/0049-Add-hover-lines-API.patch +++ b/patches/api/0049-Add-hover-lines-API.patch @@ -24,10 +24,10 @@ index 98a970a6582dca22e719a31559c7becea4725cb2..1cd2962ceb4fa0a0a3e28a09fa4ccef5 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 4eb8ade7116b6271baf5b99917c66c7156d8e594..80e0978c032ccbe9546515e1fe29de5820c7e7f0 100644 +index 6e9b4cbc81878616b1c48add5db534286d267b05..e497575b2f44bb8b3bb6fdda3ae2f5247cbb4679 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -1706,5 +1706,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1644,5 +1644,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat } return random.nextInt(unbreaking + 1) > 0; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 0ca6b0490..ecd2f7590 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -6248,7 +6248,7 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000000000000000000000000000000000..b7e3994879a2b1de0c504f122b0c3c3229e4c356 +index 0000000000000000000000000000000000000000..89c476c740b4efb4f44c1dcd384b908626d96780 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -0,0 +1,100 @@ @@ -6296,7 +6296,7 @@ index 0000000000000000000000000000000000000000..b7e3994879a2b1de0c504f122b0c3c32 + Vec3 mot = this.getDeltaMovement(); + HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); + -+ this.preOnHit(hitResult); ++ this.preHitTargetOrDeflectSelf(hitResult); + + double x = this.getX() + mot.x; + double y = this.getY() + mot.y; @@ -6354,7 +6354,7 @@ index 0000000000000000000000000000000000000000..b7e3994879a2b1de0c504f122b0c3c32 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000000000000000000000000000000000..bc139e518c8214246c3f514b64f987bdd5de6f23 +index 0000000000000000000000000000000000000000..c0b7e0eeffdf31b88662232b07944bf3e6fa2148 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -0,0 +1,114 @@ @@ -6404,7 +6404,7 @@ index 0000000000000000000000000000000000000000..bc139e518c8214246c3f514b64f987bd + Vec3 mot = this.getDeltaMovement(); + HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); + -+ this.preOnHit(hitResult); ++ this.preHitTargetOrDeflectSelf(hitResult); + + double x = this.getX() + mot.x; + double y = this.getY() + mot.y; @@ -6454,7 +6454,7 @@ index 0000000000000000000000000000000000000000..bc139e518c8214246c3f514b64f987bd + if (canGrief || (target instanceof LivingEntity && !(target instanceof ArmorStand))) { + boolean hurt = target.hurt(target.damageSources().mobProjectile(this, (LivingEntity) shooter), level().purpurConfig.phantomFlameDamage); + if (hurt && level().purpurConfig.phantomFlameFireTime > 0) { -+ target.setSecondsOnFire(level().purpurConfig.phantomFlameFireTime); ++ target.igniteForSeconds(level().purpurConfig.phantomFlameFireTime); + } + } + } diff --git a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch index d93d2cf9b..e73241890 100644 --- a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch @@ -18,7 +18,7 @@ index a207a31d80a302dbdfe80f8727222542d3a78da2..7ca70e9ddda24e2fe661c7b13fa439a6 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 36e3415b9312d3a80c9f5e1c36b42b7ea30c31c5..f47575bb8cc5e31ef3583cf6ed94604c1da60932 100644 +index 36e3415b9312d3a80c9f5e1c36b42b7ea30c31c5..9df30e61d97d7c403adede631df2a6825b986496 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -636,6 +636,16 @@ public final class ItemStack implements DataComponentHolder { @@ -28,7 +28,7 @@ index 36e3415b9312d3a80c9f5e1c36b42b7ea30c31c5..f47575bb8cc5e31ef3583cf6ed94604c + // Purpur start + public float getDamagePercent() { + if (isDamaged()) { -+ return (float) getDamageValue() / (float) getItem().getMaxDamage(); ++ return (float) getDamageValue() / (float) getMaxDamage(); + } else { + return 0F; + } diff --git a/patches/server/0058-Implement-elytra-settings.patch b/patches/server/0058-Implement-elytra-settings.patch index fbea9a72b..7056a98c0 100644 --- a/patches/server/0058-Implement-elytra-settings.patch +++ b/patches/server/0058-Implement-elytra-settings.patch @@ -27,7 +27,7 @@ index ed8833ed95584cdf9be2b931915277c04beac6ee..9a2725e3f61a7d37943518cc760b1785 this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java -index 218f2f085309f04438f8b07bc41cf242583db2dc..c6e8ce19fde69316d9523c90105660992f728cfb 100644 +index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6978015dd 100644 --- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java +++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java @@ -65,6 +65,14 @@ public class FireworkRocketItem extends Item implements ProjectileItem { @@ -38,7 +38,7 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..c6e8ce19fde69316d9523c9010566099 + if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) { + ItemStack chestItem = user.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.CHEST); + if (chestItem.getItem() == Items.ELYTRA) { -+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, (entityliving) -> entityliving.broadcastBreakEvent(net.minecraft.world.entity.EquipmentSlot.CHEST)); ++ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, net.minecraft.world.entity.EquipmentSlot.CHEST); + } + } + // Purpur end @@ -46,7 +46,7 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..c6e8ce19fde69316d9523c9010566099 itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index f47575bb8cc5e31ef3583cf6ed94604c1da60932..206f6409a17eb0db1ced8c7a90127ed375329a44 100644 +index 9df30e61d97d7c403adede631df2a6825b986496..a1bf3368450386015c64b711c01471dad8dc5ccd 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -663,7 +663,7 @@ public final class ItemStack implements DataComponentHolder { @@ -64,7 +64,7 @@ index f47575bb8cc5e31ef3583cf6ed94604c1da60932..206f6409a17eb0db1ced8c7a90127ed3 Item item = this.getItem(); + // Purpur start + if (item == Items.ELYTRA) { -+ setDamageValue(item.getMaxDamage() - 1); ++ setDamageValue(getMaxDamage() - 1); + return; + } + // Purpur end @@ -72,7 +72,7 @@ index f47575bb8cc5e31ef3583cf6ed94604c1da60932..206f6409a17eb0db1ced8c7a90127ed3 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..129f829cc238ff2f6586511f80eb6da2e8c7ece4 100644 +index 47de500fddb0716d142f8f5876a82a95afaa06fa..b094f4ec513194e10442156d8f7f2205da2384ac 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 { @@ -83,7 +83,7 @@ index 47de500fddb0716d142f8f5876a82a95afaa06fa..129f829cc238ff2f6586511f80eb6da2 + // Purpur start + ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST); + if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) { -+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, (entity) -> entity.broadcastBreakEvent(EquipmentSlot.CHEST)); ++ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, EquipmentSlot.CHEST); + } + // Purpur end + diff --git a/patches/server/0077-Dispensers-place-anvils-option.patch b/patches/server/0077-Dispensers-place-anvils-option.patch index 50544d0c1..0dbf632e9 100644 --- a/patches/server/0077-Dispensers-place-anvils-option.patch +++ b/patches/server/0077-Dispensers-place-anvils-option.patch @@ -5,7 +5,7 @@ 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..c15f3430e767e54c4953e18bb9e8dcb6283caadf 100644 +index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..68236139e3571791b891dbbef6e3ee20031e16d9 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 { @@ -16,7 +16,7 @@ index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..c15f3430e767e54c4953e18bb9e8dcb6 + DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() { + @Override + public ItemStack execute(BlockSource dispenser, ItemStack stack) { -+ Level level = dispenser.level(); ++ net.minecraft.world.level.Level level = dispenser.level(); + if (!level.purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack); + Direction facing = dispenser.blockEntity().getBlockState().getValue(DispenserBlock.FACING); + BlockPos pos = dispenser.pos().relative(facing); diff --git a/patches/server/0092-Infinity-bow-settings.patch b/patches/server/0092-Infinity-bow-settings.patch index 320c752c7..977483671 100644 --- a/patches/server/0092-Infinity-bow-settings.patch +++ b/patches/server/0092-Infinity-bow-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Infinity bow settings diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 5ca843df5b4caa668953e5e36a9b20fabeb35046..9553e68f0e34de41a3f337dd4fa45d5103def8bb 100644 +index 5ca843df5b4caa668953e5e36a9b20fabeb35046..4ae6b98b6a0d41e949b055f0678200a672a1df38 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java @@ -29,7 +29,7 @@ public class BowItem extends ProjectileWeaponItem { @@ -22,7 +22,7 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..9553e68f0e34de41a3f337dd4fa45d51 ItemStack itemStack = user.getItemInHand(hand); boolean bl = !user.getProjectile(itemStack).isEmpty(); - if (!user.hasInfiniteMaterials() && !bl) { -+ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY_ARROWS, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) { ++ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) { return InteractionResultHolder.fail(itemStack); } else { user.startUsingItem(hand); diff --git a/patches/server/0099-Make-entity-breeding-times-configurable.patch b/patches/server/0099-Make-entity-breeding-times-configurable.patch index 5babea8a2..1c94c6bb1 100644 --- a/patches/server/0099-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0099-Make-entity-breeding-times-configurable.patch @@ -299,6 +299,22 @@ index 8aaac4e86ec6d9c40999f6198cda7d367ece54e3..4212c3921a4059c539ca37f9609ef505 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); +diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +index b38281f963377cc82b360e8457da7cad033b8c36..29412208e329e9fc211b844822a2fc3328a5bc89 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java ++++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +@@ -469,4 +469,11 @@ public class Armadillo extends Animal { + return this.animationDuration; + } + } ++ ++ // Purpur start ++ @Override ++ public int getPurpurBreedTime() { ++ return 6000; ++ } ++ // Purpur end + } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java index 414ff28670c3d36dc78e3df4d39b6d4eb3ec1e77..97ba327398d84db09c81cee860b40642b428ea48 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java diff --git a/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch index f473a3918..10be57c75 100644 --- a/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -37,7 +37,7 @@ 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..0ac22b77f021b4ab40cabd19132fec5a0cbf4f3e 100644 +index 40e7112669abb58a0ab6df1846afec3979e95e55..183464f202d4c2774840edfde1dfcab44d05d0d3 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 { @@ -67,7 +67,7 @@ index 0b23e05f936cab7a9867828c2d69417cfde1d2ce..259c3abb877ab38bc28ebdca5672c1a8 + // Purpur start + final ItemStack boat = new ItemStack(this.getDropItem()); + if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { -+ boat.set(DataComponents.CUSTOM_NAME, null); ++ boat.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null); + } + return boat; + // Purpur end diff --git a/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 1642e6201..5ffeb5da5 100644 --- a/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -73,7 +73,7 @@ index 2ade08d1466660ee1787fa97908002ef56389712..4fa4ec34963730507253182cad1c2bf0 if (itemstack.isEmpty()) { inventorysubcontainer.setItem(j, ItemStack.EMPTY); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java -index 8508ac7de8cda3127b73e11ff4aee62502e65ead..973518f939f5cd1b57589cbbbb01f199e5ebe73c 100644 +index 8508ac7de8cda3127b73e11ff4aee62502e65ead..b1544e028d5a9b84b944e1fb5a12bb163067fb54 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java @@ -59,6 +59,12 @@ public class TradeWithVillager extends Behavior { @@ -81,7 +81,7 @@ index 8508ac7de8cda3127b73e11ff4aee62502e65ead..973518f939f5cd1b57589cbbbb01f199 } + // Purpur start -+ if (world.purpurConfig.villagerClericsFarmWarts && world.purpurConfig.villagerClericFarmersThrowWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC && entity.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getMaxStackSize() / 2) { ++ if (world.purpurConfig.villagerClericsFarmWarts && world.purpurConfig.villagerClericFarmersThrowWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC && entity.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getDefaultMaxStackSize() / 2) { + throwHalfStack(entity, ImmutableSet.of(Items.NETHER_WART), villager); + } + // Purpur end diff --git a/patches/server/0114-Implement-TPSBar.patch b/patches/server/0114-Implement-TPSBar.patch index ff8040e34..24bf45060 100644 --- a/patches/server/0114-Implement-TPSBar.patch +++ b/patches/server/0114-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index 6d47aa73788eef78aa6714384db879b4e907de9b..8a132fcdeb620d2e7f1c0c8b9e592ff2 } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..fabce29a8e4eefede38dabd009c0ab9f9c1dc842 100644 +index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..4077269113e6f2369194e2372d415f2f6737317c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -299,6 +299,7 @@ public class ServerPlayer extends Player { @@ -60,15 +60,7 @@ index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..fabce29a8e4eefede38dabd009c0ab9f } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -1182,6 +1184,7 @@ public class ServerPlayer extends Player { - } - } - -+ if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur - } - - @Override -@@ -2986,5 +2989,13 @@ public class ServerPlayer extends Player { +@@ -2986,5 +2988,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } diff --git a/patches/server/0116-PlayerBookTooLargeEvent.patch b/patches/server/0116-PlayerBookTooLargeEvent.patch index fdf759227..65c55b622 100644 --- a/patches/server/0116-PlayerBookTooLargeEvent.patch +++ b/patches/server/0116-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e467ad2abcc32d86821ee3f99c82460095b40fba..9274a9eb5597a84519dd81367fa6f42a20d7e56c 100644 +index e467ad2abcc32d86821ee3f99c82460095b40fba..d58520d7c4da02eafc91571ca262430929a37cc0 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1183,10 +1183,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -13,7 +13,7 @@ index e467ad2abcc32d86821ee3f99c82460095b40fba..9274a9eb5597a84519dd81367fa6f42a double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; + // Purpur start -+ int slot = packet.getSlot(); ++ int slot = packet.slot(); + ItemStack itemstack = Inventory.isHotbarSlot(slot) || slot == Inventory.SLOT_OFFHAND ? this.player.getInventory().getItem(slot) : ItemStack.EMPTY; + // Purpur end for (String testString : pageList) { diff --git a/patches/server/0121-Farmland-trampling-changes.patch b/patches/server/0121-Farmland-trampling-changes.patch index 66ce2dab9..98a7c697c 100644 --- a/patches/server/0121-Farmland-trampling-changes.patch +++ b/patches/server/0121-Farmland-trampling-changes.patch @@ -12,7 +12,7 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..6b12864f323202a1202a59f66412b3d5be28023f 100644 +index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -126,12 +126,20 @@ public class FarmBlock extends Block { @@ -28,8 +28,8 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..6b12864f323202a1202a59f66412b3d5 } } + if (world.purpurConfig.farmlandTramplingFeatherFalling) { -+ Iterator armor = entity.getArmorSlots().iterator(); -+ if (armor.hasNext() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FALL_PROTECTION, armor.next()) >= (int) entity.fallDistance) { ++ Iterator armor = ((LivingEntity) entity).getArmorSlots().iterator(); ++ if (armor.hasNext() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FEATHER_FALLING, armor.next()) >= (int) entity.fallDistance) { + return; + } + } diff --git a/patches/server/0123-Fix-stuck-in-portals.patch b/patches/server/0123-Fix-stuck-in-portals.patch index 3f91f8331..63c848ed3 100644 --- a/patches/server/0123-Fix-stuck-in-portals.patch +++ b/patches/server/0123-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fabce29a8e4eefede38dabd009c0ab9f9c1dc842..9bf6457ed689d38393c17732dc9229d9fc297584 100644 +index 4077269113e6f2369194e2372d415f2f6737317c..c8f5c10952a8bf09a09604e76f7e3cc66a262b77 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1348,6 +1348,7 @@ public class ServerPlayer extends Player { +@@ -1347,6 +1347,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); diff --git a/patches/server/0128-Dont-run-with-scissors.patch b/patches/server/0128-Dont-run-with-scissors.patch index 7b729b082..8a35169f6 100644 --- a/patches/server/0128-Dont-run-with-scissors.patch +++ b/patches/server/0128-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9274a9eb5597a84519dd81367fa6f42a20d7e56c..fea36f5e4f64281459d62f4a6a4a7dd129706150 100644 +index d58520d7c4da02eafc91571ca262430929a37cc0..939234ccd803f173afe74651a92ff3a1c5b29b85 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1633,6 +1633,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -22,14 +22,16 @@ index 9274a9eb5597a84519dd81367fa6f42a20d7e56c..fea36f5e4f64281459d62f4a6a4a7dd1 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1672,6 +1679,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1672,6 +1679,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes + + // Purpur start + public boolean isScissor(ItemStack stack) { -+ return stack.is(Items.SHEARS) && (stack.getTag() == null || stack.getTag().getInt("CustomModelData") == 0); ++ if (!stack.is(Items.SHEARS)) return false; ++ net.minecraft.world.item.component.CustomModelData customModelData = stack.get(net.minecraft.core.component.DataComponents.CUSTOM_MODEL_DATA); ++ return customModelData == null || customModelData.value() == 0; + } + // Purpur end + diff --git a/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch index 216674887..b122c30d2 100644 --- a/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0131-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9bf6457ed689d38393c17732dc9229d9fc297584..0957b0fba3ffbc3571e5aef7eb2b550dab19c0cf 100644 +index c8f5c10952a8bf09a09604e76f7e3cc66a262b77..0da3b7bb3b597002b5e4bbc9d892a8bf4d2d6ccb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1505,7 +1505,7 @@ public class ServerPlayer extends Player { +@@ -1504,7 +1504,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/server/0139-Sneak-to-bulk-process-composter.patch b/patches/server/0139-Sneak-to-bulk-process-composter.patch index e97cc49c7..6fa69c869 100644 --- a/patches/server/0139-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0139-Sneak-to-bulk-process-composter.patch @@ -18,72 +18,74 @@ index 5cedce1f432f6b809b25269242a16477682c824f..61ff2f6c09251da8c34fd653020cd4d3 if (iteminteractionresult.consumesAction()) { diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -index d3d12f9114173f4971f95d7ef895a4374705bd3f..750c9043c2b70b18fb34df1e856e3cbb6c651770 100644 +index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0417919cf 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -@@ -238,16 +238,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -237,18 +237,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { + int i = (Integer) state.getValue(ComposterBlock.LEVEL); if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(stack.getItem())) { - if (i < 7 && !world.isClientSide) { +- if (i < 7 && !world.isClientSide) { - BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack); - // Paper start - handle cancelled events - if (iblockdata1 == null) { -+ // Purpur start -+ BlockState newState = process(stack, state, world, pos, player, i); -+ if (newState == null) { - return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; - } +- return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; +- } - // Paper end - - world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); - stack.consume(1, player); -+ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown()) { -+ BlockState oldState; -+ int oldCount, newCount, oldLevel, newLevel; -+ do { -+ oldState = newState; -+ newState = process(stack, state, world, pos, player, i); -+ oldCount = stack.getCount(); -+ if (newState == null) { -+ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; -+ } -+ oldLevel = oldState.getValue(ComposterBlock.LEVEL); -+ newCount = stack.getCount(); -+ newLevel = newState.getValue(ComposterBlock.LEVEL); -+ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); -+ } ++ // Purpur start - sneak to bulk process composter ++ BlockState newState = process(i, player, state, world, pos, stack); ++ if (newState == null) { ++ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; } ++ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown() && newState != state) { ++ BlockState oldState; ++ int oldCount, newCount, oldLevel, newLevel; ++ do { ++ oldState = newState; ++ oldCount = stack.getCount(); ++ oldLevel = oldState.getValue(ComposterBlock.LEVEL); ++ newState = process(oldLevel, player, oldState, world, pos, stack); ++ if (newState == null) { ++ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; ++ } ++ newCount = stack.getCount(); ++ newLevel = newState.getValue(ComposterBlock.LEVEL); ++ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); ++ } ++ // Purpur end return ItemInteractionResult.sidedSuccess(world.isClientSide); -@@ -255,6 +265,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { - return super.useItemOn(stack, state, world, pos, player, hand, hit); + } else { +@@ -256,6 +265,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { } } -+ private static BlockState process(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, int i) { -+ // Purpur end -+ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack); -+ // Paper start - handle cancelled events -+ if (iblockdata1 == null) { -+ return null; // Purpur -+ } -+ // Paper end -+ -+ world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); -+ player.awardStat(Stats.ITEM_USED.get(stack.getItem())); -+ stack.consume(1, player); -+ // Purpur start -+ // } -+ // -+ // return ItemInteractionResult.sidedSuccess(world.isClientSide); -+ // } else { -+ // return super.useItemOn(stack, state, world, pos, player, hand, hit); -+ // } -+ // } -+ // Purpur end ++ // Purpur start - sneak to bulk process composter ++ private static @Nullable BlockState process(int level, Player player, BlockState state, Level world, BlockPos pos, ItemStack stack) { ++ if (level < 7 && !world.isClientSide) { ++ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack); ++ // Paper start - handle cancelled events ++ if (iblockdata1 == null) { ++ return null; ++ } ++ // Paper end ++ ++ world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); ++ player.awardStat(Stats.ITEM_USED.get(stack.getItem())); ++ stack.consume(1, player); ++ return iblockdata1; ++ } ++ return state; ++ } ++ // Purpur end ++ @Override protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { + int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index cc365ef1a435c05639e1261bc349df3517e4a44b..5739e18827d77dc594894f7cf8d7ceb9f7b83df1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0142-Allow-infinity-on-crossbows.patch b/patches/server/0142-Allow-infinity-on-crossbows.patch index 334c97155..2cde30e49 100644 --- a/patches/server/0142-Allow-infinity-on-crossbows.patch +++ b/patches/server/0142-Allow-infinity-on-crossbows.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow infinity on crossbows diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 0f6504a7160bc304b3af554f8740c65e2987cd37..a3614405a92f26f19fb1df24f685cb7c081333db 100644 +index 0f6504a7160bc304b3af554f8740c65e2987cd37..dccad13405f2ea4d277ec9a56813f4b36106c0f1 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -107,7 +107,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -13,7 +13,7 @@ index 0f6504a7160bc304b3af554f8740c65e2987cd37..a3614405a92f26f19fb1df24f685cb7c } private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbow, boolean consume) { - List list = draw(crossbow, shooter.getProjectile(crossbow), shooter, consume); -+ List list = draw(crossbow, shooter.getProjectile(crossbow), shooter, (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, crossbow) > 0) || consume); ++ List list = draw(crossbow, shooter.getProjectile(crossbow), shooter, (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY, crossbow) > 0) || consume); // Paper end - Add EntityLoadCrossbowEvent if (!list.isEmpty()) { crossbow.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(list)); diff --git a/patches/server/0166-Config-for-unverified-username-message.patch b/patches/server/0166-Config-for-unverified-username-message.patch index 63fd2b717..9b847249e 100644 --- a/patches/server/0166-Config-for-unverified-username-message.patch +++ b/patches/server/0166-Config-for-unverified-username-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 765cf12c1558afd9686793b18388fc229c55d2d8..ad674e1be146614ba20e1f184b0f5cc30339593e 100644 +index b656741eb68adeb04bf995f1045902cb6bd5f2e7..3b4fadb37eafb2f7b0ce4d6b276d2fdaa8287521 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -309,7 +309,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -315,7 +315,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(s1)); // Spigot } else { diff --git a/patches/server/0185-Customizable-sleeping-actionbar-messages.patch b/patches/server/0185-Customizable-sleeping-actionbar-messages.patch index 90293642d..684fc8e4f 100644 --- a/patches/server/0185-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0185-Customizable-sleeping-actionbar-messages.patch @@ -38,10 +38,10 @@ index 1dc58b41d3963c2adc58e79cd6db7e146ac049ad..83ec2e31d81d6209953252a3780552c3 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 397448063fb770f736f9c8bb7061852d3212484d..15dc4691ce604fd7f32b635590b32f4afec8bf2a 100644 +index 65d6ca59fca1ece4c2867bc297c926e3c480cc06..2480f449d8ceeb9ac6ef55163d8e649271f5c1c0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1546,7 +1546,19 @@ public class ServerPlayer extends Player { +@@ -1545,7 +1545,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0190-Add-compass-command.patch b/patches/server/0190-Add-compass-command.patch index 3fd9933eb..078bb1e0a 100644 --- a/patches/server/0190-Add-compass-command.patch +++ b/patches/server/0190-Add-compass-command.patch @@ -17,7 +17,7 @@ index 26c9254cef922a78deac3053f93c60037f19d31f..67ec90a2a05269a5912b3c8e64d6d416 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 15dc4691ce604fd7f32b635590b32f4afec8bf2a..670aa56c1b7c9e5fabda45b6a048a6cf6084a7d0 100644 +index 2480f449d8ceeb9ac6ef55163d8e649271f5c1c0..120a42a6057a9639b66be39099715a8bad1e06b5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -300,6 +300,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 15dc4691ce604fd7f32b635590b32f4afec8bf2a..670aa56c1b7c9e5fabda45b6a048a6cf } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -3011,5 +3015,13 @@ public class ServerPlayer extends Player { +@@ -3010,5 +3014,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch index e2596f502..c88028869 100644 --- a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index a810eaa7dc319f5ea69b239190ae91838bfad4ec..6d194797d8fe2cd6e5652d596f4bc66f + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fea36f5e4f64281459d62f4a6a4a7dd129706150..7c96644ee70ea061a5eb29809c2c5cc1bf55e194 100644 +index 939234ccd803f173afe74651a92ff3a1c5b29b85..395ad65503c87250c0e2fa8112208f26fd3681be 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2034,6 +2034,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2036,6 +2036,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0217-Signs-allow-color-codes.patch b/patches/server/0217-Signs-allow-color-codes.patch index 3c202a537..1fc5d7f64 100644 --- a/patches/server/0217-Signs-allow-color-codes.patch +++ b/patches/server/0217-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 670aa56c1b7c9e5fabda45b6a048a6cf6084a7d0..85f58f5449ee63a7f592971769b497e521921fcc 100644 +index 120a42a6057a9639b66be39099715a8bad1e06b5..4c603f774931b9d144420a115ad324bcb2eae26e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1684,6 +1684,7 @@ public class ServerPlayer extends Player { +@@ -1683,6 +1683,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { diff --git a/patches/server/0225-Configurable-valid-characters-for-usernames.patch b/patches/server/0225-Configurable-valid-characters-for-usernames.patch index 473ae940d..a201a978b 100644 --- a/patches/server/0225-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0225-Configurable-valid-characters-for-usernames.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/util/StringUtil.java b/src/main/java/net/minecraft/util/StringUtil.java -index ae7ef47446c15b8a6878dd2d31b60cd0670eaf83..118841518668c82f0031ec97fd89819a06f72c6b 100644 +index 0bd191acb9596d3aa21c337230d26f09d26f6888..20211f40aeeade9217ece087688974bdf55afc56 100644 --- a/src/main/java/net/minecraft/util/StringUtil.java +++ b/src/main/java/net/minecraft/util/StringUtil.java -@@ -64,6 +64,7 @@ public class StringUtil { - } +@@ -69,6 +69,7 @@ public class StringUtil { - public static boolean isValidPlayerName(String name) { + // Paper start - Username validation + public static boolean isReasonablePlayerName(final String name) { + if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(name).matches(); // Purpur - // Paper start - username validation overriding - if (name == null || name.isEmpty() || name.length() > 16) { + if (name.isEmpty() || name.length() > 16) { return false; + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0226-Shears-can-have-looting-enchantment.patch b/patches/server/0226-Shears-can-have-looting-enchantment.patch index 978576f5f..6db91f282 100644 --- a/patches/server/0226-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0226-Shears-can-have-looting-enchantment.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index a024c697a65bbab27408da1d6a75e531d9719b47..64bbb3da8a75a90d85cdd3ac90a95c670ee032ae 100644 +index a024c697a65bbab27408da1d6a75e531d9719b47..e4fab82b369f2c2ea0d8c8acd814d06140d551fc 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java @@ -105,7 +105,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { @@ -13,7 +13,7 @@ index a024c697a65bbab27408da1d6a75e531d9719b47..64bbb3da8a75a90d85cdd3ac90a95c67 // CraftBukkit start // Paper start - Add drops to shear events - org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops()); -+ org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, CraftItemStack.asNMSCopy(craftItem)))); // Purpur ++ org.bukkit.event.block.BlockShearEntityEvent event = CraftEventFactory.callBlockShearEntityEvent(entityliving, bukkitBlock, craftItem, ishearable.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, CraftItemStack.asNMSCopy(craftItem)))); // Purpur if (event.isCancelled()) { // Paper end - Add drops to shear events continue; diff --git a/patches/server/0239-Anvil-repair-damage-options.patch b/patches/server/0239-Anvil-repair-damage-options.patch index e1c39b8fd..cf234ae22 100644 --- a/patches/server/0239-Anvil-repair-damage-options.patch +++ b/patches/server/0239-Anvil-repair-damage-options.patch @@ -5,64 +5,63 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 923357251ad950ec4f893e8771fcfa99de8a60c5..9273db1b30398b3d170df562dfeff040c2b14a92 100644 +index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a9257519e 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -@@ -61,6 +61,54 @@ public class AnvilBlock extends FallingBlock { +@@ -59,6 +59,53 @@ public class AnvilBlock extends FallingBlock { + return this.defaultBlockState().setValue(FACING, ctx.getHorizontalDirection().getClockWise()); + } ++ // Purpur start - repairable/damageable anvils ++ @Override ++ protected net.minecraft.world.ItemInteractionResult useItemOn(final net.minecraft.world.item.ItemStack stack, final BlockState state, final Level world, final BlockPos pos, final Player player, final net.minecraft.world.InteractionHand hand, final BlockHitResult hit) { ++ if (world.purpurConfig.anvilRepairIngotsAmount > 0 && stack.is(net.minecraft.world.item.Items.IRON_INGOT)) { ++ if (stack.getCount() < world.purpurConfig.anvilRepairIngotsAmount) { ++ // not enough iron ingots, play "error" sound and consume ++ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); ++ return net.minecraft.world.ItemInteractionResult.CONSUME; ++ } ++ if (state.is(Blocks.DAMAGED_ANVIL)) { ++ world.setBlock(pos, Blocks.CHIPPED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); ++ } else if (state.is(Blocks.CHIPPED_ANVIL)) { ++ world.setBlock(pos, Blocks.ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); ++ } else if (state.is(Blocks.ANVIL)) { ++ // anvil is already fully repaired, play "error" sound and consume ++ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); ++ return net.minecraft.world.ItemInteractionResult.CONSUME; ++ } ++ if (!player.getAbilities().instabuild) { ++ stack.shrink(world.purpurConfig.anvilRepairIngotsAmount); ++ } ++ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_PLACE, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); ++ return net.minecraft.world.ItemInteractionResult.CONSUME; ++ } ++ if (world.purpurConfig.anvilDamageObsidianAmount > 0 && stack.is(net.minecraft.world.item.Items.OBSIDIAN)) { ++ if (stack.getCount() < world.purpurConfig.anvilDamageObsidianAmount) { ++ // not enough obsidian, play "error" sound and consume ++ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); ++ return net.minecraft.world.ItemInteractionResult.CONSUME; ++ } ++ if (state.is(Blocks.DAMAGED_ANVIL)) { ++ world.destroyBlock(pos, false); ++ } else if (state.is(Blocks.CHIPPED_ANVIL)) { ++ world.setBlock(pos, Blocks.DAMAGED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); ++ } else if (state.is(Blocks.ANVIL)) { ++ world.setBlock(pos, Blocks.CHIPPED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); ++ } ++ if (!player.getAbilities().instabuild) { ++ stack.shrink(world.purpurConfig.anvilDamageObsidianAmount); ++ } ++ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_LAND, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); ++ return net.minecraft.world.ItemInteractionResult.CONSUME; ++ } ++ return net.minecraft.world.ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; ++ } ++ // Purpur end ++ @Override protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { -+ // Purpur start - repairable/damageable anvils -+ if (world.purpurConfig.anvilRepairIngotsAmount > 0) { -+ net.minecraft.world.item.ItemStack itemstack = player.getItemInHand(hand); -+ if (itemstack.is(net.minecraft.world.item.Items.IRON_INGOT)) { -+ if (itemstack.getCount() < world.purpurConfig.anvilRepairIngotsAmount) { -+ // not enough iron ingots, play "error" sound and consume -+ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); -+ return InteractionResult.CONSUME; -+ } -+ if (state.is(Blocks.DAMAGED_ANVIL)) { -+ world.setBlock(pos, Blocks.CHIPPED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); -+ } else if (state.is(Blocks.CHIPPED_ANVIL)) { -+ world.setBlock(pos, Blocks.ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); -+ } else if (state.is(Blocks.ANVIL)) { -+ // anvil is already fully repaired, play "error" sound and consume -+ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); -+ return InteractionResult.CONSUME; -+ } -+ if (!player.getAbilities().instabuild) { -+ itemstack.shrink(world.purpurConfig.anvilRepairIngotsAmount); -+ } -+ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_PLACE, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); -+ return InteractionResult.CONSUME; -+ } -+ } -+ if (world.purpurConfig.anvilDamageObsidianAmount > 0) { -+ net.minecraft.world.item.ItemStack itemstack = player.getItemInHand(hand); -+ if (itemstack.is(net.minecraft.world.item.Items.OBSIDIAN)) { -+ if (itemstack.getCount() < world.purpurConfig.anvilDamageObsidianAmount) { -+ // not enough obsidian, play "error" sound and consume -+ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_HIT, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); -+ return InteractionResult.CONSUME; -+ } -+ if (state.is(Blocks.DAMAGED_ANVIL)) { -+ world.destroyBlock(pos, false); -+ } else if (state.is(Blocks.CHIPPED_ANVIL)) { -+ world.setBlock(pos, Blocks.DAMAGED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); -+ } else if (state.is(Blocks.ANVIL)) { -+ world.setBlock(pos, Blocks.CHIPPED_ANVIL.defaultBlockState().setValue(FACING, state.getValue(FACING)), 3); -+ } -+ if (!player.getAbilities().instabuild) { -+ itemstack.shrink(world.purpurConfig.anvilDamageObsidianAmount); -+ } -+ world.playSound(null, pos, net.minecraft.sounds.SoundEvents.ANVIL_LAND, net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); -+ return InteractionResult.CONSUME; -+ } -+ } -+ // Purpur end if (world.isClientSide) { - return InteractionResult.SUCCESS; - } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 2b5475c0032171fec4a5e8a7b435168c5b95b17b..d00d9068134957fb76740e94e7cce055d8ea9f43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 4a6e93a01..a4cdca1b5 100644 --- a/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..c3df410f692219ef166a8b885980b23a2c79950d 100644 +index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd0d9518d7 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -219,7 +219,13 @@ public class TurtleEggBlock extends Block { @@ -14,8 +14,8 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..c3df410f692219ef166a8b885980b23a } - if (entity instanceof Player) return true; + if (world.purpurConfig.turtleEggsTramplingFeatherFalling) { -+ java.util.Iterator armor = entity.getArmorSlots().iterator(); -+ return !armor.hasNext() || net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FALL_PROTECTION, armor.next()) < (int) entity.fallDistance; ++ java.util.Iterator armor = ((LivingEntity) entity).getArmorSlots().iterator(); ++ return !armor.hasNext() || net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FEATHER_FALLING, armor.next()) < (int) entity.fallDistance; + } + if (entity instanceof Player) { + return true; diff --git a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch index a796d25b3..bedc13a85 100644 --- a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 5b3e33807e0e13480e3359c0cf067719e5749237..8a7cb30524c75d155c27571e32da6511e265cbf4 100644 +index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d432718806 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -14,7 +14,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..8a7cb30524c75d155c27571e32da6511 +// Purpur start +import net.minecraft.world.level.block.entity.BlockEntity; -+import net.minecraft.world.level.block.entity.EnchantmentTableBlockEntity; ++import net.minecraft.world.level.block.entity.EnchantingTableBlockEntity; +import org.bukkit.craftbukkit.entity.CraftHumanEntity; +// Purpur end + @@ -34,7 +34,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..8a7cb30524c75d155c27571e32da6511 + if (who.getHandle().level().purpurConfig.enchantmentTableLapisPersists) { + access.execute((level, pos) -> { + BlockEntity blockEntity = level.getBlockEntity(pos); -+ if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { ++ if (blockEntity instanceof EnchantingTableBlockEntity enchantmentTable) { + enchantmentTable.setLapis(this.getItem(1).getCount()); + } + }); @@ -52,7 +52,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..8a7cb30524c75d155c27571e32da6511 + access.execute((level, pos) -> { + if (level.purpurConfig.enchantmentTableLapisPersists) { + BlockEntity blockEntity = level.getBlockEntity(pos); -+ if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { ++ if (blockEntity instanceof EnchantingTableBlockEntity enchantmentTable) { + this.getSlot(1).set(new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis())); + } + } diff --git a/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch index 52d21411d..aef122660 100644 --- a/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7c96644ee70ea061a5eb29809c2c5cc1bf55e194..530421935473693681819073e1ce9a52cb275775 100644 +index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d06ccedf9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1696,7 +1696,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1698,7 +1698,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { diff --git a/patches/server/0256-Remove-Timings.patch b/patches/server/0256-Remove-Timings.patch index f947838cd..a7fb74752 100644 --- a/patches/server/0256-Remove-Timings.patch +++ b/patches/server/0256-Remove-Timings.patch @@ -632,10 +632,10 @@ index ae2b9732b2795ea7faec96af4c27ccb04f772307..a84a9218838fb42c49a00c0d5f28e9e4 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 530421935473693681819073e1ce9a52cb275775..5ae8b009e5ba2fc896e7f52b864aecafe4e892d4 100644 +index 7b28ec1c6d87bad32b46c6ac6cf9e97d06ccedf9..0b36f161f10bbc0a4afefe28b80ef1de1ef16b3b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2509,7 +2509,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2511,7 +2511,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -644,7 +644,7 @@ index 530421935473693681819073e1ce9a52cb275775..5ae8b009e5ba2fc896e7f52b864aecaf if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2519,7 +2519,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2521,7 +2521,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -653,7 +653,7 @@ index 530421935473693681819073e1ce9a52cb275775..5ae8b009e5ba2fc896e7f52b864aecaf return; } -@@ -2532,7 +2532,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2534,7 +2534,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { diff --git a/patches/server/0257-Remove-Mojang-Profiler.patch b/patches/server/0257-Remove-Mojang-Profiler.patch index 03afccdd0..0a010234b 100644 --- a/patches/server/0257-Remove-Mojang-Profiler.patch +++ b/patches/server/0257-Remove-Mojang-Profiler.patch @@ -826,10 +826,10 @@ index a84a9218838fb42c49a00c0d5f28e9e486fc7dac..f72af2feb74626abbdfbfd090c153574 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 85f58f5449ee63a7f592971769b497e521921fcc..054a8aff30181d1a568ad931eb150fc2992cac97 100644 +index 4c603f774931b9d144420a115ad324bcb2eae26e..93aac363b21d695f266c66ec58f4ac8d17d61611 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1318,7 +1318,7 @@ public class ServerPlayer extends Player { +@@ -1317,7 +1317,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -838,7 +838,7 @@ index 85f58f5449ee63a7f592971769b497e521921fcc..054a8aff30181d1a568ad931eb150fc2 worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1341,8 +1341,8 @@ public class ServerPlayer extends Player { +@@ -1340,8 +1340,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -849,7 +849,7 @@ index 85f58f5449ee63a7f592971769b497e521921fcc..054a8aff30181d1a568ad931eb150fc2 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1360,7 +1360,7 @@ public class ServerPlayer extends Player { +@@ -1359,7 +1359,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); diff --git a/patches/server/0265-Implement-ram-and-rambar-commands.patch b/patches/server/0265-Implement-ram-and-rambar-commands.patch index 3c1d70723..43a34adf0 100644 --- a/patches/server/0265-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0265-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index d3c42c19a051fb3a670e541fc746b55717192a91..13dfb3e506d50c0b191baf5d05bbfc28 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 054a8aff30181d1a568ad931eb150fc2992cac97..4404380383e9e78a70c4195dbb49aff76515441a 100644 +index 93aac363b21d695f266c66ec58f4ac8d17d61611..b4eaa50add793af326bdf19e98cc97f6b88d5496 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -301,6 +301,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 054a8aff30181d1a568ad931eb150fc2992cac97..4404380383e9e78a70c4195dbb49aff7 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3024,5 +3027,13 @@ public class ServerPlayer extends Player { +@@ -3023,5 +3026,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch index f0f24129a..74d9864a2 100644 --- a/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index def30f8c79a4244116f1b9d9ae1a9d06d0a38bce..319e33285b9ba1c65bab9cf2266a15aa0f24d002 100644 +index def30f8c79a4244116f1b9d9ae1a9d06d0a38bce..1f0b8e10e03a1c0aea99768d714325effd04861e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1154,6 +1154,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); -+ if (cause == EntityPotionEffectEvent.Cause.MILK && !this.level().purpurConfig.milkClearsBeneficialEffects && effect.getEffect().isBeneficial()) continue; // Purpur ++ if (cause == EntityPotionEffectEvent.Cause.MILK && !this.level().purpurConfig.milkClearsBeneficialEffects && effect.getEffect().value().isBeneficial()) continue; // Purpur EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; diff --git a/patches/server/0286-Shears-can-defuse-TNT.patch b/patches/server/0286-Shears-can-defuse-TNT.patch index 7f454b077..bf9cf7e65 100644 --- a/patches/server/0286-Shears-can-defuse-TNT.patch +++ b/patches/server/0286-Shears-can-defuse-TNT.patch @@ -8,7 +8,7 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index f1f352ec0e51f5db59254841a06c176c5a876fc9..ded6bacd7baf7e7c8aa225825c345aefd8d42aa9 100644 +index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778d6c56cdc 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -193,4 +193,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { @@ -28,7 +28,7 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..ded6bacd7baf7e7c8aa225825c345aef + new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.TNT)); + tntItem.setPickUpDelay(10); + -+ inHand.hurtAndBreak(1, player, entity -> entity.broadcastBreakEvent(hand)); ++ inHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(hand)); + level().addFreshEntity(tntItem, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CUSTOM); + + this.playSound(net.minecraft.sounds.SoundEvents.SHEEP_SHEAR); diff --git a/patches/server/0287-Explorer-Map-API.patch b/patches/server/0287-Explorer-Map-API.patch index c5d511c0f..b5f2c63e7 100644 --- a/patches/server/0287-Explorer-Map-API.patch +++ b/patches/server/0287-Explorer-Map-API.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..4704080612cb9d3f6338d158aba8078332b57c58 100644 +index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..608390ed36710a419de1542b80340dd3fcc7299c 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java @@ -195,6 +195,7 @@ public class MapItem extends ComplexItem { public static void renderBiomePreviewMap(ServerLevel world, ItemStack map) { MapItemSavedData mapItemSavedData = getSavedData(map, world); if (mapItemSavedData != null) { -+ worldmap.isExplorerMap = true; // Purpur ++ mapItemSavedData.isExplorerMap = true; // Purpur if (world.dimension() == mapItemSavedData.dimension) { int i = 1 << mapItemSavedData.scale; int j = mapItemSavedData.centerX; From 9e63d11b9c0988fad84a0502c9dcd5ecec73f543 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 14:13:21 -0700 Subject: [PATCH 108/148] fix lapis not persisting in enchantment table --- ...248-Enchantment-Table-Persists-Lapis.patch | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch index bedc13a85..fb79a5664 100644 --- a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0248-Enchantment-Table-Persists-Lapis.patch @@ -70,6 +70,29 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4 this.clearContainer(player, this.enchantSlots); }); } +diff --git a/src/main/java/net/minecraft/world/level/block/EnchantingTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantingTableBlock.java +index 151e856dda3aa262c846ce8793650ee582bfb749..be0ed8a14e5726d5fcea1864302b18fb75fde2b4 100644 +--- a/src/main/java/net/minecraft/world/level/block/EnchantingTableBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/EnchantingTableBlock.java +@@ -124,4 +124,18 @@ public class EnchantingTableBlock extends BaseEntityBlock { + protected boolean isPathfindable(BlockState state, PathComputationType type) { + return false; + } ++ ++ // Purpur start ++ @Override ++ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean moved) { ++ BlockEntity blockEntity = level.getBlockEntity(pos); ++ ++ if (level.purpurConfig.enchantmentTableLapisPersists && blockEntity instanceof EnchantingTableBlockEntity enchantmentTable) { ++ net.minecraft.world.Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.LAPIS_LAZULI, enchantmentTable.getLapis())); ++ level.updateNeighbourForOutputSignal(pos, this); ++ } ++ ++ super.onRemove(state, level, pos, newState, moved); ++ } ++ // Purpur end + } diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb9280831c0d0fb 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java From c9115d36557b6d2275c145f8950154465ccefe3d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 14:32:43 -0700 Subject: [PATCH 109/148] fix one punch man patch --- patches/server/0129-One-Punch-Man.patch | 31 ++++++++++--------- ...169-API-for-any-mob-to-burn-daylight.patch | 4 +-- .../0191-Toggle-for-kinetic-damage.patch | 4 +-- .../server/0257-Remove-Mojang-Profiler.patch | 14 ++++----- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/patches/server/0129-One-Punch-Man.patch b/patches/server/0129-One-Punch-Man.patch index 2822aac81..ad6b13756 100644 --- a/patches/server/0129-One-Punch-Man.patch +++ b/patches/server/0129-One-Punch-Man.patch @@ -5,26 +5,27 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..e8a92e4941ab7d638d3e3ac5ad8d6314bede17c0 100644 +index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..0b4384b6898ad591b8b9256b2427359474dd9c57 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2382,6 +2382,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2382,6 +2382,21 @@ public abstract class LivingEntity extends Entity implements Attackable { } } -+ // Purpur start -+ if (damagesource.getEntity() instanceof net.minecraft.world.entity.player.Player player && damagesource.getEntity().level().purpurConfig.creativeOnePunch) { -+ if (player.isCreative()) { -+ double attackDamage = 0; -+ for (AttributeModifier modifier : player.getMainHandItem().getAttributeModifiers(EquipmentSlot.MAINHAND).get(Attributes.ATTACK_DAMAGE)) { -+ attackDamage += modifier.getAmount(); -+ } -+ if (attackDamage == 0) { -+ this.setHealth(0); -+ } -+ } -+ } -+ // Purpur end ++ // Purpur start ++ if (damagesource.getEntity() instanceof net.minecraft.world.entity.player.Player player && damagesource.getEntity().level().purpurConfig.creativeOnePunch) { ++ if (player.isCreative()) { ++ double attackDamage; ++ net.minecraft.world.item.component.ItemAttributeModifiers itemattributemodifiers = player.getMainHandItem().getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, net.minecraft.world.item.component.ItemAttributeModifiers.EMPTY); ++ ++ attackDamage = itemattributemodifiers.compute(this.getAttributeBaseValue(Attributes.ATTACK_DAMAGE), EquipmentSlot.MAINHAND); ++ ++ if (attackDamage == 0) { ++ this.setHealth(0); ++ } ++ } ++ } ++ // Purpur end + if (f > 0 || !human) { if (human) { diff --git a/patches/server/0169-API-for-any-mob-to-burn-daylight.patch b/patches/server/0169-API-for-any-mob-to-burn-daylight.patch index ff533af17..71bd9c97e 100644 --- a/patches/server/0169-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0169-API-for-any-mob-to-burn-daylight.patch @@ -32,7 +32,7 @@ index 5f19cc285efac25b56a29242b41c2823020f170e..2d1fc8734f440c284710c71abc6789e8 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 58a57a1cf8b8a3e885346f1fd1f7dd54a0277867..20433981a866b46a2ccedec70d5ee01079c2797c 100644 +index b5e63979fca87ac1f97e83ae18dd30dfecd275dc..79b782affc598abcd37a640a523f7bc35d1b3796 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -274,6 +274,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -63,7 +63,7 @@ index 58a57a1cf8b8a3e885346f1fd1f7dd54a0277867..20433981a866b46a2ccedec70d5ee010 } // CraftBukkit start -@@ -3572,6 +3579,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3573,6 +3580,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } diff --git a/patches/server/0191-Toggle-for-kinetic-damage.patch b/patches/server/0191-Toggle-for-kinetic-damage.patch index b1a8a64be..945e4eff6 100644 --- a/patches/server/0191-Toggle-for-kinetic-damage.patch +++ b/patches/server/0191-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 20433981a866b46a2ccedec70d5ee01079c2797c..d85407573c47df162cedb8667c2fbc327e75588b 100644 +index 79b782affc598abcd37a640a523f7bc35d1b3796..28718b44dc2bd98a5144ebcfd8be195a4715ccd7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2992,6 +2992,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2993,6 +2993,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0257-Remove-Mojang-Profiler.patch b/patches/server/0257-Remove-Mojang-Profiler.patch index 0a010234b..f97878dbe 100644 --- a/patches/server/0257-Remove-Mojang-Profiler.patch +++ b/patches/server/0257-Remove-Mojang-Profiler.patch @@ -1211,7 +1211,7 @@ index 68e8f9913055219486ce19d95dcf9d7c76e08082..2c3ad553272ad651e6ca26917719e6d9 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06d0a38bce 100644 +index 580e01281f27a4cd1d3a243a7d4791b88910b5bb..5e979618feda785d3f36cf085e72eed23bdd3f22 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1232,7 +1232,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 } public boolean canSpawnSoulSpeedParticle() { -@@ -3226,10 +3226,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3227,10 +3227,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1246,7 +1246,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3241,7 +3241,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3242,7 +3242,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1255,7 +1255,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3464,19 +3464,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3465,19 +3465,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1280,7 +1280,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3503,8 +3503,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3504,8 +3504,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1291,7 +1291,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3529,8 +3529,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3530,8 +3530,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1302,7 +1302,7 @@ index 484eff80394a55088f3cef726a8263e28accd6fe..def30f8c79a4244116f1b9d9ae1a9d06 if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3547,15 +3547,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3548,15 +3548,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } From ca767b015f0ed99ce47e1509e331136085b5499d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 19:14:15 -0700 Subject: [PATCH 110/148] it compiles \o/ --- ...ne-API.patch => 0032-Grindstone-API.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ... => 0034-Lobotomize-stuck-villagers.patch} | 0 ...ch => 0035-Add-local-difficulty-api.patch} | 0 ...imings.patch => 0036-Remove-Timings.patch} | 0 ...d-Bee-API.patch => 0037-Add-Bee-API.patch} | 0 ...-API.patch => 0038-Debug-Marker-API.patch} | 0 ....patch => 0039-Add-death-screen-API.patch} | 0 ...uage-API.patch => 0040-Language-API.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...API.patch => 0042-Fire-Immunity-API.patch} | 0 ....patch => 0043-Added-goat-ram-event.patch} | 0 ....patch => 0044-Add-PreExplodeEvents.patch} | 0 ...-API.patch => 0045-Explorer-Map-API.patch} | 0 ...ge.patch => 0046-Stonecutter-damage.patch} | 0 .../0032-Potion-NamespacedKey.patch | 0 ...0041-Add-item-packet-serialize-event.patch | 0 .../0047-Stored-Bee-API.patch | 0 .../0049-Add-hover-lines-API.patch | 0 .../0211-Config-for-grindstones.patch | 0 ...ent-BlockEntity-Lore-and-DisplayName.patch | 0 .../0220-Potion-NamespacedKey.patch | 0 .../0236-Configurable-food-attributes.patch | 0 .../0255-Send-client-custom-name-of-BE.patch | 1 + .../0263-Allay-respect-item-NBT.patch | 0 ...0271-Add-item-packet-serialize-event.patch | 0 .../0292-Add-hover-lines-API.patch | 0 patches/server/0016-Anvil-API.patch | 7 +- ...> 0018-Add-turtle-egg-block-options.patch} | 6 +- ...settings-suppressing-pointless-logs.patch} | 0 ...> 0020-Disable-outdated-build-check.patch} | 0 ...gs.patch => 0021-Giants-AI-settings.patch} | 6 +- ...> 0022-Zombie-horse-naturally-spawn.patch} | 6 +- ...023-Charged-creeper-naturally-spawn.patch} | 12 +- ...it-naturally-spawn-toast-and-killer.patch} | 6 +- ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0026-Tulips-change-fox-type.patch} | 6 +- ...patch => 0027-Breedable-Polar-Bears.patch} | 6 +- ...atch => 0028-Chickens-can-retaliate.patch} | 6 +- ...ption-to-set-armorstand-step-height.patch} | 2 +- ....patch => 0030-Cat-spawning-options.patch} | 6 +- ...ms.patch => 0031-Cows-eat-mushrooms.patch} | 6 +- ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...patch => 0033-Pigs-give-saddle-back.patch} | 6 +- ...4-Snowman-drop-and-put-back-pumpkin.patch} | 6 +- ...5-Ender-dragon-always-drop-full-exp.patch} | 6 +- ...oisten-from-water-directly-under-it.patch} | 6 +- ...Minecart-settings-and-WASD-controls.patch} | 2 +- ...ble-loot-drops-on-death-by-cramming.patch} | 2 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...ould-check-if-entity-can-use-portal.patch} | 0 ...Skip-events-if-there-s-no-listeners.patch} | 0 ... 0042-Add-permission-for-F3-N-debug.patch} | 0 ...ch => 0043-Configurable-TPS-Catchup.patch} | 0 ...ow-loyalty-on-tridents-to-work-in-t.patch} | 2 +- ...erman-and-creeper-griefing-controls.patch} | 12 +- ...046-Villagers-follow-emerald-blocks.patch} | 10 +- ...ch => 0047-Allow-leashing-villagers.patch} | 10 +- ... => 0048-Implement-infinite-liquids.patch} | 6 +- ...9-Make-lava-flow-speed-configurable.patch} | 4 +- ...dd-player-death-exp-control-options.patch} | 4 +- ...rable-void-damage-height-and-damage.patch} | 2 +- ...=> 0052-Add-canSaveToDisk-to-Entity.patch} | 4 +- ...spenser-curse-of-binding-protection.patch} | 6 +- ...-for-boats-to-eject-players-on-land.patch} | 2 +- ...-mends-most-damages-equipment-first.patch} | 2 +- ...056-Add-5-second-tps-average-in-tps.patch} | 0 ...h => 0057-Implement-elytra-settings.patch} | 2 +- ...atch => 0058-Item-entity-immunities.patch} | 2 +- ...mand.patch => 0059-Add-ping-command.patch} | 0 ...mand.patch => 0060-Add-demo-command.patch} | 0 ...d.patch => 0061-Add-credits-command.patch} | 0 ...=> 0062-Configurable-jockey-options.patch} | 22 +- ...d-to-crystals-and-crystals-shoot-ph.patch} | 6 +- ...> 0064-Add-phantom-spawning-options.patch} | 6 +- ...065-Implement-bed-explosion-options.patch} | 6 +- ...nt-respawn-anchor-explosion-options.patch} | 4 +- ...Add-allow-water-in-end-world-option.patch} | 0 ...espan.patch => 0068-Entity-lifespan.patch} | 2 +- ...eport-to-spawn-if-outside-world-bor.patch} | 4 +- ...ty.patch => 0070-Squid-EAR-immunity.patch} | 6 +- ...atch => 0071-Phantoms-burn-in-light.patch} | 6 +- ...0072-Configurable-villager-breeding.patch} | 6 +- ... 0073-Redstone-deactivates-spawners.patch} | 4 +- ...ch => 0074-Totems-work-in-inventory.patch} | 4 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 6 +- ...0076-Dispensers-place-anvils-option.patch} | 4 +- ...rs.patch => 0077-Allow-anvil-colors.patch} | 8 +- ...-disable-dolphin-treasure-searching.patch} | 6 +- ...patch => 0079-Short-enderman-height.patch} | 0 ...top-squids-floating-on-top-of-water.patch} | 6 +- ...ng-obsidian-valid-for-portal-frames.patch} | 0 ...ities-can-use-portals-configuration.patch} | 2 +- ...083-LivingEntity-broadcastItemBreak.patch} | 0 ...tomizable-wither-health-and-healing.patch} | 6 +- ...gling-special-MobSpawners-per-world.patch} | 2 +- ...patch => 0086-Raid-cooldown-setting.patch} | 2 +- ...-config-options-per-projectile-type.patch} | 8 +- ...able-zombie-aggressiveness-towards-.patch} | 6 +- ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...y.patch => 0090-Flying-squids-Oh-my.patch} | 8 +- ...patch => 0091-Infinity-bow-settings.patch} | 2 +- ...=> 0092-Configurable-daylight-cycle.patch} | 2 +- ...e-and-mending-enchantments-together.patch} | 0 ...4-Furnace-uses-lava-from-underneath.patch} | 4 +- ...ws-should-not-reset-despawn-counter.patch} | 2 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 4 +- ...ustable-breeding-cooldown-to-config.patch} | 2 +- ...-entity-breeding-times-configurable.patch} | 96 +++--- ...es-from-item-forms-of-entities-to-e.patch} | 2 +- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 6 +- ...02-Add-configurable-snowball-damage.patch} | 8 +- ...3-Changeable-Mob-Left-Handed-Chance.patch} | 2 +- ...=> 0104-Add-boat-fall-damage-config.patch} | 2 +- ...0105-Snow-Golem-rate-of-fire-config.patch} | 6 +- ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 6 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 44 +-- ...0-Configurable-default-collar-color.patch} | 16 +- ...tch => 0111-Phantom-flames-on-swoop.patch} | 6 +- ...-to-open-even-with-a-solid-block-on.patch} | 4 +- ...SBar.patch => 0113-Implement-TPSBar.patch} | 0 ...h => 0114-Striders-give-saddle-back.patch} | 6 +- ...tch => 0115-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 2 +- ...efing-bypass-to-everything-affected.patch} | 66 ++-- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...119-Add-EntityTeleportHinderedEvent.patch} | 2 +- ... => 0120-Farmland-trampling-changes.patch} | 4 +- ...1-Movement-options-for-armor-stands.patch} | 2 +- ....patch => 0122-Fix-stuck-in-portals.patch} | 2 +- ...ggle-for-water-sensitive-mob-damage.patch} | 264 ++++++++-------- ...4-Config-to-always-tame-in-Creative.patch} | 6 +- ... 0125-End-crystal-explosion-options.patch} | 4 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 10 +- ...atch => 0127-Dont-run-with-scissors.patch} | 2 +- ...nch-Man.patch => 0128-One-Punch-Man.patch} | 2 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 2 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 6 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 6 +- ...ig.patch => 0134-Tick-fluids-config.patch} | 2 +- ...35-Config-to-disable-Llama-caravans.patch} | 6 +- ...g-to-make-Creepers-explode-on-death.patch} | 8 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...138-Sneak-to-bulk-process-composter.patch} | 4 +- ...h => 0139-Config-for-skipping-night.patch} | 2 +- ...140-Add-config-for-villager-trading.patch} | 10 +- ...=> 0141-Allow-infinity-on-crossbows.patch} | 0 ...ngs.patch => 0142-Drowning-Settings.patch} | 4 +- ...reak-individual-slabs-when-sneaking.patch} | 4 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 4 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 2 +- ...tion-to-make-doors-require-redstone.patch} | 4 +- ...Config-to-allow-for-unsafe-enchants.patch} | 14 +- ...0148-Configurable-sponge-absorption.patch} | 4 +- ...ch => 0149-Projectile-offset-config.patch} | 8 +- ...or-powered-rail-activation-distance.patch} | 4 +- ...> 0151-Piglin-portal-spawn-modifier.patch} | 6 +- ...Config-to-change-max-number-of-bees.patch} | 0 ...-Config-for-wither-explosion-radius.patch} | 6 +- ... => 0154-Gamemode-extra-permissions.patch} | 0 ...0155-Configurable-piston-push-limit.patch} | 4 +- ...156-Configurable-broadcast-settings.patch} | 2 +- ... => 0157-Configurable-mob-blindness.patch} | 4 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 8 +- ... 0160-Iron-golem-calm-anger-options.patch} | 6 +- ...ots.patch => 0161-Breedable-parrots.patch} | 10 +- ...gurable-powered-rail-boost-modifier.patch} | 2 +- ...ge-multiplier-critical-damage-value.patch} | 2 +- ...n-to-disable-dragon-egg-teleporting.patch} | 4 +- ...fig-for-unverified-username-message.patch} | 0 ...-anvil-cumulative-cost-configurable.patch} | 4 +- ...e-can-work-when-raining-or-at-night.patch} | 6 +- ...68-API-for-any-mob-to-burn-daylight.patch} | 0 ...h => 0169-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 0 ...fter-eating-food-fills-hunger-bar-c.patch} | 2 +- ...ayer-join-full-server-by-permission.patch} | 0 ...> 0174-Add-portal-permission-bypass.patch} | 0 ...5-Shulker-spawn-from-bullet-options.patch} | 6 +- ...ating-glow-berries-adds-glow-effect.patch} | 4 +- ...-Option-to-make-drowned-break-doors.patch} | 6 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0179-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0180-Add-uptime-command.patch} | 0 ...tch => 0181-Tool-actionable-options.patch} | 6 +- ...2-Store-placer-on-Block-when-placed.patch} | 2 +- ...oner-API.patch => 0183-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 0 ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...tch => 0186-Big-dripleaf-tilt-delay.patch} | 4 +- ...0187-Player-ridable-in-water-option.patch} | 2 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0189-Add-compass-command.patch} | 2 +- ...h => 0190-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 4 +- ...194-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 4 +- ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0197-Conduit-behavior-configuration.patch} | 31 +- ...patch => 0198-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0200-Shulker-change-color-with-dye.patch} | 6 +- ... => 0201-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 6 +- ...in-and-thunder-should-stop-on-sleep.patch} | 2 +- ...-blocks-to-grow-into-trees-naturall.patch} | 6 +- ...-right-click-to-use-exp-for-mending.patch} | 2 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 12 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 4 +- ....patch => 0210-UPnP-Port-Forwarding.patch} | 4 +- ...Campfire-option-for-lit-when-placed.patch} | 4 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...-and-twisting-vines-configurable-ma.patch} | 18 +- ...=> 0215-Mobs-always-drop-experience.patch} | 286 +++++++++--------- ...ne-API.patch => 0216-Grindstone-API.patch} | 4 +- ...e-to-replant-crops-and-nether-warts.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0219-Mob-head-visibility-percent.patch} | 20 +- ...able-valid-characters-for-usernames.patch} | 4 +- ...Shears-can-have-looting-enchantment.patch} | 19 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...onfigurable-farmland-trample-height.patch} | 8 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0225-Allow-void-trading.patch} | 6 +- ...h => 0226-Configurable-phantom-size.patch} | 6 +- ....patch => 0227-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0229-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- ...=> 0233-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 8 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0238-Stonecutter-damage.patch} | 6 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...240-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0241-Skeletons-eat-wither-roses.patch} | 6 +- ...42-Enchantment-Table-Persists-Lapis.patch} | 4 +- ...ofiler.patch => 0243-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 4 +- ...for-sculk-shrieker-can_summon-state.patch} | 10 +- ...=> 0246-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0247-Add-local-difficulty-api.patch} | 0 ...248-Add-toggle-for-RNG-manipulation.patch} | 4 +- ...imings.patch => 0249-Remove-Timings.patch} | 28 +- ...atch => 0250-Remove-Mojang-Profiler.patch} | 42 +-- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0252-Add-Bee-API.patch} | 0 ...-API.patch => 0253-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 6 +- ...55-Add-skeleton-bow-accuracy-option.patch} | 6 +- ....patch => 0256-Add-death-screen-API.patch} | 0 ...7-Implement-ram-and-rambar-commands.patch} | 6 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 10 +- ...uage-API.patch => 0260-Language-API.patch} | 0 ... 0261-Milk-Keeps-Beneficial-Effects.patch} | 10 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 4 +- ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0265-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 6 +- ...t.patch => 0267-Added-got-ram-event.patch} | 0 ... 0268-Log-skipped-entity-s-position.patch} | 0 ....patch => 0269-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 8 +- ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- ....patch => 0274-Add-PreExplodeEvents.patch} | 0 ...5-Improve-output-of-plugins-command.patch} | 0 ...atch => 0276-Add-mending-multiplier.patch} | 4 +- ....patch => 0277-Make-GUI-Great-Again.patch} | 2 +- ...patch => 0278-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0279-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 36 +-- ...ways-showing-item-in-player-death-m.patch} | 4 +- ...0283-place-end-crystal-on-any-block.patch} | 6 +- ...able-the-copper-oxidation-proximity.patch} | 6 +- ...5-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 6 +- .../0018-Silk-touch-spawners.patch | 0 .../0217-Signs-allow-color-codes.patch | 0 ...counts-in-beehives-to-Purpur-clients.patch | 0 300 files changed, 1007 insertions(+), 979 deletions(-) rename patches/api/{0033-Grindstone-API.patch => 0032-Grindstone-API.patch} (100%) rename patches/api/{0034-Shears-can-have-looting-enchantment.patch => 0033-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0035-Lobotomize-stuck-villagers.patch => 0034-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0036-Add-local-difficulty-api.patch => 0035-Add-local-difficulty-api.patch} (100%) rename patches/api/{0037-Remove-Timings.patch => 0036-Remove-Timings.patch} (100%) rename patches/api/{0038-Add-Bee-API.patch => 0037-Add-Bee-API.patch} (100%) rename patches/api/{0039-Debug-Marker-API.patch => 0038-Debug-Marker-API.patch} (100%) rename patches/api/{0040-Add-death-screen-API.patch => 0039-Add-death-screen-API.patch} (100%) rename patches/api/{0042-Language-API.patch => 0040-Language-API.patch} (100%) rename patches/api/{0043-Add-log-suppression-for-LibraryLoader.patch => 0041-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/api/{0044-Fire-Immunity-API.patch => 0042-Fire-Immunity-API.patch} (100%) rename patches/api/{0045-Added-goat-ram-event.patch => 0043-Added-goat-ram-event.patch} (100%) rename patches/api/{0046-Add-PreExplodeEvents.patch => 0044-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0048-Explorer-Map-API.patch => 0045-Explorer-Map-API.patch} (100%) rename patches/api/{0050-Stonecutter-damage.patch => 0046-Stonecutter-damage.patch} (100%) rename patches/{api => dropped-api}/0032-Potion-NamespacedKey.patch (100%) rename patches/{api => dropped-api}/0041-Add-item-packet-serialize-event.patch (100%) rename patches/{api => dropped-api}/0047-Stored-Bee-API.patch (100%) rename patches/{api => dropped-api}/0049-Add-hover-lines-API.patch (100%) rename patches/{server => dropped-server}/0211-Config-for-grindstones.patch (100%) rename patches/{server => dropped-server}/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch (100%) rename patches/{server => dropped-server}/0220-Potion-NamespacedKey.patch (100%) rename patches/{unapplied-server => dropped-server}/0236-Configurable-food-attributes.patch (100%) rename patches/{server => dropped-server}/0255-Send-client-custom-name-of-BE.patch (97%) rename patches/{server => dropped-server}/0263-Allay-respect-item-NBT.patch (100%) rename patches/{unapplied-server => dropped-server}/0271-Add-item-packet-serialize-event.patch (100%) rename patches/{server => dropped-server}/0292-Add-hover-lines-API.patch (100%) rename patches/server/{0019-Add-turtle-egg-block-options.patch => 0018-Add-turtle-egg-block-options.patch} (91%) rename patches/server/{0020-Logger-settings-suppressing-pointless-logs.patch => 0019-Logger-settings-suppressing-pointless-logs.patch} (100%) rename patches/server/{0021-Disable-outdated-build-check.patch => 0020-Disable-outdated-build-check.patch} (100%) rename patches/server/{0022-Giants-AI-settings.patch => 0021-Giants-AI-settings.patch} (97%) rename patches/server/{0023-Zombie-horse-naturally-spawn.patch => 0022-Zombie-horse-naturally-spawn.patch} (94%) rename patches/server/{0024-Charged-creeper-naturally-spawn.patch => 0023-Charged-creeper-naturally-spawn.patch} (85%) rename patches/server/{0025-Rabbit-naturally-spawn-toast-and-killer.patch => 0024-Rabbit-naturally-spawn-toast-and-killer.patch} (93%) rename patches/server/{0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0027-Tulips-change-fox-type.patch => 0026-Tulips-change-fox-type.patch} (95%) rename patches/server/{0028-Breedable-Polar-Bears.patch => 0027-Breedable-Polar-Bears.patch} (95%) rename patches/server/{0029-Chickens-can-retaliate.patch => 0028-Chickens-can-retaliate.patch} (94%) rename patches/server/{0030-Add-option-to-set-armorstand-step-height.patch => 0029-Add-option-to-set-armorstand-step-height.patch} (96%) rename patches/server/{0031-Cat-spawning-options.patch => 0030-Cat-spawning-options.patch} (94%) rename patches/server/{0032-Cows-eat-mushrooms.patch => 0031-Cows-eat-mushrooms.patch} (97%) rename patches/server/{0033-Fix-cow-rotation-when-shearing-mooshroom.patch => 0032-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0034-Pigs-give-saddle-back.patch => 0033-Pigs-give-saddle-back.patch} (92%) rename patches/server/{0035-Snowman-drop-and-put-back-pumpkin.patch => 0034-Snowman-drop-and-put-back-pumpkin.patch} (91%) rename patches/server/{0036-Ender-dragon-always-drop-full-exp.patch => 0035-Ender-dragon-always-drop-full-exp.patch} (91%) rename patches/server/{0037-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0036-Allow-soil-to-moisten-from-water-directly-under-it.patch} (85%) rename patches/server/{0038-Minecart-settings-and-WASD-controls.patch => 0037-Minecart-settings-and-WASD-controls.patch} (99%) rename patches/server/{0039-Disable-loot-drops-on-death-by-cramming.patch => 0038-Disable-loot-drops-on-death-by-cramming.patch} (96%) rename patches/server/{0040-Option-to-toggle-milk-curing-bad-omen.patch => 0039-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0041-End-gateway-should-check-if-entity-can-use-portal.patch => 0040-End-gateway-should-check-if-entity-can-use-portal.patch} (100%) rename patches/server/{0042-Skip-events-if-there-s-no-listeners.patch => 0041-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0043-Add-permission-for-F3-N-debug.patch => 0042-Add-permission-for-F3-N-debug.patch} (100%) rename patches/server/{0044-Configurable-TPS-Catchup.patch => 0043-Configurable-TPS-Catchup.patch} (100%) rename patches/server/{0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (96%) rename patches/server/{0046-Add-enderman-and-creeper-griefing-controls.patch => 0045-Add-enderman-and-creeper-griefing-controls.patch} (91%) rename patches/server/{0047-Villagers-follow-emerald-blocks.patch => 0046-Villagers-follow-emerald-blocks.patch} (94%) rename patches/server/{0048-Allow-leashing-villagers.patch => 0047-Allow-leashing-villagers.patch} (94%) rename patches/server/{0049-Implement-infinite-liquids.patch => 0048-Implement-infinite-liquids.patch} (95%) rename patches/server/{0050-Make-lava-flow-speed-configurable.patch => 0049-Make-lava-flow-speed-configurable.patch} (92%) rename patches/server/{0051-Add-player-death-exp-control-options.patch => 0050-Add-player-death-exp-control-options.patch} (95%) rename patches/server/{0052-Configurable-void-damage-height-and-damage.patch => 0051-Configurable-void-damage-height-and-damage.patch} (97%) rename patches/server/{0053-Add-canSaveToDisk-to-Entity.patch => 0052-Add-canSaveToDisk-to-Entity.patch} (95%) rename patches/server/{0054-Dispenser-curse-of-binding-protection.patch => 0053-Dispenser-curse-of-binding-protection.patch} (92%) rename patches/server/{0055-Add-option-for-boats-to-eject-players-on-land.patch => 0054-Add-option-for-boats-to-eject-players-on-land.patch} (95%) rename patches/server/{0056-Mending-mends-most-damages-equipment-first.patch => 0055-Mending-mends-most-damages-equipment-first.patch} (98%) rename patches/server/{0057-Add-5-second-tps-average-in-tps.patch => 0056-Add-5-second-tps-average-in-tps.patch} (100%) rename patches/server/{0058-Implement-elytra-settings.patch => 0057-Implement-elytra-settings.patch} (98%) rename patches/server/{0059-Item-entity-immunities.patch => 0058-Item-entity-immunities.patch} (98%) rename patches/server/{0060-Add-ping-command.patch => 0059-Add-ping-command.patch} (100%) rename patches/server/{0061-Add-demo-command.patch => 0060-Add-demo-command.patch} (100%) rename patches/server/{0062-Add-credits-command.patch => 0061-Add-credits-command.patch} (100%) rename patches/server/{0063-Configurable-jockey-options.patch => 0062-Configurable-jockey-options.patch} (95%) rename patches/server/{0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (98%) rename patches/server/{0065-Add-phantom-spawning-options.patch => 0064-Add-phantom-spawning-options.patch} (96%) rename patches/server/{0066-Implement-bed-explosion-options.patch => 0065-Implement-bed-explosion-options.patch} (93%) rename patches/server/{0067-Implement-respawn-anchor-explosion-options.patch => 0066-Implement-respawn-anchor-explosion-options.patch} (95%) rename patches/server/{0068-Add-allow-water-in-end-world-option.patch => 0067-Add-allow-water-in-end-world-option.patch} (100%) rename patches/server/{0069-Entity-lifespan.patch => 0068-Entity-lifespan.patch} (98%) rename patches/server/{0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (96%) rename patches/server/{0071-Squid-EAR-immunity.patch => 0070-Squid-EAR-immunity.patch} (91%) rename patches/server/{0072-Phantoms-burn-in-light.patch => 0071-Phantoms-burn-in-light.patch} (96%) rename patches/server/{0073-Configurable-villager-breeding.patch => 0072-Configurable-villager-breeding.patch} (91%) rename patches/server/{0074-Redstone-deactivates-spawners.patch => 0073-Redstone-deactivates-spawners.patch} (91%) rename patches/server/{0075-Totems-work-in-inventory.patch => 0074-Totems-work-in-inventory.patch} (95%) rename patches/server/{0076-Add-vindicator-johnny-spawn-chance.patch => 0075-Add-vindicator-johnny-spawn-chance.patch} (91%) rename patches/server/{0077-Dispensers-place-anvils-option.patch => 0076-Dispensers-place-anvils-option.patch} (94%) rename patches/server/{0078-Allow-anvil-colors.patch => 0077-Allow-anvil-colors.patch} (92%) rename patches/server/{0079-Add-option-to-disable-dolphin-treasure-searching.patch => 0078-Add-option-to-disable-dolphin-treasure-searching.patch} (90%) rename patches/server/{0080-Short-enderman-height.patch => 0079-Short-enderman-height.patch} (100%) rename patches/server/{0081-Stop-squids-floating-on-top-of-water.patch => 0080-Stop-squids-floating-on-top-of-water.patch} (94%) rename patches/server/{0082-Crying-obsidian-valid-for-portal-frames.patch => 0081-Crying-obsidian-valid-for-portal-frames.patch} (100%) rename patches/server/{0083-Entities-can-use-portals-configuration.patch => 0082-Entities-can-use-portals-configuration.patch} (97%) rename patches/server/{0084-LivingEntity-broadcastItemBreak.patch => 0083-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/server/{0085-Customizable-wither-health-and-healing.patch => 0084-Customizable-wither-health-and-healing.patch} (92%) rename patches/server/{0086-Allow-toggling-special-MobSpawners-per-world.patch => 0085-Allow-toggling-special-MobSpawners-per-world.patch} (98%) rename patches/server/{0087-Raid-cooldown-setting.patch => 0086-Raid-cooldown-setting.patch} (97%) rename patches/server/{0088-Despawn-rate-config-options-per-projectile-type.patch => 0087-Despawn-rate-config-options-per-projectile-type.patch} (90%) rename patches/server/{0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (96%) rename patches/server/{0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0091-Flying-squids-Oh-my.patch => 0090-Flying-squids-Oh-my.patch} (94%) rename patches/server/{0092-Infinity-bow-settings.patch => 0091-Infinity-bow-settings.patch} (97%) rename patches/server/{0093-Configurable-daylight-cycle.patch => 0092-Configurable-daylight-cycle.patch} (98%) rename patches/server/{0094-Allow-infinite-and-mending-enchantments-together.patch => 0093-Allow-infinite-and-mending-enchantments-together.patch} (100%) rename patches/server/{0095-Furnace-uses-lava-from-underneath.patch => 0094-Furnace-uses-lava-from-underneath.patch} (96%) rename patches/server/{0096-Arrows-should-not-reset-despawn-counter.patch => 0095-Arrows-should-not-reset-despawn-counter.patch} (95%) rename patches/server/{0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (92%) rename patches/server/{0098-Add-adjustable-breeding-cooldown-to-config.patch => 0097-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0099-Make-entity-breeding-times-configurable.patch => 0098-Make-entity-breeding-times-configurable.patch} (94%) rename patches/server/{0100-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0099-Apply-display-names-from-item-forms-of-entities-to-e.patch} (98%) rename patches/server/{0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (91%) rename patches/server/{0103-Add-configurable-snowball-damage.patch => 0102-Add-configurable-snowball-damage.patch} (85%) rename patches/server/{0104-Changeable-Mob-Left-Handed-Chance.patch => 0103-Changeable-Mob-Left-Handed-Chance.patch} (95%) rename patches/server/{0105-Add-boat-fall-damage-config.patch => 0104-Add-boat-fall-damage-config.patch} (97%) rename patches/server/{0106-Snow-Golem-rate-of-fire-config.patch => 0105-Snow-Golem-rate-of-fire-config.patch} (94%) rename patches/server/{0107-EMC-Configurable-disable-give-dropping.patch => 0106-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (94%) rename patches/server/{0110-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0109-Configurable-chance-for-wolves-to-spawn-rabid.patch} (90%) rename patches/server/{0111-Configurable-default-collar-color.patch => 0110-Configurable-default-collar-color.patch} (88%) rename patches/server/{0112-Phantom-flames-on-swoop.patch => 0111-Phantom-flames-on-swoop.patch} (91%) rename patches/server/{0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (91%) rename patches/server/{0114-Implement-TPSBar.patch => 0113-Implement-TPSBar.patch} (100%) rename patches/server/{0115-Striders-give-saddle-back.patch => 0114-Striders-give-saddle-back.patch} (92%) rename patches/server/{0116-PlayerBookTooLargeEvent.patch => 0115-PlayerBookTooLargeEvent.patch} (100%) rename patches/server/{0117-Full-netherite-armor-grants-fire-resistance.patch => 0116-Full-netherite-armor-grants-fire-resistance.patch} (97%) rename patches/server/{0118-Add-mobGriefing-bypass-to-everything-affected.patch => 0117-Add-mobGriefing-bypass-to-everything-affected.patch} (96%) rename patches/server/{0119-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0118-Config-to-allow-Note-Block-sounds-when-blocked.patch} (97%) rename patches/server/{0120-Add-EntityTeleportHinderedEvent.patch => 0119-Add-EntityTeleportHinderedEvent.patch} (99%) rename patches/server/{0121-Farmland-trampling-changes.patch => 0120-Farmland-trampling-changes.patch} (95%) rename patches/server/{0122-Movement-options-for-armor-stands.patch => 0121-Movement-options-for-armor-stands.patch} (98%) rename patches/server/{0123-Fix-stuck-in-portals.patch => 0122-Fix-stuck-in-portals.patch} (97%) rename patches/server/{0124-Toggle-for-water-sensitive-mob-damage.patch => 0123-Toggle-for-water-sensitive-mob-damage.patch} (94%) rename patches/server/{0125-Config-to-always-tame-in-Creative.patch => 0124-Config-to-always-tame-in-Creative.patch} (95%) rename patches/server/{0126-End-crystal-explosion-options.patch => 0125-End-crystal-explosion-options.patch} (97%) rename patches/server/{0127-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/server/{0128-Dont-run-with-scissors.patch => 0127-Dont-run-with-scissors.patch} (99%) rename patches/server/{0129-One-Punch-Man.patch => 0128-One-Punch-Man.patch} (96%) rename patches/server/{0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/server/{0131-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0130-Config-to-ignore-nearby-mobs-when-sleeping.patch} (96%) rename patches/server/{0132-Add-back-player-spawned-endermite-API.patch => 0131-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0133-Config-Enderman-aggressiveness-towards-Endermites.patch => 0132-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0135-Tick-fluids-config.patch => 0134-Tick-fluids-config.patch} (97%) rename patches/server/{0136-Config-to-disable-Llama-caravans.patch => 0135-Config-to-disable-Llama-caravans.patch} (94%) rename patches/server/{0137-Config-to-make-Creepers-explode-on-death.patch => 0136-Config-to-make-Creepers-explode-on-death.patch} (91%) rename patches/server/{0138-Configurable-ravager-griefable-blocks-list.patch => 0137-Configurable-ravager-griefable-blocks-list.patch} (95%) rename patches/server/{0139-Sneak-to-bulk-process-composter.patch => 0138-Sneak-to-bulk-process-composter.patch} (97%) rename patches/server/{0140-Config-for-skipping-night.patch => 0139-Config-for-skipping-night.patch} (96%) rename patches/server/{0141-Add-config-for-villager-trading.patch => 0140-Add-config-for-villager-trading.patch} (93%) rename patches/server/{0142-Allow-infinity-on-crossbows.patch => 0141-Allow-infinity-on-crossbows.patch} (100%) rename patches/server/{0143-Drowning-Settings.patch => 0142-Drowning-Settings.patch} (94%) rename patches/server/{0144-Break-individual-slabs-when-sneaking.patch => 0143-Break-individual-slabs-when-sneaking.patch} (95%) rename patches/server/{0145-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0144-Config-to-disable-hostile-mob-spawn-on-ice.patch} (94%) rename patches/server/{0146-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0145-Config-to-show-Armor-Stand-arms-on-spawn.patch} (96%) rename patches/server/{0147-Option-to-make-doors-require-redstone.patch => 0146-Option-to-make-doors-require-redstone.patch} (96%) rename patches/server/{0148-Config-to-allow-for-unsafe-enchants.patch => 0147-Config-to-allow-for-unsafe-enchants.patch} (92%) rename patches/server/{0149-Configurable-sponge-absorption.patch => 0148-Configurable-sponge-absorption.patch} (93%) rename patches/server/{0150-Projectile-offset-config.patch => 0149-Projectile-offset-config.patch} (96%) rename patches/server/{0151-Config-for-powered-rail-activation-distance.patch => 0150-Config-for-powered-rail-activation-distance.patch} (91%) rename patches/server/{0152-Piglin-portal-spawn-modifier.patch => 0151-Piglin-portal-spawn-modifier.patch} (93%) rename patches/server/{0153-Config-to-change-max-number-of-bees.patch => 0152-Config-to-change-max-number-of-bees.patch} (100%) rename patches/server/{0154-Config-for-wither-explosion-radius.patch => 0153-Config-for-wither-explosion-radius.patch} (92%) rename patches/server/{0155-Gamemode-extra-permissions.patch => 0154-Gamemode-extra-permissions.patch} (100%) rename patches/server/{0156-Configurable-piston-push-limit.patch => 0155-Configurable-piston-push-limit.patch} (94%) rename patches/server/{0157-Configurable-broadcast-settings.patch => 0156-Configurable-broadcast-settings.patch} (97%) rename patches/server/{0158-Configurable-mob-blindness.patch => 0157-Configurable-mob-blindness.patch} (94%) rename patches/server/{0159-Hide-hidden-players-from-entity-selector.patch => 0158-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0160-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0159-Config-for-health-to-impact-Creeper-explosion-radius.patch} (89%) rename patches/server/{0161-Iron-golem-calm-anger-options.patch => 0160-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0162-Breedable-parrots.patch => 0161-Breedable-parrots.patch} (89%) rename patches/server/{0163-Configurable-powered-rail-boost-modifier.patch => 0162-Configurable-powered-rail-boost-modifier.patch} (96%) rename patches/server/{0164-Add-config-change-multiplier-critical-damage-value.patch => 0163-Add-config-change-multiplier-critical-damage-value.patch} (96%) rename patches/server/{0165-Option-to-disable-dragon-egg-teleporting.patch => 0164-Option-to-disable-dragon-egg-teleporting.patch} (92%) rename patches/server/{0166-Config-for-unverified-username-message.patch => 0165-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0167-Make-anvil-cumulative-cost-configurable.patch => 0166-Make-anvil-cumulative-cost-configurable.patch} (93%) rename patches/server/{0168-Bee-can-work-when-raining-or-at-night.patch => 0167-Bee-can-work-when-raining-or-at-night.patch} (94%) rename patches/server/{0169-API-for-any-mob-to-burn-daylight.patch => 0168-API-for-any-mob-to-burn-daylight.patch} (100%) rename patches/server/{0170-Config-MobEffect-by-world.patch => 0169-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0171-Beacon-Activation-Range-Configurable.patch => 0170-Beacon-Activation-Range-Configurable.patch} (94%) rename patches/server/{0172-Make-lightning-rod-range-configurable.patch => 0171-Make-lightning-rod-range-configurable.patch} (100%) rename patches/server/{0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (97%) rename patches/server/{0174-Allow-player-join-full-server-by-permission.patch => 0173-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0175-Add-portal-permission-bypass.patch => 0174-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0176-Shulker-spawn-from-bullet-options.patch => 0175-Shulker-spawn-from-bullet-options.patch} (96%) rename patches/server/{0177-Eating-glow-berries-adds-glow-effect.patch => 0176-Eating-glow-berries-adds-glow-effect.patch} (95%) rename patches/server/{0178-Option-to-make-drowned-break-doors.patch => 0177-Option-to-make-drowned-break-doors.patch} (94%) rename patches/server/{0179-Configurable-hunger-starvation-damage.patch => 0178-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0180-Enhance-SysoutCatcher.patch => 0179-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0181-Add-uptime-command.patch => 0180-Add-uptime-command.patch} (100%) rename patches/server/{0182-Tool-actionable-options.patch => 0181-Tool-actionable-options.patch} (99%) rename patches/server/{0183-Store-placer-on-Block-when-placed.patch => 0182-Store-placer-on-Block-when-placed.patch} (96%) rename patches/server/{0184-Summoner-API.patch => 0183-Summoner-API.patch} (100%) rename patches/server/{0185-Customizable-sleeping-actionbar-messages.patch => 0184-Customizable-sleeping-actionbar-messages.patch} (100%) rename patches/server/{0186-option-to-disable-shulker-box-items-from-dropping-co.patch => 0185-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0187-Big-dripleaf-tilt-delay.patch => 0186-Big-dripleaf-tilt-delay.patch} (94%) rename patches/server/{0188-Player-ridable-in-water-option.patch => 0187-Player-ridable-in-water-option.patch} (96%) rename patches/server/{0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (92%) rename patches/server/{0190-Add-compass-command.patch => 0189-Add-compass-command.patch} (99%) rename patches/server/{0191-Toggle-for-kinetic-damage.patch => 0190-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0192-Add-Option-for-disable-observer-clocks.patch => 0191-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0193-Customizeable-Zombie-Villager-curing-times.patch => 0192-Customizeable-Zombie-Villager-curing-times.patch} (93%) rename patches/server/{0194-Option-for-sponges-to-work-on-lava-and-mud.patch => 0193-Option-for-sponges-to-work-on-lava-and-mud.patch} (94%) rename patches/server/{0195-Toggle-for-Wither-s-spawn-sound.patch => 0194-Toggle-for-Wither-s-spawn-sound.patch} (91%) rename patches/server/{0196-Cactus-breaks-from-solid-neighbors-config.patch => 0195-Cactus-breaks-from-solid-neighbors-config.patch} (92%) rename patches/server/{0197-Config-to-remove-curse-of-binding-with-weakness.patch => 0196-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0198-Conduit-behavior-configuration.patch => 0197-Conduit-behavior-configuration.patch} (78%) rename patches/server/{0199-Cauldron-fill-chances.patch => 0198-Cauldron-fill-chances.patch} (96%) rename patches/server/{0200-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0199-Config-to-allow-mobs-to-pathfind-over-rails.patch} (96%) rename patches/server/{0201-Shulker-change-color-with-dye.patch => 0200-Shulker-change-color-with-dye.patch} (94%) rename patches/server/{0202-Extended-OfflinePlayer-API.patch => 0201-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0203-Added-the-ability-to-add-combustible-items.patch => 0202-Added-the-ability-to-add-combustible-items.patch} (92%) rename patches/server/{0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (97%) rename patches/server/{0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (94%) rename patches/server/{0206-Shift-right-click-to-use-exp-for-mending.patch => 0205-Shift-right-click-to-use-exp-for-mending.patch} (98%) rename patches/server/{0207-Dolphins-naturally-aggressive-to-players-chance.patch => 0206-Dolphins-naturally-aggressive-to-players-chance.patch} (95%) rename patches/server/{0208-Cows-naturally-aggressive-to-players-chance.patch => 0207-Cows-naturally-aggressive-to-players-chance.patch} (93%) rename patches/server/{0209-Option-for-beds-to-explode-on-villager-sleep.patch => 0208-Option-for-beds-to-explode-on-villager-sleep.patch} (92%) rename patches/server/{0210-Halloween-options-and-optimizations.patch => 0209-Halloween-options-and-optimizations.patch} (97%) rename patches/server/{0212-UPnP-Port-Forwarding.patch => 0210-UPnP-Port-Forwarding.patch} (96%) rename patches/server/{0213-Campfire-option-for-lit-when-placed.patch => 0211-Campfire-option-for-lit-when-placed.patch} (94%) rename patches/server/{0214-options-to-extinguish-fire-blocks-with-snowballs.patch => 0212-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0215-Add-option-to-disable-zombie-villagers-cure.patch => 0213-Add-option-to-disable-zombie-villagers-cure.patch} (92%) rename patches/server/{0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (93%) rename patches/server/{0219-Mobs-always-drop-experience.patch => 0215-Mobs-always-drop-experience.patch} (93%) rename patches/server/{0221-Grindstone-API.patch => 0216-Grindstone-API.patch} (92%) rename patches/server/{0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0223-Turtle-eggs-random-tick-crack-chance.patch => 0218-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0224-Mob-head-visibility-percent.patch => 0219-Mob-head-visibility-percent.patch} (90%) rename patches/server/{0225-Configurable-valid-characters-for-usernames.patch => 0220-Configurable-valid-characters-for-usernames.patch} (92%) rename patches/server/{0226-Shears-can-have-looting-enchantment.patch => 0221-Shears-can-have-looting-enchantment.patch} (90%) rename patches/server/{0227-Stop-bees-from-dying-after-stinging.patch => 0222-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0229-Configurable-farmland-trample-height.patch => 0223-Configurable-farmland-trample-height.patch} (92%) rename patches/server/{0230-Configurable-player-pickup-exp-delay.patch => 0224-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0231-Allow-void-trading.patch => 0225-Allow-void-trading.patch} (93%) rename patches/server/{0232-Configurable-phantom-size.patch => 0226-Configurable-phantom-size.patch} (93%) rename patches/server/{0233-Max-joins-per-second.patch => 0227-Max-joins-per-second.patch} (94%) rename patches/server/{0234-Configurable-minimum-demand-for-trades.patch => 0228-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0235-Lobotomize-stuck-villagers.patch => 0229-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0236-Option-for-villager-display-trade-item.patch => 0230-Option-for-villager-display-trade-item.patch} (92%) rename patches/server/{0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0238-Config-for-mob-last-hurt-by-player-time.patch => 0232-Config-for-mob-last-hurt-by-player-time.patch} (92%) rename patches/server/{0239-Anvil-repair-damage-options.patch => 0233-Anvil-repair-damage-options.patch} (97%) rename patches/server/{0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0241-Add-toggle-for-enchant-level-clamping.patch => 0235-Add-toggle-for-enchant-level-clamping.patch} (91%) rename patches/server/{0242-Skip-junit-tests-for-purpur-commands.patch => 0236-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0243-Implement-configurable-search-radius-for-villagers-t.patch => 0237-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0244-Stonecutter-damage.patch => 0238-Stonecutter-damage.patch} (97%) rename patches/server/{0245-Configurable-damage-settings-for-magma-blocks.patch => 0239-Configurable-damage-settings-for-magma-blocks.patch} (93%) rename patches/server/{0246-Add-config-for-snow-on-blue-ice.patch => 0240-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0247-Skeletons-eat-wither-roses.patch => 0241-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0248-Enchantment-Table-Persists-Lapis.patch => 0242-Enchantment-Table-Persists-Lapis.patch} (97%) rename patches/server/{0249-Spark-Profiler.patch => 0243-Spark-Profiler.patch} (100%) rename patches/server/{0250-Option-to-disable-kick-for-out-of-order-chat.patch => 0244-Option-to-disable-kick-for-out-of-order-chat.patch} (92%) rename patches/server/{0251-Config-for-sculk-shrieker-can_summon-state.patch => 0245-Config-for-sculk-shrieker-can_summon-state.patch} (84%) rename patches/server/{0252-Config-to-not-let-coral-die.patch => 0246-Config-to-not-let-coral-die.patch} (94%) rename patches/server/{0253-Add-local-difficulty-api.patch => 0247-Add-local-difficulty-api.patch} (100%) rename patches/server/{0254-Add-toggle-for-RNG-manipulation.patch => 0248-Add-toggle-for-RNG-manipulation.patch} (95%) rename patches/server/{0256-Remove-Timings.patch => 0249-Remove-Timings.patch} (98%) rename patches/server/{0257-Remove-Mojang-Profiler.patch => 0250-Remove-Mojang-Profiler.patch} (98%) rename patches/server/{0258-Add-more-logger-output-for-invalid-movement-kicks.patch => 0251-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0259-Add-Bee-API.patch => 0252-Add-Bee-API.patch} (100%) rename patches/server/{0260-Debug-Marker-API.patch => 0253-Debug-Marker-API.patch} (100%) rename patches/server/{0261-mob-spawning-option-to-ignore-creative-players.patch => 0254-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0262-Add-skeleton-bow-accuracy-option.patch => 0255-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0264-Add-death-screen-API.patch => 0256-Add-death-screen-API.patch} (100%) rename patches/server/{0265-Implement-ram-and-rambar-commands.patch => 0257-Implement-ram-and-rambar-commands.patch} (98%) rename patches/server/{0266-Configurable-block-blast-resistance.patch => 0258-Configurable-block-blast-resistance.patch} (94%) rename patches/server/{0267-Configurable-block-fall-damage-modifiers.patch => 0259-Configurable-block-fall-damage-modifiers.patch} (94%) rename patches/server/{0268-Language-API.patch => 0260-Language-API.patch} (100%) rename patches/server/{0269-Milk-Keeps-Beneficial-Effects.patch => 0261-Milk-Keeps-Beneficial-Effects.patch} (89%) rename patches/server/{0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0271-Add-log-suppression-for-LibraryLoader.patch => 0263-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/server/{0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0273-Fire-Immunity-API.patch => 0265-Fire-Immunity-API.patch} (100%) rename patches/server/{0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0275-Added-got-ram-event.patch => 0267-Added-got-ram-event.patch} (100%) rename patches/server/{0276-Log-skipped-entity-s-position.patch => 0268-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0277-End-Crystal-Cramming.patch => 0269-End-Crystal-Cramming.patch} (91%) rename patches/server/{0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0279-Add-attribute-clamping-and-armor-limit-config.patch => 0271-Add-attribute-clamping-and-armor-limit-config.patch} (87%) rename patches/server/{0280-Config-to-remove-explosion-radius-clamp.patch => 0272-Config-to-remove-explosion-radius-clamp.patch} (93%) rename patches/server/{0281-bonemealable-sugarcane-cactus-and-netherwart.patch => 0273-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0282-Add-PreExplodeEvents.patch => 0274-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0283-Improve-output-of-plugins-command.patch => 0275-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0284-Add-mending-multiplier.patch => 0276-Add-mending-multiplier.patch} (93%) rename patches/server/{0285-Make-GUI-Great-Again.patch => 0277-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0286-Shears-can-defuse-TNT.patch => 0278-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0287-Explorer-Map-API.patch => 0279-Explorer-Map-API.patch} (100%) rename patches/server/{0288-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0280-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (66%) rename patches/server/{0290-Add-option-for-always-showing-item-in-player-death-m.patch => 0282-Add-option-for-always-showing-item-in-player-death-m.patch} (95%) rename patches/server/{0291-place-end-crystal-on-any-block.patch => 0283-place-end-crystal-on-any-block.patch} (92%) rename patches/server/{0293-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0284-Add-option-to-disable-the-copper-oxidation-proximity.patch} (92%) rename patches/server/{0294-register-minecraft-debug-commands.patch => 0285-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0295-Configurable-villager-search-radius.patch => 0286-Configurable-villager-search-radius.patch} (95%) rename patches/{server => unapplied-server}/0018-Silk-touch-spawners.patch (100%) rename patches/{server => unapplied-server}/0217-Signs-allow-color-codes.patch (100%) rename patches/{server => unapplied-server}/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch (100%) diff --git a/patches/api/0033-Grindstone-API.patch b/patches/api/0032-Grindstone-API.patch similarity index 100% rename from patches/api/0033-Grindstone-API.patch rename to patches/api/0032-Grindstone-API.patch diff --git a/patches/api/0034-Shears-can-have-looting-enchantment.patch b/patches/api/0033-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0034-Shears-can-have-looting-enchantment.patch rename to patches/api/0033-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0035-Lobotomize-stuck-villagers.patch b/patches/api/0034-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0035-Lobotomize-stuck-villagers.patch rename to patches/api/0034-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0036-Add-local-difficulty-api.patch b/patches/api/0035-Add-local-difficulty-api.patch similarity index 100% rename from patches/api/0036-Add-local-difficulty-api.patch rename to patches/api/0035-Add-local-difficulty-api.patch diff --git a/patches/api/0037-Remove-Timings.patch b/patches/api/0036-Remove-Timings.patch similarity index 100% rename from patches/api/0037-Remove-Timings.patch rename to patches/api/0036-Remove-Timings.patch diff --git a/patches/api/0038-Add-Bee-API.patch b/patches/api/0037-Add-Bee-API.patch similarity index 100% rename from patches/api/0038-Add-Bee-API.patch rename to patches/api/0037-Add-Bee-API.patch diff --git a/patches/api/0039-Debug-Marker-API.patch b/patches/api/0038-Debug-Marker-API.patch similarity index 100% rename from patches/api/0039-Debug-Marker-API.patch rename to patches/api/0038-Debug-Marker-API.patch diff --git a/patches/api/0040-Add-death-screen-API.patch b/patches/api/0039-Add-death-screen-API.patch similarity index 100% rename from patches/api/0040-Add-death-screen-API.patch rename to patches/api/0039-Add-death-screen-API.patch diff --git a/patches/api/0042-Language-API.patch b/patches/api/0040-Language-API.patch similarity index 100% rename from patches/api/0042-Language-API.patch rename to patches/api/0040-Language-API.patch diff --git a/patches/api/0043-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/api/0043-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0041-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/api/0044-Fire-Immunity-API.patch b/patches/api/0042-Fire-Immunity-API.patch similarity index 100% rename from patches/api/0044-Fire-Immunity-API.patch rename to patches/api/0042-Fire-Immunity-API.patch diff --git a/patches/api/0045-Added-goat-ram-event.patch b/patches/api/0043-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0045-Added-goat-ram-event.patch rename to patches/api/0043-Added-goat-ram-event.patch diff --git a/patches/api/0046-Add-PreExplodeEvents.patch b/patches/api/0044-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0046-Add-PreExplodeEvents.patch rename to patches/api/0044-Add-PreExplodeEvents.patch diff --git a/patches/api/0048-Explorer-Map-API.patch b/patches/api/0045-Explorer-Map-API.patch similarity index 100% rename from patches/api/0048-Explorer-Map-API.patch rename to patches/api/0045-Explorer-Map-API.patch diff --git a/patches/api/0050-Stonecutter-damage.patch b/patches/api/0046-Stonecutter-damage.patch similarity index 100% rename from patches/api/0050-Stonecutter-damage.patch rename to patches/api/0046-Stonecutter-damage.patch diff --git a/patches/api/0032-Potion-NamespacedKey.patch b/patches/dropped-api/0032-Potion-NamespacedKey.patch similarity index 100% rename from patches/api/0032-Potion-NamespacedKey.patch rename to patches/dropped-api/0032-Potion-NamespacedKey.patch diff --git a/patches/api/0041-Add-item-packet-serialize-event.patch b/patches/dropped-api/0041-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/api/0041-Add-item-packet-serialize-event.patch rename to patches/dropped-api/0041-Add-item-packet-serialize-event.patch diff --git a/patches/api/0047-Stored-Bee-API.patch b/patches/dropped-api/0047-Stored-Bee-API.patch similarity index 100% rename from patches/api/0047-Stored-Bee-API.patch rename to patches/dropped-api/0047-Stored-Bee-API.patch diff --git a/patches/api/0049-Add-hover-lines-API.patch b/patches/dropped-api/0049-Add-hover-lines-API.patch similarity index 100% rename from patches/api/0049-Add-hover-lines-API.patch rename to patches/dropped-api/0049-Add-hover-lines-API.patch diff --git a/patches/server/0211-Config-for-grindstones.patch b/patches/dropped-server/0211-Config-for-grindstones.patch similarity index 100% rename from patches/server/0211-Config-for-grindstones.patch rename to patches/dropped-server/0211-Config-for-grindstones.patch diff --git a/patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 100% rename from patches/server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch diff --git a/patches/server/0220-Potion-NamespacedKey.patch b/patches/dropped-server/0220-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0220-Potion-NamespacedKey.patch rename to patches/dropped-server/0220-Potion-NamespacedKey.patch diff --git a/patches/unapplied-server/0236-Configurable-food-attributes.patch b/patches/dropped-server/0236-Configurable-food-attributes.patch similarity index 100% rename from patches/unapplied-server/0236-Configurable-food-attributes.patch rename to patches/dropped-server/0236-Configurable-food-attributes.patch diff --git a/patches/server/0255-Send-client-custom-name-of-BE.patch b/patches/dropped-server/0255-Send-client-custom-name-of-BE.patch similarity index 97% rename from patches/server/0255-Send-client-custom-name-of-BE.patch rename to patches/dropped-server/0255-Send-client-custom-name-of-BE.patch index 964e26215..30f7486ef 100644 --- a/patches/server/0255-Send-client-custom-name-of-BE.patch +++ b/patches/dropped-server/0255-Send-client-custom-name-of-BE.patch @@ -3,6 +3,7 @@ From: Ben Kerllenevich Date: Wed, 13 Jul 2022 16:27:43 -0400 Subject: [PATCH] Send client custom name of BE +https://modrinth.com/mod/know-my-name diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java index 4ea15e17a1393864422edb6d5c57962651abf69a..a78ed43288cfefaeb2592ed0a33fd11565dea2b2 100644 diff --git a/patches/server/0263-Allay-respect-item-NBT.patch b/patches/dropped-server/0263-Allay-respect-item-NBT.patch similarity index 100% rename from patches/server/0263-Allay-respect-item-NBT.patch rename to patches/dropped-server/0263-Allay-respect-item-NBT.patch diff --git a/patches/unapplied-server/0271-Add-item-packet-serialize-event.patch b/patches/dropped-server/0271-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/unapplied-server/0271-Add-item-packet-serialize-event.patch rename to patches/dropped-server/0271-Add-item-packet-serialize-event.patch diff --git a/patches/server/0292-Add-hover-lines-API.patch b/patches/dropped-server/0292-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0292-Add-hover-lines-API.patch rename to patches/dropped-server/0292-Add-hover-lines-API.patch diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0016-Anvil-API.patch index 8de9cfd9e..588aaa9d2 100644 --- a/patches/server/0016-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -17,7 +17,7 @@ index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f0 // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..3d0a4380de7885c85d85f4ec1d4cf8a5044e93de 100644 +index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..9036426256f87b3ba4a78e6fa2cea4e028f84481 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -25,6 +25,13 @@ import org.slf4j.Logger; @@ -91,13 +91,12 @@ index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..3d0a4380de7885c85d85f4ec1d4cf8a5 ++i; } } -@@ -280,6 +298,13 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -280,6 +298,12 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } + // Purpur start + if (bypassCost && cost.get() >= maximumRepairCost) { -+ itemstack.addTagElement("Purpur.realCost", IntTag.valueOf(cost.get())); + cost.set(maximumRepairCost - 1); + } + // Purpur end @@ -105,7 +104,7 @@ index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..3d0a4380de7885c85d85f4ec1d4cf8a5 if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -301,6 +326,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -301,6 +325,12 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); diff --git a/patches/server/0019-Add-turtle-egg-block-options.patch b/patches/server/0018-Add-turtle-egg-block-options.patch similarity index 91% rename from patches/server/0019-Add-turtle-egg-block-options.patch rename to patches/server/0018-Add-turtle-egg-block-options.patch index efb936f2b..36642e86a 100644 --- a/patches/server/0019-Add-turtle-egg-block-options.patch +++ b/patches/server/0018-Add-turtle-egg-block-options.patch @@ -36,11 +36,11 @@ index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4bca5b5f3d10c3a04befd8c365f46433491f299..ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62 100644 +index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..66061f3f70161c8b95cd5f6a148ad6a008f3190d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -140,6 +140,15 @@ public class PurpurWorldConfig { - }); +@@ -108,6 +108,15 @@ public class PurpurWorldConfig { + idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); } + public boolean turtleEggsBreakFromExpOrbs = false; diff --git a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0019-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/server/0020-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0019-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/server/0021-Disable-outdated-build-check.patch b/patches/server/0020-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0021-Disable-outdated-build-check.patch rename to patches/server/0020-Disable-outdated-build-check.patch diff --git a/patches/server/0022-Giants-AI-settings.patch b/patches/server/0021-Giants-AI-settings.patch similarity index 97% rename from patches/server/0022-Giants-AI-settings.patch rename to patches/server/0021-Giants-AI-settings.patch index 1f14b308e..74299bb00 100644 --- a/patches/server/0022-Giants-AI-settings.patch +++ b/patches/server/0021-Giants-AI-settings.patch @@ -106,10 +106,10 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..3c1217d36522b1fd3d1a099d3a12d990 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e19ca58c9 100644 +index 66061f3f70161c8b95cd5f6a148ad6a008f3190d..9ec335f41361a39ff6bfdc93c53d242383dad594 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -554,6 +554,10 @@ public class PurpurWorldConfig { +@@ -522,6 +522,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -120,7 +120,7 @@ index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -570,6 +574,10 @@ public class PurpurWorldConfig { +@@ -538,6 +542,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0022-Zombie-horse-naturally-spawn.patch similarity index 94% rename from patches/server/0023-Zombie-horse-naturally-spawn.patch rename to patches/server/0022-Zombie-horse-naturally-spawn.patch index 8ff2f18f1..8d9ac230e 100644 --- a/patches/server/0023-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0022-Zombie-horse-naturally-spawn.patch @@ -30,10 +30,10 @@ index fc791a66d299905798c2c1ca542467e4c7933caf..b02d9db8442b209a9df27e417be71b11 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523f89af57f 100644 +index 9ec335f41361a39ff6bfdc93c53d242383dad594..d4dd472dcc85910046a1a01dfed207113359d53a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1487,6 +1487,7 @@ public class PurpurWorldConfig { +@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -41,7 +41,7 @@ index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -1503,6 +1504,7 @@ public class PurpurWorldConfig { +@@ -1471,6 +1472,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0024-Charged-creeper-naturally-spawn.patch b/patches/server/0023-Charged-creeper-naturally-spawn.patch similarity index 85% rename from patches/server/0024-Charged-creeper-naturally-spawn.patch rename to patches/server/0023-Charged-creeper-naturally-spawn.patch index 719013b12..854efa8c2 100644 --- a/patches/server/0024-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0023-Charged-creeper-naturally-spawn.patch @@ -5,29 +5,29 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..38241cd51086eb4dedc7fe47e9b199d443e5e033 100644 +index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..84114356ea4c06998572c03f2e2a75b49e539980 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -257,6 +257,14 @@ public class Creeper extends Monster implements PowerableMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth); } -+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { ++ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData) { + double chance = world.getLevel().purpurConfig.creeperChargedChance; + if (chance > 0D && random.nextDouble() <= chance) { + setPowered(true); + } -+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); ++ return super.finalizeSpawn(world, difficulty, spawnReason, entityData); + } + @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41822b9b050f4267cc0151ea85682523f89af57f..e033ef722d9b6336f1cbc6bdf404f35c34b45db9 100644 +index d4dd472dcc85910046a1a01dfed207113359d53a..67045185b1a82c3ac68aacefc2b4b6c6c2e1bfff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -345,6 +345,7 @@ public class PurpurWorldConfig { +@@ -313,6 +313,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = true; public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index 41822b9b050f4267cc0151ea85682523f89af57f..e033ef722d9b6336f1cbc6bdf404f35c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -355,6 +356,7 @@ public class PurpurWorldConfig { +@@ -323,6 +324,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 93% rename from patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch index da9dd0eab..fcdeca1e0 100644 --- a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch @@ -33,10 +33,10 @@ index 9eb1158213064ddb37ae76e445b5861b963a1f55..4abcde662ed78b16632ee575f695ee43 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1910cc8af 100644 +index 67045185b1a82c3ac68aacefc2b4b6c6c2e1bfff..d9c4914076c47cc37af36e1d084b62bd176562e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -988,6 +988,8 @@ public class PurpurWorldConfig { +@@ -956,6 +956,8 @@ public class PurpurWorldConfig { public boolean rabbitRidableInWater = true; public boolean rabbitControllable = true; public double rabbitMaxHealth = 3.0D; @@ -45,7 +45,7 @@ index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -998,6 +1000,8 @@ public class PurpurWorldConfig { +@@ -966,6 +968,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0027-Tulips-change-fox-type.patch b/patches/server/0026-Tulips-change-fox-type.patch similarity index 95% rename from patches/server/0027-Tulips-change-fox-type.patch rename to patches/server/0026-Tulips-change-fox-type.patch index 50f08714b..fa360d4f3 100644 --- a/patches/server/0027-Tulips-change-fox-type.patch +++ b/patches/server/0026-Tulips-change-fox-type.patch @@ -67,10 +67,10 @@ index 8666d82775570b812d5bdd80336c8e14db6ddf47..d2be8c1c23f291e98b9a31a63ba5fa7d // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a96aa7f127467a6ea8025c09f4e336f1910cc8af..d084d5ef20b2fb4d3b5479cb51003fb82a0358fc 100644 +index d9c4914076c47cc37af36e1d084b62bd176562e4..164f59cc8426088945528999ed3e347cfeee37f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -509,6 +509,7 @@ public class PurpurWorldConfig { +@@ -477,6 +477,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = true; public boolean foxControllable = true; public double foxMaxHealth = 10.0D; @@ -78,7 +78,7 @@ index a96aa7f127467a6ea8025c09f4e336f1910cc8af..d084d5ef20b2fb4d3b5479cb51003fb8 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -519,6 +520,7 @@ public class PurpurWorldConfig { +@@ -487,6 +488,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0028-Breedable-Polar-Bears.patch b/patches/server/0027-Breedable-Polar-Bears.patch similarity index 95% rename from patches/server/0028-Breedable-Polar-Bears.patch rename to patches/server/0027-Breedable-Polar-Bears.patch index 952012279..262716fab 100644 --- a/patches/server/0028-Breedable-Polar-Bears.patch +++ b/patches/server/0027-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 00afde0ec4811992aac306a42d473026b7e7e468..067bb175c457d6de089f18826dfce6c3 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562e724361a 100644 +index 164f59cc8426088945528999ed3e347cfeee37f5..084750aa09798e8d67642b5ac1cff339ec15c022 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -960,6 +960,8 @@ public class PurpurWorldConfig { +@@ -928,6 +928,8 @@ public class PurpurWorldConfig { public boolean polarBearRidableInWater = true; public boolean polarBearControllable = true; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -970,6 +972,9 @@ public class PurpurWorldConfig { +@@ -938,6 +940,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0029-Chickens-can-retaliate.patch b/patches/server/0028-Chickens-can-retaliate.patch similarity index 94% rename from patches/server/0029-Chickens-can-retaliate.patch rename to patches/server/0028-Chickens-can-retaliate.patch index b7479c92c..2f434f43d 100644 --- a/patches/server/0029-Chickens-can-retaliate.patch +++ b/patches/server/0028-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index a7c76e1d89f54f0dc3b27a8a8db168ea4570bf60..14210dac8a4fa8caaf69ec830f83d155 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f930922ed 100644 +index 084750aa09798e8d67642b5ac1cff339ec15c022..b67c2719a311c720b04343ff88d8170a495bca29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -299,6 +299,7 @@ public class PurpurWorldConfig { +@@ -267,6 +267,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -309,6 +310,7 @@ public class PurpurWorldConfig { +@@ -277,6 +278,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch b/patches/server/0029-Add-option-to-set-armorstand-step-height.patch similarity index 96% rename from patches/server/0030-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0029-Add-option-to-set-armorstand-step-height.patch index cb9752a8c..7f12d2d00 100644 --- a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0029-Add-option-to-set-armorstand-step-height.patch @@ -38,7 +38,7 @@ index c2bd2e303f956d390319f6bbbe9a6492ebec5154..5abbc0caf90cafc1a06dfff158c158b1 if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4cd6d9309ed81956d59063fe4d229c6f930922ed..6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82 100644 +index b67c2719a311c720b04343ff88d8170a495bca29..d5fb5919b0571e4327a9976dda78ef8510fc5d05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0031-Cat-spawning-options.patch b/patches/server/0030-Cat-spawning-options.patch similarity index 94% rename from patches/server/0031-Cat-spawning-options.patch rename to patches/server/0030-Cat-spawning-options.patch index 862db1dc6..9ebeec89a 100644 --- a/patches/server/0031-Cat-spawning-options.patch +++ b/patches/server/0030-Cat-spawning-options.patch @@ -46,10 +46,10 @@ index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa 100644 +index d5fb5919b0571e4327a9976dda78ef8510fc5d05..73b86b6a367cb37b180b4806671c19dccd90950a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -272,6 +272,9 @@ public class PurpurWorldConfig { +@@ -240,6 +240,9 @@ public class PurpurWorldConfig { public boolean catRidableInWater = true; public boolean catControllable = true; public double catMaxHealth = 10.0D; @@ -59,7 +59,7 @@ index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -282,6 +285,9 @@ public class PurpurWorldConfig { +@@ -250,6 +253,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0032-Cows-eat-mushrooms.patch b/patches/server/0031-Cows-eat-mushrooms.patch similarity index 97% rename from patches/server/0032-Cows-eat-mushrooms.patch rename to patches/server/0031-Cows-eat-mushrooms.patch index 4b9bf527b..270530355 100644 --- a/patches/server/0032-Cows-eat-mushrooms.patch +++ b/patches/server/0031-Cows-eat-mushrooms.patch @@ -115,10 +115,10 @@ index bee1a275f242866206dc461461b7962e04289ddc..bda0d933ccbee613aa7fb31534351a0d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa..ab5960b9104d362852ee3d6ba151cf78dd58a0ee 100644 +index 73b86b6a367cb37b180b4806671c19dccd90950a..0b19c023f020438418e41b6c2803399d967348dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -342,6 +342,7 @@ public class PurpurWorldConfig { +@@ -310,6 +310,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = true; public boolean cowControllable = true; public double cowMaxHealth = 10.0D; @@ -126,7 +126,7 @@ index c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa..ab5960b9104d362852ee3d6ba151cf78 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -352,6 +353,7 @@ public class PurpurWorldConfig { +@@ -320,6 +321,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0034-Pigs-give-saddle-back.patch b/patches/server/0033-Pigs-give-saddle-back.patch similarity index 92% rename from patches/server/0034-Pigs-give-saddle-back.patch rename to patches/server/0033-Pigs-give-saddle-back.patch index 0eb376a50..061e33bbd 100644 --- a/patches/server/0034-Pigs-give-saddle-back.patch +++ b/patches/server/0033-Pigs-give-saddle-back.patch @@ -27,10 +27,10 @@ index a365573c5c5e640f165701bc79f7c605674c5709..4f84406304114abbaff9f96a5df6a486 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab5960b9104d362852ee3d6ba151cf78dd58a0ee..1c530384c9040236ce525329f37913cdd3e424ff 100644 +index 0b19c023f020438418e41b6c2803399d967348dc..47d0a2413ecd71f823473f781eaf64a55b15fd11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -911,6 +911,7 @@ public class PurpurWorldConfig { +@@ -879,6 +879,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public boolean pigControllable = true; public double pigMaxHealth = 10.0D; @@ -38,7 +38,7 @@ index ab5960b9104d362852ee3d6ba151cf78dd58a0ee..1c530384c9040236ce525329f37913cd private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -921,6 +922,7 @@ public class PurpurWorldConfig { +@@ -889,6 +890,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch similarity index 91% rename from patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch index 4ac6f1b7e..9eeefc6eb 100644 --- a/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch @@ -24,10 +24,10 @@ index a54893d51cc1ce204e59a6ffe8b84228775af4da..0060414b1d5afde56372ce121e9d37a1 return tryRide(player, hand); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c530384c9040236ce525329f37913cdd3e424ff..acec5455e9c16508ae474e1307e3cc234d17e6ee 100644 +index 47d0a2413ecd71f823473f781eaf64a55b15fd11..7b1ff6e90ceb57a83fc1816b0e8023769b09de49 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1176,6 +1176,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1144,7 @@ public class PurpurWorldConfig { public boolean snowGolemControllable = true; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -35,7 +35,7 @@ index 1c530384c9040236ce525329f37913cdd3e424ff..acec5455e9c16508ae474e1307e3cc23 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1156,7 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch b/patches/server/0035-Ender-dragon-always-drop-full-exp.patch similarity index 91% rename from patches/server/0036-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0035-Ender-dragon-always-drop-full-exp.patch index 2226fff2e..1d91a0a0a 100644 --- a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0035-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 0a7f87ac09f9ef6ad69974090f0d6f437d232b11..f751444603e4a1a2ef53e7232b5abfff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index acec5455e9c16508ae474e1307e3cc234d17e6ee..a9d6c6713a098ca87d62b43d491bc2d9a8590741 100644 +index 7b1ff6e90ceb57a83fc1816b0e8023769b09de49..19b814ec4c204daf47841efbbccdb432ebe9d3ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -455,6 +455,7 @@ public class PurpurWorldConfig { +@@ -423,6 +423,7 @@ public class PurpurWorldConfig { public boolean enderDragonControllable = true; public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index acec5455e9c16508ae474e1307e3cc234d17e6ee..a9d6c6713a098ca87d62b43d491bc2d9 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -470,6 +471,7 @@ public class PurpurWorldConfig { +@@ -438,6 +439,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 85% rename from patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch index 184d03b5d..621f4dce8 100644 --- a/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,11 +18,11 @@ index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a9d6c6713a098ca87d62b43d491bc2d9a8590741..41b804abeab390a259eb0c8ed72f75ad403471dd 100644 +index 19b814ec4c204daf47841efbbccdb432ebe9d3ca..6b04a22f25060c02a51709057251b2669d9b170f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -145,6 +145,11 @@ public class PurpurWorldConfig { - }); +@@ -113,6 +113,11 @@ public class PurpurWorldConfig { + idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); } + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0038-Minecart-settings-and-WASD-controls.patch b/patches/server/0037-Minecart-settings-and-WASD-controls.patch similarity index 99% rename from patches/server/0038-Minecart-settings-and-WASD-controls.patch rename to patches/server/0037-Minecart-settings-and-WASD-controls.patch index b38b1d122..ac76ddce2 100644 --- a/patches/server/0038-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0037-Minecart-settings-and-WASD-controls.patch @@ -149,7 +149,7 @@ index 2034ca2edd3aff61d94416266e75402babd3e741..3c1091f2a729b7d06ba6e21c37f788ed protected ResourceKey drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 41b804abeab390a259eb0c8ed72f75ad403471dd..755d53e04bb0ed678bebc3497476e252dd5a736e 100644 +index 6b04a22f25060c02a51709057251b2669d9b170f..fbcfcb49ca801964ec904fb29171cf8e7fe9f184 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch similarity index 96% rename from patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch index 996296e66..a6a1844ff 100644 --- a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch @@ -25,7 +25,7 @@ index a3ee2af337acef86a15b12c9e6d8cd8452980a87..7b210484fd10e6e994c66afb45f8a28f // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 755d53e04bb0ed678bebc3497476e252dd5a736e..b7bf1a6e59e33d13887ae3d98f37658f52030e37 100644 +index fbcfcb49ca801964ec904fb29171cf8e7fe9f184..112966aab8baa01e727d01724db4d752395f7609 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch index 90595d0c8..32b057f17 100644 --- a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch @@ -19,7 +19,7 @@ index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042 return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7bf1a6e59e33d13887ae3d98f37658f52030e37..40493cbb1b14f16549b95aa439e4c25c04a0627c 100644 +index 112966aab8baa01e727d01724db4d752395f7609..c96caceb66932a731bbd702f0b8f5eb829855dc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0042-Skip-events-if-there-s-no-listeners.patch b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0042-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0041-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0043-Add-permission-for-F3-N-debug.patch b/patches/server/0042-Add-permission-for-F3-N-debug.patch similarity index 100% rename from patches/server/0043-Add-permission-for-F3-N-debug.patch rename to patches/server/0042-Add-permission-for-F3-N-debug.patch diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0043-Configurable-TPS-Catchup.patch similarity index 100% rename from patches/server/0044-Configurable-TPS-Catchup.patch rename to patches/server/0043-Configurable-TPS-Catchup.patch diff --git a/patches/server/0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch similarity index 96% rename from patches/server/0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch rename to patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index d357ceeda..fbfcc7735 100644 --- a/patches/server/0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,7 +18,7 @@ index 3ff06cc6ad35567bcb1f29115db63c11a8e79dbb..f7dd785bdb0dbd0706b367b48235215f if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 40493cbb1b14f16549b95aa439e4c25c04a0627c..a5ec746fc30af0093430bb7a7f6848081220ec57 100644 +index c96caceb66932a731bbd702f0b8f5eb829855dc1..e1c7a3ff87a3ecc0cb90acd0502a627be22982fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,9 +97,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0046-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch similarity index 91% rename from patches/server/0046-Add-enderman-and-creeper-griefing-controls.patch rename to patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch index 0ced16178..d79789f82 100644 --- a/patches/server/0046-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add enderman and creeper griefing controls diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 38241cd51086eb4dedc7fe47e9b199d443e5e033..9334a3b7d401c0f3a04bb7675f7baf9c7685688e 100644 +index 84114356ea4c06998572c03f2e2a75b49e539980..98c93c46694f1e67be803a7ca0c0f55532df2e95 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -38,10 +38,10 @@ index 3abfc4f449552ec60a1f7c4e3faa9fd0ebfdc300..89275ac02fcfab963b520efae6135d6f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c04316fec 100644 +index e1c7a3ff87a3ecc0cb90acd0502a627be22982fc..5c12dd12ea462137fd95a5e161742c54c097868a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -437,6 +437,7 @@ public class PurpurWorldConfig { +@@ -405,6 +405,7 @@ public class PurpurWorldConfig { public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -448,6 +449,7 @@ public class PurpurWorldConfig { +@@ -416,6 +417,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c } public boolean dolphinRidable = false; -@@ -554,6 +556,7 @@ public class PurpurWorldConfig { +@@ -522,6 +524,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = true; public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -564,6 +567,7 @@ public class PurpurWorldConfig { +@@ -532,6 +535,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0047-Villagers-follow-emerald-blocks.patch b/patches/server/0046-Villagers-follow-emerald-blocks.patch similarity index 94% rename from patches/server/0047-Villagers-follow-emerald-blocks.patch rename to patches/server/0046-Villagers-follow-emerald-blocks.patch index ca38dbc6b..e6a6d4347 100644 --- a/patches/server/0047-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0046-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index ac3cca0db4478841f91d966bd49ca4e5b5e91229..30f13bc35a96950f05b065b5c7783083 this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb42481c041e9 100644 +index 5c12dd12ea462137fd95a5e161742c54c097868a..90e8dd9c38f123e37826ac587d70ed3f4c1e43e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1435,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1403,7 @@ public class PurpurWorldConfig { public boolean villagerRidableInWater = true; public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; @@ -65,7 +65,7 @@ index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb424 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1414,7 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); @@ -73,7 +73,7 @@ index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb424 } public boolean vindicatorRidable = false; -@@ -1467,6 +1469,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1437,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = true; public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb424 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1477,6 +1480,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1448,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0048-Allow-leashing-villagers.patch b/patches/server/0047-Allow-leashing-villagers.patch similarity index 94% rename from patches/server/0048-Allow-leashing-villagers.patch rename to patches/server/0047-Allow-leashing-villagers.patch index 33f1f3212..4dd25724e 100644 --- a/patches/server/0048-Allow-leashing-villagers.patch +++ b/patches/server/0047-Allow-leashing-villagers.patch @@ -49,10 +49,10 @@ index 30f13bc35a96950f05b065b5c77830834e5792d1..9d5eaaf1869a3ecb61947ab0c09af558 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346af890ae0 100644 +index 90e8dd9c38f123e37826ac587d70ed3f4c1e43e0..62c8414d89d83fdaedcbbb783b84047364ef4b43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1436,6 +1436,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1404,7 @@ public class PurpurWorldConfig { public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1447,6 +1448,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1416,7 @@ public class PurpurWorldConfig { } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346 } public boolean vindicatorRidable = false; -@@ -1470,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1438,6 +1440,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1481,6 +1484,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1452,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0049-Implement-infinite-liquids.patch b/patches/server/0048-Implement-infinite-liquids.patch similarity index 95% rename from patches/server/0049-Implement-infinite-liquids.patch rename to patches/server/0048-Implement-infinite-liquids.patch index e52ee6bdf..0e33f8952 100644 --- a/patches/server/0049-Implement-infinite-liquids.patch +++ b/patches/server/0048-Implement-infinite-liquids.patch @@ -67,10 +67,10 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c07064174a0ef81a9bbe628251ee1346af890ae0..5e9ce4502f5219b941ffc6f341c95d39755af664 100644 +index 62c8414d89d83fdaedcbbb783b84047364ef4b43..bbf7a39f35e14117ce96f1df59d400edb75c1816 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -221,6 +221,11 @@ public class PurpurWorldConfig { +@@ -189,6 +189,11 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } @@ -82,7 +82,7 @@ index c07064174a0ef81a9bbe628251ee1346af890ae0..5e9ce4502f5219b941ffc6f341c95d39 public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; -@@ -230,6 +235,11 @@ public class PurpurWorldConfig { +@@ -198,6 +203,11 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } diff --git a/patches/server/0050-Make-lava-flow-speed-configurable.patch b/patches/server/0049-Make-lava-flow-speed-configurable.patch similarity index 92% rename from patches/server/0050-Make-lava-flow-speed-configurable.patch rename to patches/server/0049-Make-lava-flow-speed-configurable.patch index ba688f13d..4c08d6686 100644 --- a/patches/server/0050-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0049-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e9ce4502f5219b941ffc6f341c95d39755af664..09c131e3b5282d1ac1230ddc2677f2a49449dc48 100644 +index bbf7a39f35e14117ce96f1df59d400edb75c1816..917cbc020f8c6d25df6d809c6fea0242d424f2e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -222,8 +222,12 @@ public class PurpurWorldConfig { +@@ -190,8 +190,12 @@ public class PurpurWorldConfig { } public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0051-Add-player-death-exp-control-options.patch b/patches/server/0050-Add-player-death-exp-control-options.patch similarity index 95% rename from patches/server/0051-Add-player-death-exp-control-options.patch rename to patches/server/0050-Add-player-death-exp-control-options.patch index ae4a16619..de28460f0 100644 --- a/patches/server/0051-Add-player-death-exp-control-options.patch +++ b/patches/server/0050-Add-player-death-exp-control-options.patch @@ -32,7 +32,7 @@ index d5383e9cbbee2f9d4223319ae38abed41a13cfb3..a838f339dd0085660164b0eb1597e0a1 return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09c131e3b5282d1ac1230ddc2677f2a49449dc48..66e12893bb9d8984a8cd2916834c5e86058f47bb 100644 +index 917cbc020f8c6d25df6d809c6fea0242d424f2e9..9efb2bf7614f160fd9871dcfbe764c5c5913c728 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -171,6 +171,8 @@ public class PurpurWorldConfig { @@ -52,4 +52,4 @@ index 09c131e3b5282d1ac1230ddc2677f2a49449dc48..66e12893bb9d8984a8cd2916834c5e86 + playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); } - public boolean silkTouchEnabled = false; + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0052-Configurable-void-damage-height-and-damage.patch b/patches/server/0051-Configurable-void-damage-height-and-damage.patch similarity index 97% rename from patches/server/0052-Configurable-void-damage-height-and-damage.patch rename to patches/server/0051-Configurable-void-damage-height-and-damage.patch index 8adbee6ec..0d02f425e 100644 --- a/patches/server/0052-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0051-Configurable-void-damage-height-and-damage.patch @@ -31,7 +31,7 @@ index 7b210484fd10e6e994c66afb45f8a28ffb5812f1..ed8833ed95584cdf9be2b931915277c0 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 9efb2bf7614f160fd9871dcfbe764c5c5913c728..8e5fdabb6931b11fd0fe4859be651ad3d34425b0 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/server/0053-Add-canSaveToDisk-to-Entity.patch b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch similarity index 95% rename from patches/server/0053-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0052-Add-canSaveToDisk-to-Entity.patch index cd30c40fc..0503b956b 100644 --- a/patches/server/0053-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch @@ -48,7 +48,7 @@ index bee39dee1b96023c907407877aedf3aafaf5e1b8..5b6bc200381a486c99061f9f5b7121c2 final EntityType entityType = entity.getType(); final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java -index b7e3994879a2b1de0c504f122b0c3c3229e4c356..3e846f38902024875d1961b16a60c50201df309d 100644 +index 89c476c740b4efb4f44c1dcd384b908626d96780..f25abee6dbf99c8d08f8e09db02b41df86115faa 100644 --- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -36,6 +36,13 @@ public class DolphinSpit extends LlamaSpit { @@ -66,7 +66,7 @@ index b7e3994879a2b1de0c504f122b0c3c3229e4c356..3e846f38902024875d1961b16a60c502 super_tick(); diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java -index bc139e518c8214246c3f514b64f987bdd5de6f23..11825590af9346c61d5d15e5ef446b3c77b81b54 100644 +index c0b7e0eeffdf31b88662232b07944bf3e6fa2148..75e31aee6e706f042398444f272888f9ad0fa3f4 100644 --- a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -38,6 +38,13 @@ public class PhantomFlames extends LlamaSpit { diff --git a/patches/server/0054-Dispenser-curse-of-binding-protection.patch b/patches/server/0053-Dispenser-curse-of-binding-protection.patch similarity index 92% rename from patches/server/0054-Dispenser-curse-of-binding-protection.patch rename to patches/server/0053-Dispenser-curse-of-binding-protection.patch index 9ceca7396..d328b8ed7 100644 --- a/patches/server/0054-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0053-Dispenser-curse-of-binding-protection.patch @@ -43,11 +43,11 @@ index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103 // 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 8e5fdabb6931b11fd0fe4859be651ad3d34425b0..88f775c79f946d73984cbd89cc6273c04271c676 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 { - }); +@@ -192,6 +192,11 @@ public class PurpurWorldConfig { + playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); } + public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch similarity index 95% rename from patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch index dfbc74be0..d5489a040 100644 --- a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch @@ -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 88f775c79f946d73984cbd89cc6273c04271c676..b9adcd0772674ba2d2f0d523b1adad57055b6e2a 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/server/0056-Mending-mends-most-damages-equipment-first.patch b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch similarity index 98% rename from patches/server/0056-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0055-Mending-mends-most-damages-equipment-first.patch index e73241890..329b32553 100644 --- a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch @@ -73,7 +73,7 @@ index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d8251 public static java.util.Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, stack -> true); 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 b9adcd0772674ba2d2f0d523b1adad57055b6e2a..956072d6feefd5cefa2c1c666972557d2f212331 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/server/0057-Add-5-second-tps-average-in-tps.patch b/patches/server/0056-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0057-Add-5-second-tps-average-in-tps.patch rename to patches/server/0056-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0058-Implement-elytra-settings.patch b/patches/server/0057-Implement-elytra-settings.patch similarity index 98% rename from patches/server/0058-Implement-elytra-settings.patch rename to patches/server/0057-Implement-elytra-settings.patch index 7056a98c0..64864116d 100644 --- a/patches/server/0058-Implement-elytra-settings.patch +++ b/patches/server/0057-Implement-elytra-settings.patch @@ -91,7 +91,7 @@ index 47de500fddb0716d142f8f5876a82a95afaa06fa..b094f4ec513194e10442156d8f7f2205 entityhuman.startAutoSpinAttack(20); 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 956072d6feefd5cefa2c1c666972557d2f212331..0d5563dd3c61e4ed28ba4b1a1725501de1e9e3c3 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/server/0059-Item-entity-immunities.patch b/patches/server/0058-Item-entity-immunities.patch similarity index 98% rename from patches/server/0059-Item-entity-immunities.patch rename to patches/server/0058-Item-entity-immunities.patch index c45cb2d67..20c9d3c5f 100644 --- a/patches/server/0059-Item-entity-immunities.patch +++ b/patches/server/0058-Item-entity-immunities.patch @@ -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 0d5563dd3c61e4ed28ba4b1a1725501de1e9e3c3..40edab1e1c83b02de14af76ea4949bbcede84f6f 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/server/0060-Add-ping-command.patch b/patches/server/0059-Add-ping-command.patch similarity index 100% rename from patches/server/0060-Add-ping-command.patch rename to patches/server/0059-Add-ping-command.patch diff --git a/patches/server/0061-Add-demo-command.patch b/patches/server/0060-Add-demo-command.patch similarity index 100% rename from patches/server/0061-Add-demo-command.patch rename to patches/server/0060-Add-demo-command.patch diff --git a/patches/server/0062-Add-credits-command.patch b/patches/server/0061-Add-credits-command.patch similarity index 100% rename from patches/server/0062-Add-credits-command.patch rename to patches/server/0061-Add-credits-command.patch diff --git a/patches/server/0063-Configurable-jockey-options.patch b/patches/server/0062-Configurable-jockey-options.patch similarity index 95% rename from patches/server/0063-Configurable-jockey-options.patch rename to patches/server/0062-Configurable-jockey-options.patch index 8b8ec6285..4bea52e17 100644 --- a/patches/server/0063-Configurable-jockey-options.patch +++ b/patches/server/0062-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ 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 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef853e00ab 100644 +index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a5ca13a0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -588,6 +588,9 @@ public class PurpurWorldConfig { +@@ -556,6 +556,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -599,6 +602,9 @@ public class PurpurWorldConfig { +@@ -567,6 +570,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef } public boolean elderGuardianRidable = false; -@@ -847,6 +853,9 @@ public class PurpurWorldConfig { +@@ -815,6 +821,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -858,6 +867,9 @@ public class PurpurWorldConfig { +@@ -826,6 +835,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef } public boolean illusionerRidable = false; -@@ -1674,6 +1686,9 @@ public class PurpurWorldConfig { +@@ -1642,6 +1654,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1685,6 +1700,9 @@ public class PurpurWorldConfig { +@@ -1653,6 +1668,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 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef } public boolean zombieHorseRidable = false; -@@ -1721,6 +1739,9 @@ public class PurpurWorldConfig { +@@ -1689,6 +1707,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1732,6 +1753,9 @@ public class PurpurWorldConfig { +@@ -1700,6 +1721,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 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef } public boolean zombifiedPiglinRidable = false; -@@ -1739,6 +1763,9 @@ public class PurpurWorldConfig { +@@ -1707,6 +1731,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1750,5 +1777,8 @@ public class PurpurWorldConfig { +@@ -1718,5 +1745,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 98% rename from patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index b8b783a89..d58cf2d6b 100644 --- a/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -256,10 +256,10 @@ 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 7fabef36d3f9a5294a62ed956010d7ef853e00ab..e1652079b92a5c951b5191997803e9d486892c61 100644 +index 0d016b2c3aa623c2cfa48ab5faa7481a5ca13a0f..cbc5cf3b5a2d2b0ccb6b7ba9ee509a35e9f8ae63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1065,6 +1065,9 @@ public class PurpurWorldConfig { +@@ -1033,6 +1033,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index 7fabef36d3f9a5294a62ed956010d7ef853e00ab..e1652079b92a5c951b5191997803e9d4 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1086,6 +1089,9 @@ public class PurpurWorldConfig { +@@ -1054,6 +1057,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0065-Add-phantom-spawning-options.patch b/patches/server/0064-Add-phantom-spawning-options.patch similarity index 96% rename from patches/server/0065-Add-phantom-spawning-options.patch rename to patches/server/0064-Add-phantom-spawning-options.patch index 3bd99a5d7..207759689 100644 --- a/patches/server/0065-Add-phantom-spawning-options.patch +++ b/patches/server/0064-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ 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 e1652079b92a5c951b5191997803e9d486892c61..10de2140aa89f75e7f67b38f6c1286f4330d127b 100644 +index cbc5cf3b5a2d2b0ccb6b7ba9ee509a35e9f8ae63..ba65dc9930376f014164ca95b607c23b092e2573 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1068,6 +1068,12 @@ public class PurpurWorldConfig { +@@ -1036,6 +1036,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index e1652079b92a5c951b5191997803e9d486892c61..10de2140aa89f75e7f67b38f6c1286f4 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1092,6 +1098,12 @@ public class PurpurWorldConfig { +@@ -1060,6 +1066,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0066-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch similarity index 93% rename from patches/server/0066-Implement-bed-explosion-options.patch rename to patches/server/0065-Implement-bed-explosion-options.patch index 2ff47c399..89efb6afe 100644 --- a/patches/server/0066-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -27,11 +27,11 @@ index e9f8949267208b93f0c56c36ada38274ed4280f5..9084e11df829fb24489773d15435a3a3 } } 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 ba65dc9930376f014164ca95b607c23b092e2573..b1d307815d6090ed32e0178bee8ed720ecb022ce 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 { - }); +@@ -252,6 +252,27 @@ public class PurpurWorldConfig { + playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); } + public boolean bedExplode = true; diff --git a/patches/server/0067-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch similarity index 95% rename from patches/server/0067-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0066-Implement-respawn-anchor-explosion-options.patch index 1cf02a3c0..aca026954 100644 --- a/patches/server/0067-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 4e2fad1f234356ada6f29445038e43b9a8406cf9..6f3f53940431afc7a22b262d9d34bc0a 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 b1d307815d6090ed32e0178bee8ed720ecb022ce..60e9354c77a2cd2e684252a6d67710822b555743 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 { +@@ -292,6 +292,27 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0068-Add-allow-water-in-end-world-option.patch b/patches/server/0067-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/server/0068-Add-allow-water-in-end-world-option.patch rename to patches/server/0067-Add-allow-water-in-end-world-option.patch diff --git a/patches/server/0069-Entity-lifespan.patch b/patches/server/0068-Entity-lifespan.patch similarity index 98% rename from patches/server/0069-Entity-lifespan.patch rename to patches/server/0068-Entity-lifespan.patch index 5e9facec0..d304d3b75 100644 --- a/patches/server/0069-Entity-lifespan.patch +++ b/patches/server/0068-Entity-lifespan.patch @@ -94,7 +94,7 @@ index c4392a997061aa4939e5ad7dcacf5e39cbecc55a..e7251ac940b49564c83b4b603e49c399 } 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 60e9354c77a2cd2e684252a6d67710822b555743..d5026545ae9126e979103cf7b701867a4d21d9bf 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/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 96% rename from patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 21154237b..e0226a01d 100644 --- a/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -48,7 +48,7 @@ index 9a2725e3f61a7d37943518cc760b17859a0938bb..9a912752b12730a8fb09f5a6ab5a8638 } } 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 d5026545ae9126e979103cf7b701867a4d21d9bf..7822c9d78f49a9e1c2ce42cf689d7afe0e4d7b69 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 { @@ -66,4 +66,4 @@ index 9ba3a90e1af9c733949c52988c56c05af46356e8..98e6faaeeaf8a983f9d730591a9d85c3 + teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); } - public boolean silkTouchEnabled = false; + public boolean bedExplode = true; diff --git a/patches/server/0071-Squid-EAR-immunity.patch b/patches/server/0070-Squid-EAR-immunity.patch similarity index 91% rename from patches/server/0071-Squid-EAR-immunity.patch rename to patches/server/0070-Squid-EAR-immunity.patch index 6e6183b7a..edd1010b4 100644 --- a/patches/server/0071-Squid-EAR-immunity.patch +++ b/patches/server/0070-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630629ec132 100644 +index 7822c9d78f49a9e1c2ce42cf689d7afe0e4d7b69..fb36eac6390e31e9611f94174668d29a89c6f5d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1453,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1421,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1462,6 +1463,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1431,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0072-Phantoms-burn-in-light.patch b/patches/server/0071-Phantoms-burn-in-light.patch similarity index 96% rename from patches/server/0072-Phantoms-burn-in-light.patch rename to patches/server/0071-Phantoms-burn-in-light.patch index d35474462..01bae219a 100644 --- a/patches/server/0072-Phantoms-burn-in-light.patch +++ b/patches/server/0071-Phantoms-burn-in-light.patch @@ -51,10 +51,10 @@ 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 27d279d76fd3632fd023edded3b10630629ec132..dcd9f80eb69e34b514f57158568e4cb59e9860ec 100644 +index fb36eac6390e31e9611f94174668d29a89c6f5d9..cfa0faec3609126b1f76f4840e813efda52192d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1123,6 +1123,9 @@ public class PurpurWorldConfig { +@@ -1091,6 +1091,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index 27d279d76fd3632fd023edded3b10630629ec132..dcd9f80eb69e34b514f57158568e4cb5 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1153,6 +1156,9 @@ public class PurpurWorldConfig { +@@ -1121,6 +1124,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0073-Configurable-villager-breeding.patch b/patches/server/0072-Configurable-villager-breeding.patch similarity index 91% rename from patches/server/0073-Configurable-villager-breeding.patch rename to patches/server/0072-Configurable-villager-breeding.patch index 71c318976..f6f8f1a68 100644 --- a/patches/server/0073-Configurable-villager-breeding.patch +++ b/patches/server/0072-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ 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 dcd9f80eb69e34b514f57158568e4cb59e9860ec..df4f384032f398fc9852e753dee820ffa33e10bb 100644 +index cfa0faec3609126b1f76f4840e813efda52192d1..aa429a369a5fa7225b4dcadfae79e665f69b3365 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { +@@ -1579,6 +1579,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index dcd9f80eb69e34b514f57158568e4cb59e9860ec..df4f384032f398fc9852e753dee820ff private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1623,6 +1624,7 @@ public class PurpurWorldConfig { +@@ -1591,6 +1592,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0074-Redstone-deactivates-spawners.patch b/patches/server/0073-Redstone-deactivates-spawners.patch similarity index 91% rename from patches/server/0074-Redstone-deactivates-spawners.patch rename to patches/server/0073-Redstone-deactivates-spawners.patch index 41653f9a7..2a96b9869 100644 --- a/patches/server/0074-Redstone-deactivates-spawners.patch +++ b/patches/server/0073-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ 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 aa429a369a5fa7225b4dcadfae79e665f69b3365..008b01f578441f35397b39bdb2e4dd6a4b0e7948 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 { +@@ -320,6 +320,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0074-Totems-work-in-inventory.patch similarity index 95% rename from patches/server/0075-Totems-work-in-inventory.patch rename to patches/server/0074-Totems-work-in-inventory.patch index 1babbff8a..c9e33d02a 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0074-Totems-work-in-inventory.patch @@ -28,7 +28,7 @@ index 9a912752b12730a8fb09f5a6ab5a8638b555e3e3..2ea60043f3bbf6cce77799f6c74ffe1f 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 008b01f578441f35397b39bdb2e4dd6a4b0e7948..58d9ce9b8fb97d947c265b6ffdd5e864a1aad012 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 { @@ -46,4 +46,4 @@ index 85d2030c58fb97be82c97a042bc5d73e76274268..be916fe3a8bc8996be8b0835e3bd8f79 + totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } - public boolean silkTouchEnabled = false; + public boolean bedExplode = true; diff --git a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch similarity index 91% rename from patches/server/0076-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0075-Add-vindicator-johnny-spawn-chance.patch index 34abb4304..929db38c4 100644 --- a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,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 be916fe3a8bc8996be8b0835e3bd8f7920c15055..7b584d5c8460e90dfea250591e4ca36cb1db004a 100644 +index 58d9ce9b8fb97d947c265b6ffdd5e864a1aad012..17ff9373ecc58d1d197c97c490ce6c6cdb5a62c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1638,6 +1638,7 @@ public class PurpurWorldConfig { +@@ -1606,6 +1606,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index be916fe3a8bc8996be8b0835e3bd8f7920c15055..7b584d5c8460e90dfea250591e4ca36c private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1648,6 +1649,7 @@ public class PurpurWorldConfig { +@@ -1616,6 +1617,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0077-Dispensers-place-anvils-option.patch b/patches/server/0076-Dispensers-place-anvils-option.patch similarity index 94% rename from patches/server/0077-Dispensers-place-anvils-option.patch rename to patches/server/0076-Dispensers-place-anvils-option.patch index 0dbf632e9..e7ddd7e89 100644 --- a/patches/server/0077-Dispensers-place-anvils-option.patch +++ b/patches/server/0076-Dispensers-place-anvils-option.patch @@ -32,10 +32,10 @@ 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 17ff9373ecc58d1d197c97c490ce6c6cdb5a62c3..7a5b2c4ac1a4ab952fd23474ddf4f37926fc3ff5 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 { +@@ -283,8 +283,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0078-Allow-anvil-colors.patch b/patches/server/0077-Allow-anvil-colors.patch similarity index 92% rename from patches/server/0078-Allow-anvil-colors.patch rename to patches/server/0077-Allow-anvil-colors.patch index 2197690e8..b309a5b2a 100644 --- a/patches/server/0078-Allow-anvil-colors.patch +++ b/patches/server/0077-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 3d0a4380de7885c85d85f4ec1d4cf8a5044e93de..62a69dc13406bb0144948bf4bd265c3a28bfe14b 100644 +index 9036426256f87b3ba4a78e6fa2cea4e028f84481..5cadd69bcae33b1de58806fcf40533850d976154 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,11 +64,11 @@ index 3d0a4380de7885c85d85f4ec1d4cf8a5044e93de..62a69dc13406bb0144948bf4bd265c3a } } 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 7a5b2c4ac1a4ab952fd23474ddf4f37926fc3ff5..a846066d44340a588fe532b2e19dc6de19ff8f07 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 { - }); +@@ -261,6 +261,13 @@ public class PurpurWorldConfig { + totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } + public boolean anvilAllowColors = false; diff --git a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 90% rename from patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch index 23dbd04de..bf6aa83e6 100644 --- a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9..b9faaf71e0cd5918b072d068bbc2096aa2805616 100644 +index a846066d44340a588fe532b2e19dc6de19ff8f07..a371280fffdf9d9bc35a412aacf8c9e6220aa5eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -610,6 +610,7 @@ public class PurpurWorldConfig { +@@ -578,6 +578,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9..b9faaf71e0cd5918b072d068bbc2096a private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -622,6 +623,7 @@ public class PurpurWorldConfig { +@@ -590,6 +591,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0080-Short-enderman-height.patch b/patches/server/0079-Short-enderman-height.patch similarity index 100% rename from patches/server/0080-Short-enderman-height.patch rename to patches/server/0079-Short-enderman-height.patch diff --git a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch b/patches/server/0080-Stop-squids-floating-on-top-of-water.patch similarity index 94% rename from patches/server/0081-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0080-Stop-squids-floating-on-top-of-water.patch index 0ce118bf6..8c6fcc8e9 100644 --- a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0080-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ 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 b9faaf71e0cd5918b072d068bbc2096aa2805616..56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c 100644 +index a371280fffdf9d9bc35a412aacf8c9e6220aa5eb..3bd08df44e11ded9bf70a3e66cfa2b3a324a38db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1478,6 +1478,7 @@ public class PurpurWorldConfig { +@@ -1446,6 +1446,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index b9faaf71e0cd5918b072d068bbc2096aa2805616..56f34c0a0f7bc94a90bb1db32f8e30a5 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1488,6 +1489,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1457,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0083-Entities-can-use-portals-configuration.patch b/patches/server/0082-Entities-can-use-portals-configuration.patch similarity index 97% rename from patches/server/0083-Entities-can-use-portals-configuration.patch rename to patches/server/0082-Entities-can-use-portals-configuration.patch index 571526817..5eb7e6a28 100644 --- a/patches/server/0083-Entities-can-use-portals-configuration.patch +++ b/patches/server/0082-Entities-can-use-portals-configuration.patch @@ -27,7 +27,7 @@ index 9a3796a69dd8745a498be5f2bb06c50355af44ce..a93ae9de698ce97e8603deb1075e6dc5 public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c..1f25407aafba71762a482f0b1982302fed14387f 100644 +index 3bd08df44e11ded9bf70a3e66cfa2b3a324a38db..7c241acf936147cdff652548a66fa9c2664894c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,6 +98,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0084-LivingEntity-broadcastItemBreak.patch b/patches/server/0083-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0084-LivingEntity-broadcastItemBreak.patch rename to patches/server/0083-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0085-Customizable-wither-health-and-healing.patch b/patches/server/0084-Customizable-wither-health-and-healing.patch similarity index 92% rename from patches/server/0085-Customizable-wither-health-and-healing.patch rename to patches/server/0084-Customizable-wither-health-and-healing.patch index 0ce62c319..9cd3b13f7 100644 --- a/patches/server/0085-Customizable-wither-health-and-healing.patch +++ b/patches/server/0084-Customizable-wither-health-and-healing.patch @@ -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 1f25407aafba71762a482f0b1982302fed14387f..beea39d7cdbca783de7248a5c40ea2c7ab02e5b5 100644 +index 7c241acf936147cdff652548a66fa9c2664894c4..ff10f3166f1ac4a7ef978080162865b6c336ba13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1717,6 +1717,8 @@ public class PurpurWorldConfig { +@@ -1685,6 +1685,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 1f25407aafba71762a482f0b1982302fed14387f..beea39d7cdbca783de7248a5c40ea2c7 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1732,6 +1734,8 @@ public class PurpurWorldConfig { +@@ -1700,6 +1702,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch similarity index 98% rename from patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch index a123bfffa..c2f472afc 100644 --- a/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch @@ -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 ff10f3166f1ac4a7ef978080162865b6c336ba13..226e6055a712b81ae5831257786d496768ccea56 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 { diff --git a/patches/server/0087-Raid-cooldown-setting.patch b/patches/server/0086-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0087-Raid-cooldown-setting.patch rename to patches/server/0086-Raid-cooldown-setting.patch index 439cbff14..56febeda8 100644 --- a/patches/server/0087-Raid-cooldown-setting.patch +++ b/patches/server/0086-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ 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 226e6055a712b81ae5831257786d496768ccea56..d1802b8a5c1bd300bba6989c8bfa6c78accc041a 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 { diff --git a/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch similarity index 90% rename from patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch index f165920ab..b41e71c73 100644 --- a/patches/server/0088-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ 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..8fd3f4a95dd53ace40d76be248b2dbc54806533e 100644 +index d1802b8a5c1bd300bba6989c8bfa6c78accc041a..42d342ff59ca98cc4b79195f2aeb430a89c6ba9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -286,6 +286,39 @@ public class PurpurWorldConfig { @@ -47,6 +47,6 @@ index 9654023afbb0569d5d814368b93b74dedda905a4..8fd3f4a95dd53ace40d76be248b2dbc5 + //} + } + - public boolean silkTouchEnabled = false; - public String silkTouchSpawnerName = "Monster Spawner"; - public List silkTouchSpawnerLore = new ArrayList<>(); + public boolean anvilAllowColors = false; + public boolean anvilColorsUseMiniMessage; + private void anvilSettings() { diff --git a/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch index e666b9ce9..60a229425 100644 --- a/patches/server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -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 8fd3f4a95dd53ace40d76be248b2dbc54806533e..462af0111df5e245bf705f46585924e57a7217cc 100644 +index 42d342ff59ca98cc4b79195f2aeb430a89c6ba9b..ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1850,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1818,6 +1818,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 8fd3f4a95dd53ace40d76be248b2dbc54806533e..462af0111df5e245bf705f46585924e5 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1864,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1833,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0091-Flying-squids-Oh-my.patch b/patches/server/0090-Flying-squids-Oh-my.patch similarity index 94% rename from patches/server/0091-Flying-squids-Oh-my.patch rename to patches/server/0090-Flying-squids-Oh-my.patch index 866d81961..748f4d805 100644 --- a/patches/server/0091-Flying-squids-Oh-my.patch +++ b/patches/server/0090-Flying-squids-Oh-my.patch @@ -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 462af0111df5e245bf705f46585924e57a7217cc..7fe8d50f7cf314477d3877826deaed07feabb4b5 100644 +index ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9..e6aa3036b089b509a6187e9909c353eb129369b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -902,10 +902,12 @@ public class PurpurWorldConfig { +@@ -870,10 +870,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index 462af0111df5e245bf705f46585924e57a7217cc..7fe8d50f7cf314477d3877826deaed07 } public boolean goatRidable = false; -@@ -1537,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1507,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 462af0111df5e245bf705f46585924e57a7217cc..7fe8d50f7cf314477d3877826deaed07 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1548,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1516,6 +1519,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0092-Infinity-bow-settings.patch b/patches/server/0091-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0092-Infinity-bow-settings.patch rename to patches/server/0091-Infinity-bow-settings.patch index 977483671..46571573d 100644 --- a/patches/server/0092-Infinity-bow-settings.patch +++ b/patches/server/0091-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..4ae6b98b6a0d41e949b055f0678200a6 } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7fe8d50f7cf314477d3877826deaed07feabb4b5..848292e607c7977aec8bd81d8bc42398fdffd3dd 100644 +index e6aa3036b089b509a6187e9909c353eb129369b9..4b88a659aeff786bcca0e8bd068fa6dadf63d17e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Configurable-daylight-cycle.patch b/patches/server/0092-Configurable-daylight-cycle.patch similarity index 98% rename from patches/server/0093-Configurable-daylight-cycle.patch rename to patches/server/0092-Configurable-daylight-cycle.patch index a3b53e602..776d42e7b 100644 --- a/patches/server/0093-Configurable-daylight-cycle.patch +++ b/patches/server/0092-Configurable-daylight-cycle.patch @@ -88,7 +88,7 @@ index 1c74802577e056b9023dcc2cbec5885d02fe2c92..aef5157d183b69903fd215a5ce30c070 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 848292e607c7977aec8bd81d8bc42398fdffd3dd..ff057de0327eeb15d374c923729dafac5d811f2a 100644 +index 4b88a659aeff786bcca0e8bd068fa6dadf63d17e..910a88e731b64a20d88d0137e6ecb975180be71e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -122,6 +122,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0094-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/server/0094-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/server/0095-Furnace-uses-lava-from-underneath.patch b/patches/server/0094-Furnace-uses-lava-from-underneath.patch similarity index 96% rename from patches/server/0095-Furnace-uses-lava-from-underneath.patch rename to patches/server/0094-Furnace-uses-lava-from-underneath.patch index 7a9172b42..cb8e67b25 100644 --- a/patches/server/0095-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0094-Furnace-uses-lava-from-underneath.patch @@ -47,10 +47,10 @@ index a99fe191c429bb528209dd0f31b509acf9cccbb5..ce2c424068001eec16032361baa206f6 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder 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 ff057de0327eeb15d374c923729dafac5d811f2a..666ff3e30e09c91653bf51041afc95799c8955fe 100644 +index 910a88e731b64a20d88d0137e6ecb975180be71e..6bf609f2fe54ace1a9f8126cbc2b1ec2e4131c18 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -409,6 +409,17 @@ public class PurpurWorldConfig { +@@ -377,6 +377,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0096-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0096-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0095-Arrows-should-not-reset-despawn-counter.patch index e7c9d3f19..3b1af187f 100644 --- a/patches/server/0096-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch @@ -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 666ff3e30e09c91653bf51041afc95799c8955fe..4386ae1f2f1e0340ad045023124693f619cf4283 100644 +index 6bf609f2fe54ace1a9f8126cbc2b1ec2e4131c18..693b9ea8dcc05c07d5d3e79eab582015079ea69d 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/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 617553f73..c8131c15f 100644 --- a/patches/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0096-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 4386ae1f2f1e0340ad045023124693f619cf4283..364933d9f861adb2957b2f636f1608f3cee3ab66 100644 +index 693b9ea8dcc05c07d5d3e79eab582015079ea69d..e3df00971e9510614bbad71cdb506653209d0820 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -410,8 +410,10 @@ public class PurpurWorldConfig { +@@ -378,8 +378,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch index e46937f85..31fa5dc74 100644 --- a/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 2e44e9ea9558ebc1456d9bbf53561988e33ce845..edd9762e2475aa8828930ada59eb331a 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 364933d9f861adb2957b2f636f1608f3cee3ab66..c469fc30efcc71af34b446475af16870049487b6 100644 +index e3df00971e9510614bbad71cdb506653209d0820..febcde8f02354c9621b3ded08af1363c549c4cfc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,6 +115,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Make-entity-breeding-times-configurable.patch b/patches/server/0098-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0099-Make-entity-breeding-times-configurable.patch rename to patches/server/0098-Make-entity-breeding-times-configurable.patch index 1c94c6bb1..f77cce220 100644 --- a/patches/server/0099-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0098-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 3bfc073fb142e3446044a42c33be6c30587cc3c4..a770ae0e13c4dad296dfb8f33259408e public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de89b627098 100644 +index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3dcd330df7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -501,10 +501,12 @@ public class PurpurWorldConfig { +@@ -469,10 +469,12 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; @@ -554,7 +554,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean batRidable = false; -@@ -544,6 +546,7 @@ public class PurpurWorldConfig { +@@ -512,6 +514,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -562,7 +562,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -555,6 +558,7 @@ public class PurpurWorldConfig { +@@ -523,6 +526,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -570,7 +570,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean blazeRidable = false; -@@ -582,6 +586,7 @@ public class PurpurWorldConfig { +@@ -550,6 +554,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -578,7 +578,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -590,6 +595,7 @@ public class PurpurWorldConfig { +@@ -558,6 +563,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -586,7 +586,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean catRidable = false; -@@ -599,6 +605,7 @@ public class PurpurWorldConfig { +@@ -567,6 +573,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -594,7 +594,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -612,6 +619,7 @@ public class PurpurWorldConfig { +@@ -580,6 +587,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -602,7 +602,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean caveSpiderRidable = false; -@@ -635,6 +643,7 @@ public class PurpurWorldConfig { +@@ -603,6 +611,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -610,7 +610,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -646,6 +655,7 @@ public class PurpurWorldConfig { +@@ -614,6 +623,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -618,7 +618,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean codRidable = false; -@@ -667,6 +677,7 @@ public class PurpurWorldConfig { +@@ -635,6 +645,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -626,7 +626,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -678,6 +689,7 @@ public class PurpurWorldConfig { +@@ -646,6 +657,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -634,7 +634,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean creeperRidable = false; -@@ -729,6 +741,7 @@ public class PurpurWorldConfig { +@@ -697,6 +709,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -642,7 +642,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -744,6 +757,7 @@ public class PurpurWorldConfig { +@@ -712,6 +725,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -650,7 +650,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean drownedRidable = false; -@@ -863,6 +877,7 @@ public class PurpurWorldConfig { +@@ -831,6 +845,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -658,7 +658,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -874,17 +889,20 @@ public class PurpurWorldConfig { +@@ -842,17 +857,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -679,7 +679,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean ghastRidable = false; -@@ -952,11 +970,13 @@ public class PurpurWorldConfig { +@@ -920,11 +938,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = true; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -693,7 +693,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean guardianRidable = false; -@@ -977,6 +997,7 @@ public class PurpurWorldConfig { +@@ -945,6 +965,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -701,7 +701,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -987,6 +1008,7 @@ public class PurpurWorldConfig { +@@ -955,6 +976,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -709,7 +709,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean horseRidableInWater = false; -@@ -996,6 +1018,7 @@ public class PurpurWorldConfig { +@@ -964,6 +986,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -717,7 +717,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1011,6 +1034,7 @@ public class PurpurWorldConfig { +@@ -979,6 +1002,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -725,7 +725,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean huskRidable = false; -@@ -1088,6 +1112,7 @@ public class PurpurWorldConfig { +@@ -1056,6 +1080,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -733,7 +733,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1105,6 +1130,7 @@ public class PurpurWorldConfig { +@@ -1073,6 +1098,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -741,7 +741,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean magmaCubeRidable = false; -@@ -1133,6 +1159,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1127,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = true; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -749,7 +749,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1143,6 +1170,7 @@ public class PurpurWorldConfig { +@@ -1111,6 +1138,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -757,7 +757,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean muleRidableInWater = false; -@@ -1152,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1120,6 +1148,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -765,7 +765,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1167,12 +1196,14 @@ public class PurpurWorldConfig { +@@ -1135,12 +1164,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -780,7 +780,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1183,12 +1214,14 @@ public class PurpurWorldConfig { +@@ -1151,12 +1182,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -795,7 +795,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1199,6 +1232,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1200,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -803,7 +803,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean parrotRidable = false; -@@ -1282,6 +1316,7 @@ public class PurpurWorldConfig { +@@ -1250,6 +1284,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -811,7 +811,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1293,6 +1328,7 @@ public class PurpurWorldConfig { +@@ -1261,6 +1296,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -819,7 +819,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean piglinRidable = false; -@@ -1349,6 +1385,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1353,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -827,7 +827,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1362,6 +1399,7 @@ public class PurpurWorldConfig { +@@ -1330,6 +1367,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -835,7 +835,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean pufferfishRidable = false; -@@ -1384,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1352,6 +1390,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -843,7 +843,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1396,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1403,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -851,7 +851,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean ravagerRidable = false; -@@ -1432,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1440,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -859,7 +859,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1442,6 +1483,7 @@ public class PurpurWorldConfig { +@@ -1410,6 +1451,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -867,7 +867,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean shulkerRidable = false; -@@ -1565,11 +1607,13 @@ public class PurpurWorldConfig { +@@ -1533,11 +1575,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -881,7 +881,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean squidRidable = false; -@@ -1628,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1640,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -889,7 +889,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1638,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1606,6 +1651,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -897,7 +897,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean tadpoleRidable = false; -@@ -1658,6 +1704,7 @@ public class PurpurWorldConfig { +@@ -1626,6 +1672,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -905,7 +905,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1675,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1643,6 +1690,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -913,7 +913,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean tropicalFishRidable = false; -@@ -1695,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1663,6 +1711,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -921,7 +921,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1705,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1722,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -929,7 +929,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean vexRidable = false; -@@ -1732,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1700,6 +1750,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -937,7 +937,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1745,6 +1796,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1764,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -945,7 +945,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 } public boolean vindicatorRidable = false; -@@ -1856,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1824,6 +1876,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -953,7 +953,7 @@ index c469fc30efcc71af34b446475af16870049487b6..4e2619e07b177cd8ce732e58da538de8 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1866,6 +1919,7 @@ public class PurpurWorldConfig { +@@ -1834,6 +1887,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 98% rename from patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch index 10be57c75..ba1ee76bc 100644 --- a/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index 530167ce8e5bb72a418f8ec61411e38a5892fd72..35dc7546793dba34bf6debad3f214f61 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e2619e07b177cd8ce732e58da538de89b627098..2d9429ef5884f0ee542c2fb197ae263c2e5d6577 100644 +index b34df3578dbf8d3aa7ac75598d1a1f3dcd330df7..d362bc34ec171d55abc5fe7699bb31917c19e4f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 9f1520e4e..0750ce961 100644 --- a/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d9429ef5884f0ee542c2fb197ae263c2e5d6577..57abd6df4548586ad22c77249d99201662352a3a 100644 +index d362bc34ec171d55abc5fe7699bb31917c19e4f0..e00eda1d7767fdd01b9ef90a8b2d56350b05b92e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 91% rename from patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index ad36279f0..d1456f40f 100644 --- a/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index cb307a9419399e33a895376a584456f084691965..052a0c168268b7e788953063f54c3769 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 57abd6df4548586ad22c77249d99201662352a3a..ed2bc4524167521bdfb1b9c516106b14b4b05e50 100644 +index e00eda1d7767fdd01b9ef90a8b2d56350b05b92e..8a35a9ad7a81308237a3c69ea9a1330a0e8b7548 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -833,6 +833,7 @@ public class PurpurWorldConfig { +@@ -801,6 +801,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 57abd6df4548586ad22c77249d99201662352a3a..ed2bc4524167521bdfb1b9c516106b14 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -844,6 +845,7 @@ public class PurpurWorldConfig { +@@ -812,6 +813,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0103-Add-configurable-snowball-damage.patch b/patches/server/0102-Add-configurable-snowball-damage.patch similarity index 85% rename from patches/server/0103-Add-configurable-snowball-damage.patch rename to patches/server/0102-Add-configurable-snowball-damage.patch index 40c99b476..2abf89257 100644 --- a/patches/server/0103-Add-configurable-snowball-damage.patch +++ b/patches/server/0102-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed2bc4524167521bdfb1b9c516106b14b4b05e50..1f41804ec120b2e50ef99ef50d41d44a91ba3814 100644 +index 8a35a9ad7a81308237a3c69ea9a1330a0e8b7548..a63c53c5d0309237337f3ef927b0eec8e7a6fbb5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -350,6 +350,11 @@ public class PurpurWorldConfig { @@ -30,6 +30,6 @@ index ed2bc4524167521bdfb1b9c516106b14b4b05e50..1f41804ec120b2e50ef99ef50d41d44a + snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); + } + - public boolean silkTouchEnabled = false; - public String silkTouchSpawnerName = "Monster Spawner"; - public List silkTouchSpawnerLore = new ArrayList<>(); + public boolean anvilAllowColors = false; + public boolean anvilColorsUseMiniMessage; + private void anvilSettings() { diff --git a/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch similarity index 95% rename from patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch index 8b6a20da9..8eb17c4e5 100644 --- a/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch @@ -18,7 +18,7 @@ index e7251ac940b49564c83b4b603e49c3990fc85db1..34d00acc43d2541307aa90a77a3c5d19 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f41804ec120b2e50ef99ef50d41d44a91ba3814..e84e5007a0952a77b991ff6c00549af28aa54230 100644 +index a63c53c5d0309237337f3ef927b0eec8e7a6fbb5..c1fb70e037639828ef9209b78dcb0869496093db 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -156,8 +156,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0105-Add-boat-fall-damage-config.patch b/patches/server/0104-Add-boat-fall-damage-config.patch similarity index 97% rename from patches/server/0105-Add-boat-fall-damage-config.patch rename to patches/server/0104-Add-boat-fall-damage-config.patch index c484f066f..73b88d5a5 100644 --- a/patches/server/0105-Add-boat-fall-damage-config.patch +++ b/patches/server/0104-Add-boat-fall-damage-config.patch @@ -27,7 +27,7 @@ index 03b206289d103a36d19dcf3154f10ad98f976ba2..fe250c154aed8b10e33c6b916cabedb0 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e84e5007a0952a77b991ff6c00549af28aa54230..ca268aa514e7581d134083fe61e8a93fa0a00171 100644 +index c1fb70e037639828ef9209b78dcb0869496093db..75ec9a5e012ba7bccfbd980a9b38a78239f2ec85 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0106-Snow-Golem-rate-of-fire-config.patch b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0106-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0105-Snow-Golem-rate-of-fire-config.patch index 9e85504e1..d912b82d1 100644 --- a/patches/server/0106-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca268aa514e7581d134083fe61e8a93fa0a00171..c034b4686a1f5c67daef7ece163b92f54c6813d4 100644 +index 75ec9a5e012ba7bccfbd980a9b38a78239f2ec85..c08e2bd031aff2baa0ec5588b0c035f38949ca88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1606,6 +1606,10 @@ public class PurpurWorldConfig { +@@ -1574,6 +1574,10 @@ public class PurpurWorldConfig { public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index ca268aa514e7581d134083fe61e8a93fa0a00171..c034b4686a1f5c67daef7ece163b92f5 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1618,6 +1622,10 @@ public class PurpurWorldConfig { +@@ -1586,6 +1590,10 @@ public class PurpurWorldConfig { } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0107-EMC-Configurable-disable-give-dropping.patch b/patches/server/0106-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0107-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0106-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 5ffeb5da5..f3ea47ce2 100644 --- a/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 1316f4475802e17039800cc6128e1b065328beb7..d02e2d1aceac651e06a3a3698b7ac64d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c034b4686a1f5c67daef7ece163b92f54c6813d4..aebeb25fcb6b9a72ad52d249f8df794c3f5cce11 100644 +index c08e2bd031aff2baa0ec5588b0c035f38949ca88..c6eeb701abd00f7a7772eac8ef5ed438228b3bb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1808,6 +1808,8 @@ public class PurpurWorldConfig { +@@ -1776,6 +1776,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index c034b4686a1f5c67daef7ece163b92f54c6813d4..aebeb25fcb6b9a72ad52d249f8df794c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1822,6 +1824,8 @@ public class PurpurWorldConfig { +@@ -1790,6 +1792,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 852c71611..105b98b42 100644 --- a/patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 75c34d9fcc4b33d30b18f1ce4c8749a068744abc..6be751e2d434982a35bbbece4f4fc463 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aebeb25fcb6b9a72ad52d249f8df794c3f5cce11..83d1581201ee97547d6d3bfdf3926e74432d6e37 100644 +index c6eeb701abd00f7a7772eac8ef5ed438228b3bb7..a46f31d3e57b961af5b31534ff214399f4f33e83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2054,6 +2054,7 @@ public class PurpurWorldConfig { +@@ -2022,6 +2022,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index aebeb25fcb6b9a72ad52d249f8df794c3f5cce11..83d1581201ee97547d6d3bfdf3926e74 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2068,5 +2069,6 @@ public class PurpurWorldConfig { +@@ -2036,5 +2037,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 90% rename from patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch index 79b91e158..cc73b95d7 100644 --- a/patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 4212c3921a4059c539ca37f9609ef50538bc1fae..bdfa848bff4fac6dcf590aefa958e2ce31294bad 100644 +index 4212c3921a4059c539ca37f9609ef50538bc1fae..5c74febb5ff6632a35f856717a6c44df38c1d329 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -30,6 +30,8 @@ import net.minecraft.world.DifficultyInstance; @@ -57,7 +57,7 @@ index 4212c3921a4059c539ca37f9609ef50538bc1fae..bdfa848bff4fac6dcf590aefa958e2ce private static final float START_HEALTH = 8.0F; private static final float TAME_HEALTH = 40.0F; private static final float ARMOR_REPAIR_UNIT = 0.125F; -@@ -156,6 +189,37 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.wolfNaturalRabid; -+ this.updatePathfinders(false); -+ return super.finalizeSpawn(world, difficulty, type, data, nbt); -+ } + @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -163,6 +227,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Llama.class, 24.0F, 1.5D, 1.5D)); @@ -103,7 +96,7 @@ index 4212c3921a4059c539ca37f9609ef50538bc1fae..bdfa848bff4fac6dcf590aefa958e2ce this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -176,7 +241,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Player.class, 10, true, false, this::isAngryAt)); @@ -112,7 +105,7 @@ index 4212c3921a4059c539ca37f9609ef50538bc1fae..bdfa848bff4fac6dcf590aefa958e2ce this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -219,6 +284,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.wolfNaturalRabid; ++ this.updatePathfinders(false); ++ // Purpur end ++ + return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData); + } + +@@ -295,6 +364,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1676,7 +1676,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1237,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1205,6 +1266,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1684,7 +1684,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean mooshroomRidable = false; -@@ -1244,6 +1306,7 @@ public class PurpurWorldConfig { +@@ -1212,6 +1274,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1692,7 +1692,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1255,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1223,6 +1286,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1700,7 +1700,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean muleRidableInWater = false; -@@ -1265,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1233,6 +1297,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1708,7 +1708,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1281,6 +1346,7 @@ public class PurpurWorldConfig { +@@ -1249,6 +1314,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1716,7 +1716,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean ocelotRidable = false; -@@ -1288,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1322,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1724,7 +1724,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1299,6 +1366,7 @@ public class PurpurWorldConfig { +@@ -1267,6 +1334,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1732,7 +1732,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean pandaRidable = false; -@@ -1306,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1274,6 +1342,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1740,7 +1740,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1317,6 +1386,7 @@ public class PurpurWorldConfig { +@@ -1285,6 +1354,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1748,7 +1748,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean parrotRidable = false; -@@ -1324,6 +1394,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1362,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1756,7 +1756,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1335,6 +1406,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1374,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1764,7 +1764,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean phantomRidable = false; -@@ -1361,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1329,6 +1401,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1772,7 +1772,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1395,6 +1468,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1436,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1780,7 +1780,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean pigRidable = false; -@@ -1403,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1371,6 +1445,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1788,7 +1788,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1415,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1383,6 +1458,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1796,7 +1796,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean piglinRidable = false; -@@ -1422,6 +1498,7 @@ public class PurpurWorldConfig { +@@ -1390,6 +1466,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1804,7 +1804,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1433,12 +1510,14 @@ public class PurpurWorldConfig { +@@ -1401,12 +1478,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1819,7 +1819,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1449,6 +1528,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1496,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1827,7 +1827,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean pillagerRidable = false; -@@ -1456,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1424,6 +1504,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1835,7 +1835,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1467,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1516,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1843,7 +1843,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean polarBearRidable = false; -@@ -1476,6 +1558,7 @@ public class PurpurWorldConfig { +@@ -1444,6 +1526,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1851,7 +1851,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1490,11 +1573,13 @@ public class PurpurWorldConfig { +@@ -1458,11 +1541,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1865,7 +1865,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1504,6 +1589,7 @@ public class PurpurWorldConfig { +@@ -1472,6 +1557,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1873,7 +1873,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean rabbitRidable = false; -@@ -1514,6 +1600,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1568,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1881,7 +1881,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1528,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1496,6 +1583,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1889,7 +1889,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean ravagerRidable = false; -@@ -1535,6 +1623,7 @@ public class PurpurWorldConfig { +@@ -1503,6 +1591,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1897,7 +1897,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1546,11 +1635,13 @@ public class PurpurWorldConfig { +@@ -1514,11 +1603,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1911,7 +1911,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1560,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1619,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1919,7 +1919,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean sheepRidable = false; -@@ -1568,6 +1660,7 @@ public class PurpurWorldConfig { +@@ -1536,6 +1628,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1927,7 +1927,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1580,12 +1673,14 @@ public class PurpurWorldConfig { +@@ -1548,12 +1641,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1942,7 +1942,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1596,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1659,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1950,7 +1950,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean silverfishRidable = false; -@@ -1603,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1571,6 +1667,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1958,7 +1958,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1614,12 +1711,14 @@ public class PurpurWorldConfig { +@@ -1582,12 +1679,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1973,7 +1973,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1630,6 +1729,7 @@ public class PurpurWorldConfig { +@@ -1598,6 +1697,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1981,7 +1981,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean skeletonHorseRidable = false; -@@ -1641,6 +1741,7 @@ public class PurpurWorldConfig { +@@ -1609,6 +1709,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1989,7 +1989,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1657,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1625,6 +1726,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1997,7 +1997,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean slimeRidable = false; -@@ -1666,6 +1768,7 @@ public class PurpurWorldConfig { +@@ -1634,6 +1736,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2005,7 +2005,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1679,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1647,6 +1750,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2013,7 +2013,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean snowGolemRidable = false; -@@ -1692,6 +1796,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1764,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2021,7 +2021,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1709,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1782,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2029,7 +2029,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean snifferRidable = false; -@@ -1730,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1698,6 +1804,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2037,7 +2037,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1742,12 +1849,14 @@ public class PurpurWorldConfig { +@@ -1710,12 +1817,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2052,7 +2052,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1758,12 +1867,14 @@ public class PurpurWorldConfig { +@@ -1726,12 +1835,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2067,7 +2067,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1774,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1742,6 +1853,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2075,7 +2075,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean striderRidable = false; -@@ -1782,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1862,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2083,7 +2083,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1794,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1762,6 +1875,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2091,7 +2091,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean tadpoleRidable = false; -@@ -1815,6 +1929,7 @@ public class PurpurWorldConfig { +@@ -1783,6 +1897,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2099,7 +2099,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1833,11 +1948,13 @@ public class PurpurWorldConfig { +@@ -1801,11 +1916,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2113,7 +2113,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1847,6 +1964,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1932,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2121,7 +2121,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean turtleRidable = false; -@@ -1854,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1822,6 +1940,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2129,7 +2129,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1865,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1833,6 +1952,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2137,7 +2137,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean vexRidable = false; -@@ -1872,6 +1992,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1960,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2145,7 +2145,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1883,6 +2004,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1972,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2153,7 +2153,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean villagerRidable = false; -@@ -1896,6 +2018,7 @@ public class PurpurWorldConfig { +@@ -1864,6 +1986,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2161,7 +2161,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1913,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +2004,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2169,7 +2169,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean vindicatorRidable = false; -@@ -1920,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1888,6 +2012,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2177,7 +2177,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1931,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -1899,6 +2024,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2185,7 +2185,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean wanderingTraderRidable = false; -@@ -1939,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -1907,6 +2033,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2193,7 +2193,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1951,6 +2078,7 @@ public class PurpurWorldConfig { +@@ -1919,6 +2046,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2201,7 +2201,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean wardenRidable = false; -@@ -1966,6 +2094,7 @@ public class PurpurWorldConfig { +@@ -1934,6 +2062,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2209,7 +2209,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1976,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2073,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2217,7 +2217,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean witherRidable = false; -@@ -1986,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -1954,6 +2084,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2225,7 +2225,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2004,12 +2135,14 @@ public class PurpurWorldConfig { +@@ -1972,12 +2103,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2240,7 +2240,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2020,6 +2153,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2121,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2248,7 +2248,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean wolfRidable = false; -@@ -2030,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -1998,6 +2132,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2256,7 +2256,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2048,12 +2183,14 @@ public class PurpurWorldConfig { +@@ -2016,12 +2151,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2271,7 +2271,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2064,6 +2201,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2169,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2279,7 +2279,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean zombieRidable = false; -@@ -2076,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2044,6 +2182,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2287,7 +2287,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2092,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2060,6 +2199,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2295,7 +2295,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean zombieHorseRidable = false; -@@ -2104,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2072,6 +2212,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2303,7 +2303,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2121,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2089,6 +2230,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2311,7 +2311,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean zombieVillagerRidable = false; -@@ -2131,6 +2273,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2241,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2319,7 +2319,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2145,6 +2288,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2256,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2327,7 +2327,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad } public boolean zombifiedPiglinRidable = false; -@@ -2156,6 +2300,7 @@ public class PurpurWorldConfig { +@@ -2124,6 +2268,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2335,7 +2335,7 @@ index 26a62a67b80b520246c0b118900fa2db20c96fcf..b4b9520cbd113abfd8cb99168c7f90ad private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2171,5 +2316,6 @@ public class PurpurWorldConfig { +@@ -2139,5 +2284,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0125-Config-to-always-tame-in-Creative.patch b/patches/server/0124-Config-to-always-tame-in-Creative.patch similarity index 95% rename from patches/server/0125-Config-to-always-tame-in-Creative.patch rename to patches/server/0124-Config-to-always-tame-in-Creative.patch index 4bd60e246..b2ff0cba7 100644 --- a/patches/server/0125-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0124-Config-to-always-tame-in-Creative.patch @@ -46,10 +46,10 @@ index 7b139028ae5c590960e6b8a74b6ba667f3db7f5d..490d7f8ac402f50a2f2f90ca03216978 this.level().broadcastEntityEvent(this, (byte) 7); } else { 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 04a5fe5044b68868f35616104a56217051a035ae..5e9678ad46de7faf3136eec49e3b68b14cdfe4a4 100644 +index cfcfa1dfb6d0512124ac226c2dc8274c837c21dd..4a866ba9ac3ce9403d490f48df88ab334ae3e5ae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -645,7 +645,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { @@ -50,10 +50,10 @@ index 490d7f8ac402f50a2f2f90ca032169784a402c0f..ceee7594d983512c21c35077434a86d1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0127081efd973efd40a9ec5fc0d94092021c688..f64fc6d1fd21b63752694b5dbfcf618e619a359e 100644 +index 18d4a212e4372352e9600872b953ae842c4ed01c..db6ab54957c590c707f61b95de01b55bf0fd9ca4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1556,6 +1556,7 @@ public class PurpurWorldConfig { +@@ -1524,6 +1524,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index d0127081efd973efd40a9ec5fc0d94092021c688..f64fc6d1fd21b63752694b5dbfcf618e private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1568,6 +1569,7 @@ public class PurpurWorldConfig { +@@ -1536,6 +1537,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch similarity index 96% rename from patches/server/0163-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0162-Configurable-powered-rail-boost-modifier.patch index bba929534..6c67b1459 100644 --- a/patches/server/0163-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch @@ -18,7 +18,7 @@ index 97172e9c53c381d451111227feb4d1fa19d38ad8..e7a1ce585c9e552e6f9ce9acd26fdfe5 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f64fc6d1fd21b63752694b5dbfcf618e619a359e..8e5faebee176a1ff625bb46b9dddd5391bc80a34 100644 +index db6ab54957c590c707f61b95de01b55bf0fd9ca4..45cbf5d77b6a0776ffc6362db369ddc2821ac3de 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -275,6 +275,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch similarity index 96% rename from patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch index 96d2d3aab..d9228bcbd 100644 --- a/patches/server/0164-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch @@ -18,7 +18,7 @@ index e7f45fe435f679afb4fabe657922d7354183c6fb..f45794bf2b418f94961681bac8b0f39f f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e5faebee176a1ff625bb46b9dddd5391bc80a34..97f2212ca175ad6152acc3fab35dd6d1c2e83a8b 100644 +index 45cbf5d77b6a0776ffc6362db369ddc2821ac3de..4508699964ef7e388d8874cd3a227a6d08e8e8ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -372,6 +372,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch similarity index 92% rename from patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch index 97e587b05..caf0a5390 100644 --- a/patches/server/0165-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97f2212ca175ad6152acc3fab35dd6d1c2e83a8b..96d04052d419e4b74826c63fb4a687bf7490d4c1 100644 +index 4508699964ef7e388d8874cd3a227a6d08e8e8ad..251776c4c1c4ad9d4128a14b3a489ad81b2f7e02 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -537,6 +537,11 @@ public class PurpurWorldConfig { +@@ -505,6 +505,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0166-Config-for-unverified-username-message.patch b/patches/server/0165-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0166-Config-for-unverified-username-message.patch rename to patches/server/0165-Config-for-unverified-username-message.patch diff --git a/patches/server/0167-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch similarity index 93% rename from patches/server/0167-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0166-Make-anvil-cumulative-cost-configurable.patch index 829be282e..1004fa1d5 100644 --- a/patches/server/0167-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 128c2c6f1b94d934d4d306f70c8ace08e4dc48d1..581d784316a07594570374c1a03e5174c0f91580 100644 +index 17067510990f575bf638f6a95ed0d964f6e94dc5..2747f04e657154362af55eef1dd50455e02af371 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -392,7 +392,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -391,7 +391,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int cost) { diff --git a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch similarity index 94% rename from patches/server/0168-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0167-Bee-can-work-when-raining-or-at-night.patch index 60d07cfc7..5673e90d1 100644 --- a/patches/server/0168-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96d04052d419e4b74826c63fb4a687bf7490d4c1..7d89fc67d4f9b58697ff317a0c526be8e612e37a 100644 +index 251776c4c1c4ad9d4128a14b3a489ad81b2f7e02..870443b9214fc1221b4105c67b58002e6f0a505f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -764,6 +764,8 @@ public class PurpurWorldConfig { +@@ -732,6 +732,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 96d04052d419e4b74826c63fb4a687bf7490d4c1..7d89fc67d4f9b58697ff317a0c526be8 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -777,6 +779,8 @@ public class PurpurWorldConfig { +@@ -745,6 +747,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0169-API-for-any-mob-to-burn-daylight.patch b/patches/server/0168-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from patches/server/0169-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0168-API-for-any-mob-to-burn-daylight.patch diff --git a/patches/server/0170-Config-MobEffect-by-world.patch b/patches/server/0169-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0170-Config-MobEffect-by-world.patch rename to patches/server/0169-Config-MobEffect-by-world.patch index 3c3567bac..3fade3a5c 100644 --- a/patches/server/0170-Config-MobEffect-by-world.patch +++ b/patches/server/0169-Config-MobEffect-by-world.patch @@ -72,7 +72,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d89fc67d4f9b58697ff317a0c526be8e612e37a..515c15d6d8f87a1aa677db0cdf7605bbd2421fe0 100644 +index 870443b9214fc1221b4105c67b58002e6f0a505f..7725eca13f7a4ca3f07054090fff66a50ef8ba30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -331,6 +331,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0171-Beacon-Activation-Range-Configurable.patch b/patches/server/0170-Beacon-Activation-Range-Configurable.patch similarity index 94% rename from patches/server/0171-Beacon-Activation-Range-Configurable.patch rename to patches/server/0170-Beacon-Activation-Range-Configurable.patch index 2100d9037..17f392847 100644 --- a/patches/server/0171-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0170-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index dd1fe8357ccf084880a7f3d4d9e499bde672c787..37ce2605c8803d8d87770bf6a95a83aa } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 515c15d6d8f87a1aa677db0cdf7605bbd2421fe0..991e8491c5bc254eb2ba0cbdcd06cb410d286fbb 100644 +index 7725eca13f7a4ca3f07054090fff66a50ef8ba30..25bd2cac6fc8d09fc0a1902868ca6cbd77a214c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -504,6 +504,17 @@ public class PurpurWorldConfig { +@@ -472,6 +472,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0172-Make-lightning-rod-range-configurable.patch b/patches/server/0171-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0172-Make-lightning-rod-range-configurable.patch rename to patches/server/0171-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 97% rename from patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index a8dea9b8f..798db8d40 100644 --- a/patches/server/0173-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,7 +54,7 @@ index b89860d451d92ddda64b7e4144542b7fc5fd86f0..08a6cca64ddd49826a0bbddd7711187c public void eat(ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 991e8491c5bc254eb2ba0cbdcd06cb410d286fbb..ee94f8f165428072ae2f27d2f70a15b6aa3b242a 100644 +index 25bd2cac6fc8d09fc0a1902868ca6cbd77a214c7..dcfd7934da0962f83dcb0f63d471402dd7340389 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -388,6 +388,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0174-Allow-player-join-full-server-by-permission.patch b/patches/server/0173-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0174-Allow-player-join-full-server-by-permission.patch rename to patches/server/0173-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0175-Add-portal-permission-bypass.patch b/patches/server/0174-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0175-Add-portal-permission-bypass.patch rename to patches/server/0174-Add-portal-permission-bypass.patch diff --git a/patches/server/0176-Shulker-spawn-from-bullet-options.patch b/patches/server/0175-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0176-Shulker-spawn-from-bullet-options.patch rename to patches/server/0175-Shulker-spawn-from-bullet-options.patch index 8aba1f071..0c748698c 100644 --- a/patches/server/0176-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0175-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 2202798612cad53aff28c499b8909a7292a37ad5..5ed2b7d15686fc9aa6dc7c03c337433c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ee94f8f165428072ae2f27d2f70a15b6aa3b242a..cc612f8328abfa27d784181c5aebbcd9e0b10c05 100644 +index dcfd7934da0962f83dcb0f63d471402dd7340389..882cc1117196c70d64887bcc1f04c2977270009f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1907,6 +1907,11 @@ public class PurpurWorldConfig { +@@ -1875,6 +1875,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index ee94f8f165428072ae2f27d2f70a15b6aa3b242a..cc612f8328abfa27d784181c5aebbcd9 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1918,6 +1923,11 @@ public class PurpurWorldConfig { +@@ -1886,6 +1891,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch similarity index 95% rename from patches/server/0177-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0176-Eating-glow-berries-adds-glow-effect.patch index 7b11d8d14..ab7574b0e 100644 --- a/patches/server/0177-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 6467358f5fdf4cd4f7c1e2cc65c834a9da39596a..42b322879629afb2d2fc64a215f010f5d5ce9e02 100644 +index d00b59efb754594cf532f8598f4b6d3b29693232..6c423952cfecc8f1afeac88dfecfe292d81bbf83 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -1909,7 +1909,7 @@ public class Items { @@ -18,7 +18,7 @@ index 6467358f5fdf4cd4f7c1e2cc65c834a9da39596a..42b322879629afb2d2fc64a215f010f5 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc612f8328abfa27d784181c5aebbcd9e0b10c05..b21d288f62f473cd9d1057d3d2a452f16b0291d0 100644 +index 882cc1117196c70d64887bcc1f04c2977270009f..0323644442a3263f12b146d29928e7ad09774549 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -220,6 +220,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0178-Option-to-make-drowned-break-doors.patch b/patches/server/0177-Option-to-make-drowned-break-doors.patch similarity index 94% rename from patches/server/0178-Option-to-make-drowned-break-doors.patch rename to patches/server/0177-Option-to-make-drowned-break-doors.patch index e15f078e0..9dd166c74 100644 --- a/patches/server/0178-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0177-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index f037d50f26f7532f11a71790448de7a71644b6ca..2547ac49721e2840da2845076d5e62a1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b21d288f62f473cd9d1057d3d2a452f16b0291d0..5a3dad2ba18f56724e22ec2dcb99cf22af61e2aa 100644 +index 0323644442a3263f12b146d29928e7ad09774549..0ff82c6a0279436675a2f56727e1a57803db17e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1053,6 +1053,7 @@ public class PurpurWorldConfig { +@@ -1021,6 +1021,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index b21d288f62f473cd9d1057d3d2a452f16b0291d0..5a3dad2ba18f56724e22ec2dcb99cf22 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1068,6 +1069,7 @@ public class PurpurWorldConfig { +@@ -1036,6 +1037,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0179-Configurable-hunger-starvation-damage.patch b/patches/server/0178-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0179-Configurable-hunger-starvation-damage.patch rename to patches/server/0178-Configurable-hunger-starvation-damage.patch index df13b853c..743d38526 100644 --- a/patches/server/0179-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0178-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 08a6cca64ddd49826a0bbddd7711187c73bb4997..dd72d6a79139ff33f26a32b71283ce0b this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a3dad2ba18f56724e22ec2dcb99cf22af61e2aa..c294a2a89e23cd5889472ebe586c2ab3de043733 100644 +index 0ff82c6a0279436675a2f56727e1a57803db17e0..802cde2712dc0d1fec24f7dca46b9765ea406022 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2566,4 +2566,9 @@ public class PurpurWorldConfig { +@@ -2534,4 +2534,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0180-Enhance-SysoutCatcher.patch b/patches/server/0179-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0180-Enhance-SysoutCatcher.patch rename to patches/server/0179-Enhance-SysoutCatcher.patch diff --git a/patches/server/0181-Add-uptime-command.patch b/patches/server/0180-Add-uptime-command.patch similarity index 100% rename from patches/server/0181-Add-uptime-command.patch rename to patches/server/0180-Add-uptime-command.patch diff --git a/patches/server/0182-Tool-actionable-options.patch b/patches/server/0181-Tool-actionable-options.patch similarity index 99% rename from patches/server/0182-Tool-actionable-options.patch rename to patches/server/0181-Tool-actionable-options.patch index 52e866dc2..5546e694d 100644 --- a/patches/server/0182-Tool-actionable-options.patch +++ b/patches/server/0181-Tool-actionable-options.patch @@ -153,11 +153,11 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c294a2a89e23cd5889472ebe586c2ab3de043733..2335a56bb46fd9ece82547544e8cac883562eba2 100644 +index 802cde2712dc0d1fec24f7dca46b9765ea406022..c0bd8bc3a11bfc5120c768cbf3e45efaf52ea6c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -503,6 +503,280 @@ public class PurpurWorldConfig { - }); +@@ -471,6 +471,280 @@ public class PurpurWorldConfig { + snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } + public Map axeStrippables = new HashMap<>(); diff --git a/patches/server/0183-Store-placer-on-Block-when-placed.patch b/patches/server/0182-Store-placer-on-Block-when-placed.patch similarity index 96% rename from patches/server/0183-Store-placer-on-Block-when-placed.patch rename to patches/server/0182-Store-placer-on-Block-when-placed.patch index c6f5d3a96..04f5d1dfa 100644 --- a/patches/server/0183-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0182-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 7e6c231a50c7fd2297e1ab404a743e1aece9913b..0bc6edf82d77ae88d64bd6ca0a5294c2143f2f5c 100644 +index 0956421f1c037fc3d8e1ed99b6ffaca4d9426c7c..6cc31102f17ee19d9f2163a6aa5cf7bfe9ba3ff5 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0184-Summoner-API.patch b/patches/server/0183-Summoner-API.patch similarity index 100% rename from patches/server/0184-Summoner-API.patch rename to patches/server/0183-Summoner-API.patch diff --git a/patches/server/0185-Customizable-sleeping-actionbar-messages.patch b/patches/server/0184-Customizable-sleeping-actionbar-messages.patch similarity index 100% rename from patches/server/0185-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0184-Customizable-sleeping-actionbar-messages.patch diff --git a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 96% rename from patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch index 3e715229e..17296340e 100644 --- a/patches/server/0186-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -26,7 +26,7 @@ index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..f713734efaad4312be270d808e79f0e5 if (itemcontainercontents != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2335a56bb46fd9ece82547544e8cac883562eba2..6be3b83976cfd92f984f2ce9479d6f0f5d883e17 100644 +index c0bd8bc3a11bfc5120c768cbf3e45efaf52ea6c5..604155c1c99d9f28e5efb60ee9d25cd8af274359 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -221,6 +221,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0187-Big-dripleaf-tilt-delay.patch b/patches/server/0186-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/server/0187-Big-dripleaf-tilt-delay.patch rename to patches/server/0186-Big-dripleaf-tilt-delay.patch index e9b333cea..e73ba4d8a 100644 --- a/patches/server/0187-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0186-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6be3b83976cfd92f984f2ce9479d6f0f5d883e17..8a2015ef0e97d86eb516d81f5bc49e2cfed8b4df 100644 +index 604155c1c99d9f28e5efb60ee9d25cd8af274359..dc5be6e84ef12bba70a94fc2bd8c636ea558e0d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -818,6 +818,22 @@ public class PurpurWorldConfig { +@@ -786,6 +786,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0188-Player-ridable-in-water-option.patch b/patches/server/0187-Player-ridable-in-water-option.patch similarity index 96% rename from patches/server/0188-Player-ridable-in-water-option.patch rename to patches/server/0187-Player-ridable-in-water-option.patch index 3c2ef239a..673740ce9 100644 --- a/patches/server/0188-Player-ridable-in-water-option.patch +++ b/patches/server/0187-Player-ridable-in-water-option.patch @@ -23,7 +23,7 @@ index df33ad8ef6394042c2b617606c7c792fe3801632..44ef706008a1477d2073c29f2c9d016b if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a2015ef0e97d86eb516d81f5bc49e2cfed8b4df..a2bbf31e81318cce9b69be32b999b307e9256c46 100644 +index dc5be6e84ef12bba70a94fc2bd8c636ea558e0d3..b361106d71b0b84dd84e25097fe1c4b3407fd170 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -394,6 +394,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 92% rename from patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index a41765899..68f618522 100644 --- a/patches/server/0189-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index b361c6b4ca17b9d466555037235a5660caa5c9bd..21a570d09ad3e19e6c709ff1152db7d2 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2bbf31e81318cce9b69be32b999b307e9256c46..8ecd8465b5758a38d73636ac436432885cc85df5 100644 +index b361106d71b0b84dd84e25097fe1c4b3407fd170..6b7d588a2e320a321e7ababe42feae509194291e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1424,6 +1424,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1392,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index a2bbf31e81318cce9b69be32b999b307e9256c46..8ecd8465b5758a38d73636ac43643288 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1446,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1414,6 +1415,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0190-Add-compass-command.patch b/patches/server/0189-Add-compass-command.patch similarity index 99% rename from patches/server/0190-Add-compass-command.patch rename to patches/server/0189-Add-compass-command.patch index 078bb1e0a..d94010b9b 100644 --- a/patches/server/0190-Add-compass-command.patch +++ b/patches/server/0189-Add-compass-command.patch @@ -90,7 +90,7 @@ index 45ce203e295d10d522851caefd049995d2d552a2..042fd443c98258240042d3ce1650f36e hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ecd8465b5758a38d73636ac436432885cc85df5..b914dd9a6535f3e45637157e59a4dc339911e26d 100644 +index 6b7d588a2e320a321e7ababe42feae509194291e..f82f7e7082b7df08965fd8921441db1c4d2909b3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Toggle-for-kinetic-damage.patch b/patches/server/0190-Toggle-for-kinetic-damage.patch similarity index 95% rename from patches/server/0191-Toggle-for-kinetic-damage.patch rename to patches/server/0190-Toggle-for-kinetic-damage.patch index 945e4eff6..ef02295ff 100644 --- a/patches/server/0191-Toggle-for-kinetic-damage.patch +++ b/patches/server/0190-Toggle-for-kinetic-damage.patch @@ -17,7 +17,7 @@ index 79b782affc598abcd37a640a523f7bc35d1b3796..28718b44dc2bd98a5144ebcfd8be195a } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b914dd9a6535f3e45637157e59a4dc339911e26d..50ea604c69d5f237ef229cd20ff5aa1233ccfb3a 100644 +index f82f7e7082b7df08965fd8921441db1c4d2909b3..510841d88d0c88ed2e33f260152aa90e55a4d2b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/server/0192-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0191-Add-Option-for-disable-observer-clocks.patch index b672c3e1c..8f674c185 100644 --- a/patches/server/0192-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50ea604c69d5f237ef229cd20ff5aa1233ccfb3a..aa4e7d9082ded09b9cca7f6ea45da2c51203144d 100644 +index 510841d88d0c88ed2e33f260152aa90e55a4d2b0..740ee779f823a560e76357ab981490be5590953c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -369,6 +369,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch similarity index 93% rename from patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch index ff0c75069..7002f26ed 100644 --- a/patches/server/0193-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 2ec3a09135f85a5de68e77511f3f213adf08712c..d909138942212ee090ff513b1817414c return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa4e7d9082ded09b9cca7f6ea45da2c51203144d..1c658c65cd7268fe8cf52b107d26974f2f42194e 100644 +index 740ee779f823a560e76357ab981490be5590953c..1f2dc0fae912e07037cc25b8a434d568345c612e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2827,6 +2827,8 @@ public class PurpurWorldConfig { +@@ -2795,6 +2795,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index aa4e7d9082ded09b9cca7f6ea45da2c51203144d..1c658c65cd7268fe8cf52b107d26974f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2842,6 +2844,8 @@ public class PurpurWorldConfig { +@@ -2810,6 +2812,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 94% rename from patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch index bf99d9eba..b9a6be86f 100644 --- a/patches/server/0194-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c658c65cd7268fe8cf52b107d26974f2f42194e..2ab00b885ebf0071f1825cafa46a95cc460d1ac4 100644 +index 1f2dc0fae912e07037cc25b8a434d568345c612e..3c5c73754a28e2c39e6aee8304f7e78c65f9ff68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1004,9 +1004,13 @@ public class PurpurWorldConfig { +@@ -972,9 +972,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch similarity index 91% rename from patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch index 6d1f5445f..c1fb1a8e0 100644 --- a/patches/server/0195-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 01d193d2584b62897687bd088fb590de8a4ab279..a030fe21a88a9486cc8367710a96af67 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ab00b885ebf0071f1825cafa46a95cc460d1ac4..a0f75c7d96bcc96be22ef4671eab8315d5cc4504 100644 +index 3c5c73754a28e2c39e6aee8304f7e78c65f9ff68..7c1e067957cec8e1ea7fcd20b7893c736ca2dfea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2672,6 +2672,7 @@ public class PurpurWorldConfig { +@@ -2640,6 +2640,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 2ab00b885ebf0071f1825cafa46a95cc460d1ac4..a0f75c7d96bcc96be22ef4671eab8315 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2693,6 +2694,7 @@ public class PurpurWorldConfig { +@@ -2661,6 +2662,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch index c128cb475..b8a80d3fb 100644 --- a/patches/server/0196-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0f75c7d96bcc96be22ef4671eab8315d5cc4504..72eb63341b14ae213094390bf12e957e94e9cc60 100644 +index 7c1e067957cec8e1ea7fcd20b7893c736ca2dfea..3cbcee9438c279266092843932b19f5ceac78735 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -845,6 +845,11 @@ public class PurpurWorldConfig { +@@ -813,6 +813,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 96% rename from patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch index 430c9d327..01d055a19 100644 --- a/patches/server/0197-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,7 +18,7 @@ index 9992599dbe4f4a430e822a44b03c00505abfbfaf..3fea9339420aa38b303ccf6c154aec24 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72eb63341b14ae213094390bf12e957e94e9cc60..6cb425d017cc8b12aece5bc1982d85056fc58431 100644 +index 3cbcee9438c279266092843932b19f5ceac78735..79a16954e686b4c80f8687222c7235a0ee09a7a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -404,6 +404,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Conduit-behavior-configuration.patch b/patches/server/0197-Conduit-behavior-configuration.patch similarity index 78% rename from patches/server/0198-Conduit-behavior-configuration.patch rename to patches/server/0197-Conduit-behavior-configuration.patch index 353d1f743..5e990b02f 100644 --- a/patches/server/0198-Conduit-behavior-configuration.patch +++ b/patches/server/0197-Conduit-behavior-configuration.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Conduit behavior configuration diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -index 73e532dc998e5701c1a73da846da3d3a79871b81..da36058e52330aaf483d506f3d26ff345d1b8b0c 100644 +index 73e532dc998e5701c1a73da846da3d3a79871b81..ff6fea842ca80c2ba51693fe62e5b74f9affdc19 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java @@ -168,7 +168,7 @@ public class ConduitBlockEntity extends BlockEntity { @@ -17,8 +17,16 @@ index 73e532dc998e5701c1a73da846da3d3a79871b81..da36058e52330aaf483d506f3d26ff34 int k1 = ablock.length; for (int l1 = 0; l1 < k1; ++l1) { -@@ -194,7 +194,7 @@ public class ConduitBlockEntity extends BlockEntity { - public static int getRange(List list) { +@@ -188,13 +188,13 @@ public class ConduitBlockEntity extends BlockEntity { + + private static void applyEffects(Level world, BlockPos pos, List activatingBlocks) { + // CraftBukkit start +- ConduitBlockEntity.applyEffects(world, pos, ConduitBlockEntity.getRange(activatingBlocks)); ++ ConduitBlockEntity.applyEffects(world, pos, ConduitBlockEntity.getRange(activatingBlocks, world)); // Purpur + } + +- public static int getRange(List list) { ++ public static int getRange(List list, Level world) { // Purpur // CraftBukkit end int i = list.size(); - int j = i / 7 * 16; @@ -75,11 +83,24 @@ index 73e532dc998e5701c1a73da846da3d3a79871b81..da36058e52330aaf483d506f3d26ff34 return entityliving.getUUID().equals(uuid); }); +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b362c6b0cd6 100644 +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +@@ -73,7 +73,7 @@ public class CraftConduit extends CraftBlockEntityState impl + public int getRange() { + this.ensureNoWorldGeneration(); + ConduitBlockEntity conduit = (ConduitBlockEntity) this.getTileEntityFromWorld(); +- return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks) : 0; ++ return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks, this.world.getHandle()) : 0; // Purpur + } + + @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6cb425d017cc8b12aece5bc1982d85056fc58431..60b511bd94288badd8b6390b5f66d5c79478a71b 100644 +index 79a16954e686b4c80f8687222c7235a0ee09a7a6..c97d4f18f35b9a8e969707e80ddd51dcaa7c3838 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2893,4 +2893,27 @@ public class PurpurWorldConfig { +@@ -2861,4 +2861,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0199-Cauldron-fill-chances.patch b/patches/server/0198-Cauldron-fill-chances.patch similarity index 96% rename from patches/server/0199-Cauldron-fill-chances.patch rename to patches/server/0198-Cauldron-fill-chances.patch index e3647b741..8bb045e77 100644 --- a/patches/server/0199-Cauldron-fill-chances.patch +++ b/patches/server/0198-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60b511bd94288badd8b6390b5f66d5c79478a71b..0893e133393e35a6b0a66c09cb800265426ec427 100644 +index c97d4f18f35b9a8e969707e80ddd51dcaa7c3838..772c5a409c7b9f95e72edca9aa1544d7577a8dc2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2916,4 +2916,15 @@ public class PurpurWorldConfig { +@@ -2884,4 +2884,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 96% rename from patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch index 4f2583613..791833ffc 100644 --- a/patches/server/0200-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644 +index 772c5a409c7b9f95e72edca9aa1544d7577a8dc2..4e5b19ae8fa93dfb446004cc8de3bf84942be74a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -138,6 +138,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0201-Shulker-change-color-with-dye.patch b/patches/server/0200-Shulker-change-color-with-dye.patch similarity index 94% rename from patches/server/0201-Shulker-change-color-with-dye.patch rename to patches/server/0200-Shulker-change-color-with-dye.patch index 9c350a2ee..7fd15a8a1 100644 --- a/patches/server/0201-Shulker-change-color-with-dye.patch +++ b/patches/server/0200-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index 73063abbd051f1d044a8b2c0530cc8d2a96a6331..687fadf1ef64c5ae7e00c5da15b82245 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12..ba161c85a17aed57bcb7b5f8ec347757f45ef003 100644 +index 4e5b19ae8fa93dfb446004cc8de3bf84942be74a..dc11a0b7340f8260fcbb8f6dd5aa2083ffba82ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2234,6 +2234,7 @@ public class PurpurWorldConfig { +@@ -2202,6 +2202,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12..ba161c85a17aed57bcb7b5f8ec347757 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2250,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2218,6 +2219,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0202-Extended-OfflinePlayer-API.patch b/patches/server/0201-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0202-Extended-OfflinePlayer-API.patch rename to patches/server/0201-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0203-Added-the-ability-to-add-combustible-items.patch b/patches/server/0202-Added-the-ability-to-add-combustible-items.patch similarity index 92% rename from patches/server/0203-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0202-Added-the-ability-to-add-combustible-items.patch index f5457d97f..79e543578 100644 --- a/patches/server/0203-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0202-Added-the-ability-to-add-combustible-items.patch @@ -24,7 +24,7 @@ index 1af7e1548f0648890a1ef2fc0ff4e4c3a56c947c..decea1697c075e7549ccc7501c8e5935 } else if (this.isFuel(itemstack1)) { if (!this.moveItemStackTo(itemstack1, 1, 2, false)) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index ce2c424068001eec16032361baa206f6a5aa5332..72f4c1bbdfbb3e0710af33cee419b4ce8b023102 100644 +index ce2c424068001eec16032361baa206f6a5aa5332..c02d638b8f117156c815821207a91c55796f00b2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -214,6 +214,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -36,14 +36,14 @@ index ce2c424068001eec16032361baa206f6a5aa5332..72f4c1bbdfbb3e0710af33cee419b4ce + Map map = Maps.newLinkedHashMap(); + map.putAll(getFuel()); + map.put(itemStack.getItem(), burnTime); -+ cachedBurnDurations = com.google.common.collect.ImmutableMap.copyOf(map); ++ AbstractFurnaceBlockEntity.fuelCache = com.google.common.collect.ImmutableMap.copyOf(map); + } + + public static void removeFuel(ItemStack itemStack) { + Map map = Maps.newLinkedHashMap(); + map.putAll(getFuel()); + map.remove(itemStack.getItem()); -+ cachedBurnDurations = com.google.common.collect.ImmutableMap.copyOf(map); ++ AbstractFurnaceBlockEntity.fuelCache = com.google.common.collect.ImmutableMap.copyOf(map); + } + // Purpur End + diff --git a/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 97% rename from patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index c9989a31b..cf9873527 100644 --- a/patches/server/0204-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,7 +25,7 @@ index 83ec2e31d81d6209953252a3780552c3cf110c68..42db3e64b120b753e98a0fd7e3f56c7d // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba161c85a17aed57bcb7b5f8ec347757f45ef003..6151c7d3bf9de065227c200b62dd03f7dba3f504 100644 +index dc11a0b7340f8260fcbb8f6dd5aa2083ffba82ac..c6ed88cfb476fc1298398e691fe89b560d69d295 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 94% rename from patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 7bb4a3c7d..49c36602d 100644 --- a/patches/server/0205-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 260906f493416d98ab574a7262fce5e9b7e40c64..ce639e4a2d87202a10ef4fc73274c4b2 .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6151c7d3bf9de065227c200b62dd03f7dba3f504..951a4fcdc1f47189ea7f36fc232faaf06310db59 100644 +index c6ed88cfb476fc1298398e691fe89b560d69d295..75d86d50736eba0050547635504083b3aefde1e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -805,6 +805,11 @@ public class PurpurWorldConfig { +@@ -773,6 +773,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 6151c7d3bf9de065227c200b62dd03f7dba3f504..951a4fcdc1f47189ea7f36fc232faaf0 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -942,6 +947,11 @@ public class PurpurWorldConfig { +@@ -910,6 +915,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch similarity index 98% rename from patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch index c88028869..bdd182473 100644 --- a/patches/server/0206-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch @@ -48,7 +48,7 @@ index 939234ccd803f173afe74651a92ff3a1c5b29b85..395ad65503c87250c0e2fa8112208f26 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 951a4fcdc1f47189ea7f36fc232faaf06310db59..da79bad084e062cdbff25a47c3a324c8d072a471 100644 +index 75d86d50736eba0050547635504083b3aefde1e5..69ac7dfc344dfc01445688de3a0962e6e2fee58a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -411,6 +411,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch index 1b217e7a7..a1634510d 100644 --- a/patches/server/0207-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 38112239035b0c66c429c0762199867e70e0a67a..e539eefb6e6d3172611d1f9185a11380 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da79bad084e062cdbff25a47c3a324c8d072a471..1e3f63240e76102a46bfa13500629172360bc48d 100644 +index 69ac7dfc344dfc01445688de3a0962e6e2fee58a..c967af01e241dd70f5fa33aebe2783487f0e939f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1332,6 +1332,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1300,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index da79bad084e062cdbff25a47c3a324c8d072a471..1e3f63240e76102a46bfa13500629172 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1346,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1315,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch similarity index 93% rename from patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch index 7f975656f..800ec8e56 100644 --- a/patches/server/0208-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 8c908891c6c683332d8877ab3fa084a0849b17a9..106d2d692e2393517793c2bac8bebf401f717bea 100644 +index 8c908891c6c683332d8877ab3fa084a0849b17a9..541cc6c70178a430ac8e3ab8f6a2250b8ea1d964 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -39,6 +39,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; @@ -29,9 +29,9 @@ index 8c908891c6c683332d8877ab3fa084a0849b17a9..106d2d692e2393517793c2bac8bebf40 } + @Override -+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, net.minecraft.world.entity.SpawnGroupData entityData, net.minecraft.nbt.CompoundTag entityNbt) { ++ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, net.minecraft.world.entity.SpawnGroupData entityData) { + this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance; -+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); ++ return super.finalizeSpawn(world, difficulty, spawnReason, entityData); + } + @Override @@ -61,10 +61,10 @@ index 8c908891c6c683332d8877ab3fa084a0849b17a9..106d2d692e2393517793c2bac8bebf40 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e3f63240e76102a46bfa13500629172360bc48d..50429a76847b7c655cf88c49f6f3b0dbccda9d8b 100644 +index c967af01e241dd70f5fa33aebe2783487f0e939f..802d1a588a694071fb08fccfeada44a5c05748ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1281,7 +1281,14 @@ public class PurpurWorldConfig { +@@ -1249,7 +1249,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 1e3f63240e76102a46bfa13500629172360bc48d..50429a76847b7c655cf88c49f6f3b0db cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1294,6 +1301,8 @@ public class PurpurWorldConfig { +@@ -1262,6 +1269,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 92% rename from patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch index f29316cac..d24accb93 100644 --- a/patches/server/0209-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index a7c85c9efd13145cc061a3a0076b44a7af9812b9..1bace0d549ea4a4b45ac4cd140952498 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50429a76847b7c655cf88c49f6f3b0dbccda9d8b..9b19961631c0bd2f922820ce0a33bace926afdf7 100644 +index 802d1a588a694071fb08fccfeada44a5c05748ac..5f3fda4dc863bcb0e535ef0c55015b728fdead1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -824,6 +824,7 @@ public class PurpurWorldConfig { +@@ -792,6 +792,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 50429a76847b7c655cf88c49f6f3b0dbccda9d8b..9b19961631c0bd2f922820ce0a33bace public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -834,6 +835,7 @@ public class PurpurWorldConfig { +@@ -802,6 +803,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0210-Halloween-options-and-optimizations.patch b/patches/server/0209-Halloween-options-and-optimizations.patch similarity index 97% rename from patches/server/0210-Halloween-options-and-optimizations.patch rename to patches/server/0209-Halloween-options-and-optimizations.patch index 03547ad0e..d6ebcbf6e 100644 --- a/patches/server/0210-Halloween-options-and-optimizations.patch +++ b/patches/server/0209-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 53f7659aed2378b36f1923a0208c7f86048eb85b..d5a5e51e23328deac09d6990539d8207 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b19961631c0bd2f922820ce0a33bace926afdf7..e956e8d742a525a9485bdd691e81407ae06c08f0 100644 +index 5f3fda4dc863bcb0e535ef0c55015b728fdead1e..bfde7e520df0328ab1f7c90f3c028822a7f28355 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1674,6 +1674,13 @@ public class PurpurWorldConfig { +@@ -1642,6 +1642,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0212-UPnP-Port-Forwarding.patch b/patches/server/0210-UPnP-Port-Forwarding.patch similarity index 96% rename from patches/server/0212-UPnP-Port-Forwarding.patch rename to patches/server/0210-UPnP-Port-Forwarding.patch index 86b610183..3563559b9 100644 --- a/patches/server/0212-UPnP-Port-Forwarding.patch +++ b/patches/server/0210-UPnP-Port-Forwarding.patch @@ -67,10 +67,10 @@ index 8a132fcdeb620d2e7f1c0c8b9e592ff233cd0568..29af03b8690e4d402d1e4e4516e4dc73 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6653162444df443ca990a25fc8b9f3c336841efb..64c62e4abefb7e95e881fa1d8918e43ae48eb1dd 100644 +index 042fd443c98258240042d3ce1650f36e601d72e3..e83b33f4e28a6f2310c807db011cae7f550c502c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -419,4 +419,9 @@ public class PurpurConfig { +@@ -403,4 +403,9 @@ public class PurpurConfig { private static void tpsCatchup() { tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup); } diff --git a/patches/server/0213-Campfire-option-for-lit-when-placed.patch b/patches/server/0211-Campfire-option-for-lit-when-placed.patch similarity index 94% rename from patches/server/0213-Campfire-option-for-lit-when-placed.patch rename to patches/server/0211-Campfire-option-for-lit-when-placed.patch index 99a766afe..3e033bfe9 100644 --- a/patches/server/0213-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0211-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index d6fffb0953494e8667cc456137cac0f5deebfbb6..f7a2244b998aebe354d38eec7aa22fd9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e956e8d742a525a9485bdd691e81407ae06c08f0..a9c1bf5b07daa33325316366338f5a57027f617d 100644 +index bfde7e520df0328ab1f7c90f3c028822a7f28355..e4f0053cf35b419a3f1a37c86b65af50c020c79f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -867,6 +867,11 @@ public class PurpurWorldConfig { +@@ -835,6 +835,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 98% rename from patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch index 5f9966069..2f98f6b16 100644 --- a/patches/server/0214-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,7 +46,7 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a9c1bf5b07daa33325316366338f5a57027f617d..00593e16024af69699d1b5ad7c5acb84d756a25c 100644 +index e4f0053cf35b419a3f1a37c86b65af50c020c79f..a3f4652dcbfd8547d87868c261d88844d65e797c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -231,6 +231,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch similarity index 92% rename from patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch index 643c93aff..1ee7679cf 100644 --- a/patches/server/0215-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index d909138942212ee090ff513b1817414c93457425..fe43c744cccdc07d5e449ce3ede85f4c if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00593e16024af69699d1b5ad7c5acb84d756a25c..1c77929516d70407a281a0899c6722cc4210eb79 100644 +index a3f4652dcbfd8547d87868c261d88844d65e797c..bea2cbacd7fbf48af6daff0e904b76ba62e53557 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2893,6 +2893,7 @@ public class PurpurWorldConfig { +@@ -2861,6 +2861,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 00593e16024af69699d1b5ad7c5acb84d756a25c..1c77929516d70407a281a0899c6722cc private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2910,6 +2911,7 @@ public class PurpurWorldConfig { +@@ -2878,6 +2879,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 93% rename from patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index e0c4575a3..96cc718fe 100644 --- a/patches/server/0218-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,13 +135,13 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644 +index e83b33f4e28a6f2310c807db011cae7f550c502c..ae0e335fb3f6d5e6f40de0f0fdac834d29cc0aa9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -312,6 +312,10 @@ public class PurpurConfig { - public static Set grindstoneIgnoredEnchants = new HashSet<>(); - public static boolean grindstoneRemoveAttributes = false; - public static boolean grindstoneRemoveDisplay = false; +@@ -309,6 +309,10 @@ public class PurpurConfig { + public static int beeInsideBeeHive = 3; + public static boolean anvilCumulativeCost = true; + public static int lightningRodRange = 128; + public static int caveVinesMaxGrowthAge = 25; + public static int kelpMaxGrowthAge = 25; + public static int twistingVinesMaxGrowthAge = 25; @@ -149,10 +149,10 @@ index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c20629935 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -359,6 +363,30 @@ public class PurpurConfig { - }); - grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); - grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay); +@@ -343,6 +347,30 @@ public class PurpurConfig { + beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); + anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); + lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); + caveVinesMaxGrowthAge = getInt("settings.blocks.cave_vines.max-growth-age", caveVinesMaxGrowthAge); + if (caveVinesMaxGrowthAge > 25) { + caveVinesMaxGrowthAge = 25; diff --git a/patches/server/0219-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch similarity index 93% rename from patches/server/0219-Mobs-always-drop-experience.patch rename to patches/server/0215-Mobs-always-drop-experience.patch index 78bf08657..fb485d4b4 100644 --- a/patches/server/0219-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -101,11 +101,11 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 106d2d692e2393517793c2bac8bebf401f717bea..50d9ec304dacf904e1af8ede6572bb7a53923133 100644 +index 541cc6c70178a430ac8e3ab8f6a2250b8ea1d964..1691a98caabf27ea092a9b422649ac84bc0a7235 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -86,6 +86,11 @@ public class Cow extends Animal { - return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, entityData); } + @Override @@ -213,7 +213,7 @@ index 4895bd2566605ab3986f35d43345f29ce78e81e0..7bd81d073ce4a8d5981f256415d3e99e public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.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 ceee7594d983512c21c35077434a86d1c6fb9b0a..dc2117f2df803c6fe3b5cdd17cfffeaffcd80b38 100644 +index 65be3dd9bc6994cac828ed45b74a577b65b7118a..b8c69414b734eecb7412fab8ae6996712307da70 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -201,6 +201,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1879,6 +1938,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1899,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean mooshroomRidable = false; -@@ -1887,6 +1947,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1908,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1899,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1860,6 +1921,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean muleRidableInWater = false; -@@ -1910,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1871,6 +1933,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1927,6 +1990,7 @@ public class PurpurWorldConfig { +@@ -1888,6 +1951,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean ocelotRidable = false; -@@ -1935,6 +1999,7 @@ public class PurpurWorldConfig { +@@ -1896,6 +1960,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1947,6 +2012,7 @@ public class PurpurWorldConfig { +@@ -1908,6 +1973,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean pandaRidable = false; -@@ -1955,6 +2021,7 @@ public class PurpurWorldConfig { +@@ -1916,6 +1982,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1967,6 +2034,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +1995,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean parrotRidable = false; -@@ -1976,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1937,6 +2005,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1989,6 +2058,7 @@ public class PurpurWorldConfig { +@@ -1950,6 +2019,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean phantomRidable = false; -@@ -2016,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2047,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2051,6 +2122,7 @@ public class PurpurWorldConfig { +@@ -2012,6 +2083,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean pigRidable = false; -@@ -2060,6 +2132,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2093,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2073,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2034,6 +2107,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean piglinRidable = false; -@@ -2082,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2043,6 +2117,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2095,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2131,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean piglinBruteRidable = false; -@@ -2102,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2063,6 +2139,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2113,6 +2190,7 @@ public class PurpurWorldConfig { +@@ -2074,6 +2151,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean pillagerRidable = false; -@@ -2121,6 +2199,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2160,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2133,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2094,6 +2173,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean polarBearRidable = false; -@@ -2143,6 +2223,7 @@ public class PurpurWorldConfig { +@@ -2104,6 +2184,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2158,12 +2239,14 @@ public class PurpurWorldConfig { +@@ -2119,12 +2200,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2174,6 +2257,7 @@ public class PurpurWorldConfig { +@@ -2135,6 +2218,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean rabbitRidable = false; -@@ -2185,6 +2269,7 @@ public class PurpurWorldConfig { +@@ -2146,6 +2230,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2200,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2161,6 +2246,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean ravagerRidable = false; -@@ -2209,6 +2295,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2256,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2238,12 +2325,14 @@ public class PurpurWorldConfig { +@@ -2199,12 +2286,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2254,6 +2343,7 @@ public class PurpurWorldConfig { +@@ -2215,6 +2304,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean sheepRidable = false; -@@ -2263,6 +2353,7 @@ public class PurpurWorldConfig { +@@ -2224,6 +2314,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2276,6 +2367,7 @@ public class PurpurWorldConfig { +@@ -2237,6 +2328,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean shulkerRidable = false; -@@ -2289,6 +2381,7 @@ public class PurpurWorldConfig { +@@ -2250,6 +2342,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2306,6 +2399,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2360,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean silverfishRidable = false; -@@ -2314,6 +2408,7 @@ public class PurpurWorldConfig { +@@ -2275,6 +2369,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2326,6 +2421,7 @@ public class PurpurWorldConfig { +@@ -2287,6 +2382,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean skeletonRidable = false; -@@ -2333,6 +2429,7 @@ public class PurpurWorldConfig { +@@ -2294,6 +2390,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2344,6 +2441,7 @@ public class PurpurWorldConfig { +@@ -2305,6 +2402,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean skeletonHorseRidable = false; -@@ -2356,6 +2454,7 @@ public class PurpurWorldConfig { +@@ -2317,6 +2415,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2373,6 +2472,7 @@ public class PurpurWorldConfig { +@@ -2334,6 +2433,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean slimeRidable = false; -@@ -2383,6 +2483,7 @@ public class PurpurWorldConfig { +@@ -2344,6 +2444,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2397,6 +2498,7 @@ public class PurpurWorldConfig { +@@ -2358,6 +2459,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean snowGolemRidable = false; -@@ -2411,6 +2513,7 @@ public class PurpurWorldConfig { +@@ -2372,6 +2474,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2429,6 +2532,7 @@ public class PurpurWorldConfig { +@@ -2390,6 +2493,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean snifferRidable = false; -@@ -2451,6 +2555,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2516,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2464,6 +2569,7 @@ public class PurpurWorldConfig { +@@ -2425,6 +2530,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean spiderRidable = false; -@@ -2471,6 +2577,7 @@ public class PurpurWorldConfig { +@@ -2432,6 +2538,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2482,6 +2589,7 @@ public class PurpurWorldConfig { +@@ -2443,6 +2550,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean strayRidable = false; -@@ -2489,6 +2597,7 @@ public class PurpurWorldConfig { +@@ -2450,6 +2558,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2500,6 +2609,7 @@ public class PurpurWorldConfig { +@@ -2461,6 +2570,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean striderRidable = false; -@@ -2509,6 +2619,7 @@ public class PurpurWorldConfig { +@@ -2470,6 +2580,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2522,6 +2633,7 @@ public class PurpurWorldConfig { +@@ -2483,6 +2594,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean tadpoleRidable = false; -@@ -2544,6 +2656,7 @@ public class PurpurWorldConfig { +@@ -2505,6 +2617,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2563,12 +2676,14 @@ public class PurpurWorldConfig { +@@ -2524,12 +2637,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2579,6 +2694,7 @@ public class PurpurWorldConfig { +@@ -2540,6 +2655,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean turtleRidable = false; -@@ -2587,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2548,6 +2664,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2599,6 +2716,7 @@ public class PurpurWorldConfig { +@@ -2560,6 +2677,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean vexRidable = false; -@@ -2607,6 +2725,7 @@ public class PurpurWorldConfig { +@@ -2568,6 +2686,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2619,6 +2738,7 @@ public class PurpurWorldConfig { +@@ -2580,6 +2699,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean villagerRidable = false; -@@ -2634,6 +2754,7 @@ public class PurpurWorldConfig { +@@ -2595,6 +2715,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2653,6 +2774,7 @@ public class PurpurWorldConfig { +@@ -2614,6 +2735,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean vindicatorRidable = false; -@@ -2661,6 +2783,7 @@ public class PurpurWorldConfig { +@@ -2622,6 +2744,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2673,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2634,6 +2757,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean wanderingTraderRidable = false; -@@ -2683,6 +2807,7 @@ public class PurpurWorldConfig { +@@ -2644,6 +2768,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2697,6 +2822,7 @@ public class PurpurWorldConfig { +@@ -2658,6 +2783,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean wardenRidable = false; -@@ -2713,6 +2839,7 @@ public class PurpurWorldConfig { +@@ -2674,6 +2800,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2724,6 +2851,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2812,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean witherRidable = false; -@@ -2738,6 +2866,7 @@ public class PurpurWorldConfig { +@@ -2699,6 +2827,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2760,6 +2889,7 @@ public class PurpurWorldConfig { +@@ -2721,6 +2850,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean witherSkeletonRidable = false; -@@ -2767,6 +2897,7 @@ public class PurpurWorldConfig { +@@ -2728,6 +2858,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2778,6 +2909,7 @@ public class PurpurWorldConfig { +@@ -2739,6 +2870,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean wolfRidable = false; -@@ -2789,6 +2921,7 @@ public class PurpurWorldConfig { +@@ -2750,6 +2882,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2808,6 +2941,7 @@ public class PurpurWorldConfig { +@@ -2769,6 +2902,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean zoglinRidable = false; -@@ -2815,6 +2949,7 @@ public class PurpurWorldConfig { +@@ -2776,6 +2910,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2826,6 +2961,7 @@ public class PurpurWorldConfig { +@@ -2787,6 +2922,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean zombieRidable = false; -@@ -2839,6 +2975,7 @@ public class PurpurWorldConfig { +@@ -2800,6 +2936,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2856,6 +2993,7 @@ public class PurpurWorldConfig { +@@ -2817,6 +2954,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean zombieHorseRidable = false; -@@ -2869,6 +3007,7 @@ public class PurpurWorldConfig { +@@ -2830,6 +2968,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2887,6 +3026,7 @@ public class PurpurWorldConfig { +@@ -2848,6 +2987,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean zombieVillagerRidable = false; -@@ -2901,6 +3041,7 @@ public class PurpurWorldConfig { +@@ -2862,6 +3002,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2919,6 +3060,7 @@ public class PurpurWorldConfig { +@@ -2880,6 +3021,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 } public boolean zombifiedPiglinRidable = false; -@@ -2931,6 +3073,7 @@ public class PurpurWorldConfig { +@@ -2892,6 +3034,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index d807da2719c5677c200e5f017e4cf5a1c7fa0ce9..f66cb47080fb4e046ba9fd9aa589f2d9 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2947,6 +3090,7 @@ public class PurpurWorldConfig { +@@ -2908,6 +3051,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0221-Grindstone-API.patch b/patches/server/0216-Grindstone-API.patch similarity index 92% rename from patches/server/0221-Grindstone-API.patch rename to patches/server/0216-Grindstone-API.patch index 71aa41021..330aa12fd 100644 --- a/patches/server/0221-Grindstone-API.patch +++ b/patches/server/0216-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index f7948de0180836f5bcf6818fe3a1362445a5befe..3756543f05bfe56b0b5333281902fa200dad6951 100644 +index db9444dda248260372d96ce239a590e88a4c1142..6d895008cd0654c9d6b7998ab985df8149a610b2 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -21,7 +21,7 @@ index f7948de0180836f5bcf6818fe3a1362445a5befe..3756543f05bfe56b0b5333281902fa20 } world.levelEvent(1042, blockposition, 0); -@@ -331,7 +333,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -316,7 +318,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index bd6dca784..16675d2aa 100644 --- a/patches/server/0222-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f66cb47080fb4e046ba9fd9aa589f2d9d85dc8c3..3a455bd12ee2a4497393cea44bd3507300c19d98 100644 +index b6548af929aee9cb4f323b50de921d204305ba35..06c9f6b1eaf2ce84b5857704ed0d582d0f7e8c89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -539,6 +539,8 @@ public class PurpurWorldConfig { +@@ -505,6 +505,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index f66cb47080fb4e046ba9fd9aa589f2d9d85dc8c3..3a455bd12ee2a4497393cea44bd35073 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -806,6 +808,8 @@ public class PurpurWorldConfig { +@@ -772,6 +774,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch index 8f7e8aae8..956b92612 100644 --- a/patches/server/0223-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a455bd12ee2a4497393cea44bd3507300c19d98..c3c6d0a25a7f068f54ab0c5065f64599abd8e04f 100644 +index 06c9f6b1eaf2ce84b5857704ed0d582d0f7e8c89..7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1066,11 +1066,13 @@ public class PurpurWorldConfig { +@@ -1027,11 +1027,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0224-Mob-head-visibility-percent.patch b/patches/server/0219-Mob-head-visibility-percent.patch similarity index 90% rename from patches/server/0224-Mob-head-visibility-percent.patch rename to patches/server/0219-Mob-head-visibility-percent.patch index 1611faa05..c6bf8d240 100644 --- a/patches/server/0224-Mob-head-visibility-percent.patch +++ b/patches/server/0219-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d85407573c47df162cedb8667c2fbc327e75588b..bfb9d3c92950b2600320ba3af409acbf810b5fe7 100644 +index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b8569998805da8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index d85407573c47df162cedb8667c2fbc327e75588b..bfb9d3c92950b2600320ba3af409acbf // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82d9822ba7 100644 +index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7b6cc281e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1360,6 +1360,7 @@ public class PurpurWorldConfig { +@@ -1321,6 +1321,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1377,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1338,6 +1339,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 } public boolean dolphinRidable = false; -@@ -2163,6 +2165,7 @@ public class PurpurWorldConfig { +@@ -2124,6 +2126,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2138,6 +2141,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 } public boolean piglinBruteRidable = false; -@@ -2436,6 +2440,7 @@ public class PurpurWorldConfig { +@@ -2397,6 +2401,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2448,6 +2453,7 @@ public class PurpurWorldConfig { +@@ -2409,6 +2414,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 } public boolean skeletonHorseRidable = false; -@@ -2982,6 +2988,7 @@ public class PurpurWorldConfig { +@@ -2943,6 +2949,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index c3c6d0a25a7f068f54ab0c5065f64599abd8e04f..a3b5ab71509a61825b6344889d7f0b82 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3000,6 +3007,7 @@ public class PurpurWorldConfig { +@@ -2961,6 +2968,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0225-Configurable-valid-characters-for-usernames.patch b/patches/server/0220-Configurable-valid-characters-for-usernames.patch similarity index 92% rename from patches/server/0225-Configurable-valid-characters-for-usernames.patch rename to patches/server/0220-Configurable-valid-characters-for-usernames.patch index a201a978b..382006d31 100644 --- a/patches/server/0225-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0220-Configurable-valid-characters-for-usernames.patch @@ -17,10 +17,10 @@ index 0bd191acb9596d3aa21c337230d26f09d26f6888..20211f40aeeade9217ece087688974bd return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 +index ae0e335fb3f6d5e6f40de0f0fdac834d29cc0aa9..9e4824e7cb7561a40cae7ccdcf49e01fd5118615 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -452,4 +452,11 @@ public class PurpurConfig { +@@ -436,4 +436,11 @@ public class PurpurConfig { private static void networkSettings() { useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); } diff --git a/patches/server/0226-Shears-can-have-looting-enchantment.patch b/patches/server/0221-Shears-can-have-looting-enchantment.patch similarity index 90% rename from patches/server/0226-Shears-can-have-looting-enchantment.patch rename to patches/server/0221-Shears-can-have-looting-enchantment.patch index 6db91f282..d8adfecdd 100644 --- a/patches/server/0226-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0221-Shears-can-have-looting-enchantment.patch @@ -125,11 +125,24 @@ index 69cdccca01fe7d10e6d958e16d91efe08f699505..3b74931ae4e3a869d8db38c119e57b44 return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); } +diff --git a/src/main/java/net/minecraft/world/entity/monster/Bogged.java b/src/main/java/net/minecraft/world/entity/monster/Bogged.java +index 754eb747179d9318bc5a3883e5622cc400c4e06c..4e929539cb093d58f3311d5f6a62bd1aeb71cfb0 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Bogged.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Bogged.java +@@ -155,7 +155,7 @@ public class Bogged extends AbstractSkeleton implements Shearable { + + // Paper start - shear drops API + @Override +- public java.util.List generateDefaultDrops() { ++ public java.util.List generateDefaultDrops(int looting) { // Purpur + final java.util.List drops = new java.util.ArrayList<>(); + this.generateShearedMushrooms(drops::add); + return drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644 +index 9e4824e7cb7561a40cae7ccdcf49e01fd5118615..a34c44ba770ded446b7969a31d3d05016717c13b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -391,6 +391,7 @@ public class PurpurConfig { +@@ -375,6 +375,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = true; @@ -137,7 +150,7 @@ index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75c public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -413,6 +414,7 @@ public class PurpurConfig { +@@ -397,6 +398,7 @@ public class PurpurConfig { } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); diff --git a/patches/server/0227-Stop-bees-from-dying-after-stinging.patch b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0227-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0222-Stop-bees-from-dying-after-stinging.patch index 3d0ecb450..af73596b0 100644 --- a/patches/server/0227-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3b5ab71509a61825b6344889d7f0b82d9822ba7..278cc18842f83b8a997dd3fa43449fb90660693c 100644 +index 14182802bed73f6f64940dd1f49b76c7b6cc281e..b6592dadc81a4f003153980d357eba6f62c9fb63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1161,6 +1161,7 @@ public class PurpurWorldConfig { +@@ -1122,6 +1122,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index a3b5ab71509a61825b6344889d7f0b82d9822ba7..278cc18842f83b8a997dd3fa43449fb9 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1177,6 +1178,7 @@ public class PurpurWorldConfig { +@@ -1138,6 +1139,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0229-Configurable-farmland-trample-height.patch b/patches/server/0223-Configurable-farmland-trample-height.patch similarity index 92% rename from patches/server/0229-Configurable-farmland-trample-height.patch rename to patches/server/0223-Configurable-farmland-trample-height.patch index 947a93e9e..563e26fe6 100644 --- a/patches/server/0229-Configurable-farmland-trample-height.patch +++ b/patches/server/0223-Configurable-farmland-trample-height.patch @@ -22,7 +22,7 @@ Value set -> Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 6b12864f323202a1202a59f66412b3d5be28023f..a208649685bbb33302445b54540e68dfa5212f78 100644 +index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1ed36e111 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -111,7 +111,7 @@ public class FarmBlock extends Block { @@ -35,10 +35,10 @@ index 6b12864f323202a1202a59f66412b3d5be28023f..a208649685bbb33302445b54540e68df org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 278cc18842f83b8a997dd3fa43449fb90660693c..52b08015601eb266719c907f4dbed4a0ce8af072 100644 +index b6592dadc81a4f003153980d357eba6f62c9fb63..3c8e1ae5156c382f94c2785b53eb70a074106ed2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -959,6 +959,7 @@ public class PurpurWorldConfig { +@@ -925,6 +925,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 278cc18842f83b8a997dd3fa43449fb90660693c..52b08015601eb266719c907f4dbed4a0 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -966,6 +967,7 @@ public class PurpurWorldConfig { +@@ -932,6 +933,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0230-Configurable-player-pickup-exp-delay.patch b/patches/server/0224-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0230-Configurable-player-pickup-exp-delay.patch rename to patches/server/0224-Configurable-player-pickup-exp-delay.patch index a3c42a40f..01628f70e 100644 --- a/patches/server/0230-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0224-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 44ef706008a1477d2073c29f2c9d016bf91e15a6..102da46e66ac3a395af98fdb0013587e } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52b08015601eb266719c907f4dbed4a0ce8af072..1350e3de8ca03eb7c6653f1f5523c2a8455d9975 100644 +index 3c8e1ae5156c382f94c2785b53eb70a074106ed2..e7012f1763747672543957029100a76abefc0848 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -420,6 +420,7 @@ public class PurpurWorldConfig { +@@ -418,6 +418,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 52b08015601eb266719c907f4dbed4a0ce8af072..1350e3de8ca03eb7c6653f1f5523c2a8 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -445,6 +446,7 @@ public class PurpurWorldConfig { +@@ -443,6 +444,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0231-Allow-void-trading.patch b/patches/server/0225-Allow-void-trading.patch similarity index 93% rename from patches/server/0231-Allow-void-trading.patch rename to patches/server/0225-Allow-void-trading.patch index 270677cdf..de6b581d7 100644 --- a/patches/server/0231-Allow-void-trading.patch +++ b/patches/server/0225-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb0 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1350e3de8ca03eb7c6653f1f5523c2a8455d9975..eaa7070d71d6c8ae3adcaaeb52eb3439cf87c034 100644 +index e7012f1763747672543957029100a76abefc0848..fee4409841ad82bf8d00864ea285453cfddec849 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -421,6 +421,7 @@ public class PurpurWorldConfig { +@@ -419,6 +419,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 1350e3de8ca03eb7c6653f1f5523c2a8455d9975..eaa7070d71d6c8ae3adcaaeb52eb3439 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -447,6 +448,7 @@ public class PurpurWorldConfig { +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0232-Configurable-phantom-size.patch b/patches/server/0226-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0232-Configurable-phantom-size.patch rename to patches/server/0226-Configurable-phantom-size.patch index 5d94dafde..15ecf628c 100644 --- a/patches/server/0232-Configurable-phantom-size.patch +++ b/patches/server/0226-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eaa7070d71d6c8ae3adcaaeb52eb3439cf87c034..bc3b4d6efe2182b634c021ad5772a8a81d4cc2d9 100644 +index fee4409841ad82bf8d00864ea285453cfddec849..0bbb872ba5e444cee4f34358a4a7db9e300ca128 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2103,6 +2103,8 @@ public class PurpurWorldConfig { +@@ -2064,6 +2064,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index eaa7070d71d6c8ae3adcaaeb52eb3439cf87c034..bc3b4d6efe2182b634c021ad5772a8a8 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2139,6 +2141,13 @@ public class PurpurWorldConfig { +@@ -2100,6 +2102,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0233-Max-joins-per-second.patch b/patches/server/0227-Max-joins-per-second.patch similarity index 94% rename from patches/server/0233-Max-joins-per-second.patch rename to patches/server/0227-Max-joins-per-second.patch index 46482bbe9..f7b4227e2 100644 --- a/patches/server/0233-Max-joins-per-second.patch +++ b/patches/server/0227-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644 +index a34c44ba770ded446b7969a31d3d05016717c13b..f0c3566e6b03c88c0cb53a90d44627d0967d13eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -456,8 +456,10 @@ public class PurpurConfig { +@@ -435,8 +435,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0234-Configurable-minimum-demand-for-trades.patch b/patches/server/0228-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0234-Configurable-minimum-demand-for-trades.patch rename to patches/server/0228-Configurable-minimum-demand-for-trades.patch index 23d1a98f8..84725e894 100644 --- a/patches/server/0234-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0228-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc3b4d6efe2182b634c021ad5772a8a81d4cc2d9..c5eaf27e8983949ede5555da7905fa7bc1bf5700 100644 +index 0bbb872ba5e444cee4f34358a4a7db9e300ca128..9560a982f4fd33bdab5c6eec860629a8627819c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2784,6 +2784,7 @@ public class PurpurWorldConfig { +@@ -2745,6 +2745,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index bc3b4d6efe2182b634c021ad5772a8a81d4cc2d9..c5eaf27e8983949ede5555da7905fa7b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2804,6 +2805,7 @@ public class PurpurWorldConfig { +@@ -2765,6 +2766,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0235-Lobotomize-stuck-villagers.patch b/patches/server/0229-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0235-Lobotomize-stuck-villagers.patch rename to patches/server/0229-Lobotomize-stuck-villagers.patch index 6b9c00960..3963fa121 100644 --- a/patches/server/0235-Lobotomize-stuck-villagers.patch +++ b/patches/server/0229-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c5eaf27e8983949ede5555da7905fa7bc1bf5700..0135c477ca5e8401177083bcd41573d7e24ec850 100644 +index 9560a982f4fd33bdab5c6eec860629a8627819c0..953e8eb3580c337bcfb884ef645459046163b320 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2785,6 +2785,9 @@ public class PurpurWorldConfig { +@@ -2746,6 +2746,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index c5eaf27e8983949ede5555da7905fa7bc1bf5700..0135c477ca5e8401177083bcd41573d7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2806,6 +2809,18 @@ public class PurpurWorldConfig { +@@ -2767,6 +2770,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0236-Option-for-villager-display-trade-item.patch b/patches/server/0230-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0236-Option-for-villager-display-trade-item.patch rename to patches/server/0230-Option-for-villager-display-trade-item.patch index e06a0c9ae..e55a4f689 100644 --- a/patches/server/0236-Option-for-villager-display-trade-item.patch +++ b/patches/server/0230-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0135c477ca5e8401177083bcd41573d7e24ec850..a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c 100644 +index 953e8eb3580c337bcfb884ef645459046163b320..adecd8c6530f72ac4013cdce17ca21d7b1e36b69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2788,6 +2788,7 @@ public class PurpurWorldConfig { +@@ -2749,6 +2749,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 0135c477ca5e8401177083bcd41573d7e24ec850..a1b2c5ea3687fc0cfc3c1b9e170aa801 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2821,6 +2822,7 @@ public class PurpurWorldConfig { +@@ -2782,6 +2783,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index a5a8a6c5c..0b4b1507e 100644 --- a/patches/server/0237-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a22 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c..a07d11bd3abdb77e16a7cb7db498690c4326613f 100644 +index adecd8c6530f72ac4013cdce17ca21d7b1e36b69..591c2ac44cd7d921ea0aa7f2703d61c3d8a08921 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1053,8 +1053,10 @@ public class PurpurWorldConfig { +@@ -1014,8 +1014,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch index eb993307e..739d3c86f 100644 --- a/patches/server/0238-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bfb9d3c92950b2600320ba3af409acbf810b5fe7..484eff80394a55088f3cef726a8263e28accd6fe 100644 +index 24f002e44a7a485026a814c898b8569998805da8..580e01281f27a4cd1d3a243a7d4791b88910b5bb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1561,13 +1561,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index d08f86f2122441d661e7693ad7dcb9854921a767..8d83832ef4bdc452c944101985c4b61c // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a07d11bd3abdb77e16a7cb7db498690c4326613f..2b5475c0032171fec4a5e8a7b435168c5b95b17b 100644 +index 591c2ac44cd7d921ea0aa7f2703d61c3d8a08921..3c04866f1738c5d13d03b5d86515fb75147e5be6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -142,6 +142,7 @@ public class PurpurWorldConfig { +@@ -141,6 +141,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index a07d11bd3abdb77e16a7cb7db498690c4326613f..2b5475c0032171fec4a5e8a7b435168c private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -167,6 +168,7 @@ public class PurpurWorldConfig { +@@ -165,6 +166,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0239-Anvil-repair-damage-options.patch b/patches/server/0233-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0239-Anvil-repair-damage-options.patch rename to patches/server/0233-Anvil-repair-damage-options.patch index cf234ae22..5d3438009 100644 --- a/patches/server/0239-Anvil-repair-damage-options.patch +++ b/patches/server/0233-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b5475c0032171fec4a5e8a7b435168c5b95b17b..d00d9068134957fb76740e94e7cce055d8ea9f43 100644 +index 3c04866f1738c5d13d03b5d86515fb75147e5be6..70560445d1c5eddf7f19153be60cb85f9401f2c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -820,9 +820,13 @@ public class PurpurWorldConfig { +@@ -786,9 +786,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch index a4cdca1b5..444e8baab 100644 --- a/patches/server/0240-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d00d9068134957fb76740e94e7cce055d8ea9f43..bafd2cd23363a2bc3c64f402842d0e39731eed1c 100644 +index 70560445d1c5eddf7f19153be60cb85f9401f2c8..defaab96d7f9bc7c6dc7578d1a3f40b944ad6a48 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1081,12 +1081,14 @@ public class PurpurWorldConfig { +@@ -1042,12 +1042,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0241-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch similarity index 91% rename from patches/server/0241-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0235-Add-toggle-for-enchant-level-clamping.patch index ffd326d92..9cb8ac823 100644 --- a/patches/server/0241-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 0bc6edf82d77ae88d64bd6ca0a5294c2143f2f5c..53fc44af2b9ceca0abb6c7b287eb08bdd1bf7fdb 100644 +index 6cc31102f17ee19d9f2163a6aa5cf7bfe9ba3ff5..d6e9711256af439b2f2b86452332faec255e9b91 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1220,6 +1220,7 @@ public final class ItemStack implements DataComponentHolder { @@ -29,10 +29,10 @@ index 6d0363cec691996be416ab22ef9d825196399158..96a402b8c5bf083c6120950eacf79702 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644 +index f0c3566e6b03c88c0cb53a90d44627d0967d13eb..c5dd0979f5bce259b920c47d974f2bf6b805c045 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -398,6 +398,7 @@ public class PurpurConfig { +@@ -382,6 +382,7 @@ public class PurpurConfig { public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; public static boolean replaceIncompatibleEnchants = false; @@ -40,7 +40,7 @@ index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -421,6 +422,7 @@ public class PurpurConfig { +@@ -405,6 +406,7 @@ public class PurpurConfig { allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability replaceIncompatibleEnchants = getBoolean("settings.enchantment.anvil.replace-incompatible-enchants", replaceIncompatibleEnchants); diff --git a/patches/server/0242-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0236-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0242-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0236-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch index c96696d3e..9489fc6d1 100644 --- a/patches/server/0243-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bafd2cd23363a2bc3c64f402842d0e39731eed1c..d58497ff0cf698d8739e07083ef391f65aa39090 100644 +index defaab96d7f9bc7c6dc7578d1a3f40b944ad6a48..6fd09799427a6fef8ef1ec75ed5be8ab3fef60a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2799,6 +2799,8 @@ public class PurpurWorldConfig { +@@ -2760,6 +2760,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index bafd2cd23363a2bc3c64f402842d0e39731eed1c..d58497ff0cf698d8739e07083ef391f6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2833,6 +2835,8 @@ public class PurpurWorldConfig { +@@ -2794,6 +2796,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0244-Stonecutter-damage.patch b/patches/server/0238-Stonecutter-damage.patch similarity index 97% rename from patches/server/0244-Stonecutter-damage.patch rename to patches/server/0238-Stonecutter-damage.patch index 4232be417..4ccb2b5c4 100644 --- a/patches/server/0244-Stonecutter-damage.patch +++ b/patches/server/0238-Stonecutter-damage.patch @@ -128,7 +128,7 @@ index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138fac } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644 +index c5dd0979f5bce259b920c47d974f2bf6b805c045..4a1d8b2c412a51e4c29e3846ea9c1bde99346010 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -143,10 +143,10 @@ index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc045760154 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d58497ff0cf698d8739e07083ef391f65aa39090..b099b1abfe527b066c2bc9e89dc98c52db34c3eb 100644 +index 6fd09799427a6fef8ef1ec75ed5be8ab3fef60a1..6a380bf14b21e318c5c834c869510daaf05392a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1076,6 +1076,11 @@ public class PurpurWorldConfig { +@@ -1037,6 +1037,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch similarity index 93% rename from patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch index 12d624dac..e8e37bb2f 100644 --- a/patches/server/0245-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30feb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b099b1abfe527b066c2bc9e89dc98c52db34c3eb..6dfc93af8bab6462d4ab0940ea61652065b0b581 100644 +index 6a380bf14b21e318c5c834c869510daaf05392a7..07d94a6579905cfa54da183588b4b2729a463605 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,6 +1017,13 @@ public class PurpurWorldConfig { +@@ -983,6 +983,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0246-Add-config-for-snow-on-blue-ice.patch b/patches/server/0240-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0246-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0240-Add-config-for-snow-on-blue-ice.patch index 9c19930b3..a829346e5 100644 --- a/patches/server/0246-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0240-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dfc93af8bab6462d4ab0940ea61652065b0b581..ba8d194d1a6ecab995b31d04687f269389811754 100644 +index 07d94a6579905cfa54da183588b4b2729a463605..b4ffa808f39796e1e5c1e0c649b4027aef9fe1c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -998,9 +998,11 @@ public class PurpurWorldConfig { +@@ -964,9 +964,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0247-Skeletons-eat-wither-roses.patch b/patches/server/0241-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0247-Skeletons-eat-wither-roses.patch rename to patches/server/0241-Skeletons-eat-wither-roses.patch index f751cc545..297d9e34e 100644 --- a/patches/server/0247-Skeletons-eat-wither-roses.patch +++ b/patches/server/0241-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 1aae461eed332fe31c1449c47d0928f655c740da..9eb6ed001bfc578311300977dda6f3f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba8d194d1a6ecab995b31d04687f269389811754..e77c777096229ff1ad14fe58c531e2bf1ed7bf3b 100644 +index b4ffa808f39796e1e5c1e0c649b4027aef9fe1c4..ff4e51d06f375fe8426346db539bfb55dafefb10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2482,6 +2482,7 @@ public class PurpurWorldConfig { +@@ -2443,6 +2443,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index ba8d194d1a6ecab995b31d04687f269389811754..e77c777096229ff1ad14fe58c531e2bf private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2495,6 +2496,7 @@ public class PurpurWorldConfig { +@@ -2456,6 +2457,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch b/patches/server/0242-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0248-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0242-Enchantment-Table-Persists-Lapis.patch index fb79a5664..f09901b88 100644 --- a/patches/server/0248-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0242-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb92808 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e77c777096229ff1ad14fe58c531e2bf1ed7bf3b..7f159bc172cf9414cf34e8141d841764b80b204d 100644 +index ff4e51d06f375fe8426346db539bfb55dafefb10..512a021ad416c467e42ec39c6ac0bd9788c2c365 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1519,6 +1519,11 @@ public class PurpurWorldConfig { +@@ -1480,6 +1480,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0249-Spark-Profiler.patch b/patches/server/0243-Spark-Profiler.patch similarity index 100% rename from patches/server/0249-Spark-Profiler.patch rename to patches/server/0243-Spark-Profiler.patch diff --git a/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 92% rename from patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch index aef122660..2b6c82f54 100644 --- a/patches/server/0250-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 07d6455c781b8743a833cbc04576015433686c4b..d038e62a0151e3b5c9dee06f1b2682684d0b496e 100644 +index 4a1d8b2c412a51e4c29e3846ea9c1bde99346010..f500c3b42a9ba346a0e4305c0169159f847e3457 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -461,9 +461,11 @@ public class PurpurConfig { +@@ -440,9 +440,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch similarity index 84% rename from patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch index c1bcf0d56..afdc6e809 100644 --- a/patches/server/0251-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f159bc172cf9414cf34e8141d841764b80b204d..4ba10f93d1e9eabb9c737efc0be93f2f555fb546 100644 +index 512a021ad416c467e42ec39c6ac0bd9788c2c365..83e5ef5d91299f97d65dcb3ad76c84c141ff9272 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1057,6 +1057,11 @@ public class PurpurWorldConfig { +@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { } } @@ -30,6 +30,6 @@ index 7f159bc172cf9414cf34e8141d841764b80b204d..4ba10f93d1e9eabb9c737efc0be93f2f + sculkShriekerCanSummonDefault = getBoolean("blocks.sculk_shrieker.can-summon-default", sculkShriekerCanSummonDefault); + } + - public boolean signAllowColors = false; - private void signSettings() { - signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors); + public boolean slabHalfBreak = false; + private void slabSettings() { + slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); diff --git a/patches/server/0252-Config-to-not-let-coral-die.patch b/patches/server/0246-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0252-Config-to-not-let-coral-die.patch rename to patches/server/0246-Config-to-not-let-coral-die.patch index 47b3baeb5..6fb3df325 100644 --- a/patches/server/0252-Config-to-not-let-coral-die.patch +++ b/patches/server/0246-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ba10f93d1e9eabb9c737efc0be93f2f555fb546..6e30be26888422187c145c5e7c81d24804119b90 100644 +index 83e5ef5d91299f97d65dcb3ad76c84c141ff9272..4e1d5d40484296baa43ec0913ece23afe99683d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -904,6 +904,11 @@ public class PurpurWorldConfig { +@@ -870,6 +870,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0253-Add-local-difficulty-api.patch b/patches/server/0247-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0253-Add-local-difficulty-api.patch rename to patches/server/0247-Add-local-difficulty-api.patch diff --git a/patches/server/0254-Add-toggle-for-RNG-manipulation.patch b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch similarity index 95% rename from patches/server/0254-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0248-Add-toggle-for-RNG-manipulation.patch index ea5530bb4..0d613379e 100644 --- a/patches/server/0254-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch @@ -33,10 +33,10 @@ index b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6e30be26888422187c145c5e7c81d24804119b90..7d0d298bd68ecba2ba1e2f3336d9aad4567dfde2 100644 +index 4e1d5d40484296baa43ec0913ece23afe99683d4..a69f1e56952298bf1155309d3ae1fb995be32ecb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -204,9 +204,11 @@ public class PurpurWorldConfig { +@@ -202,9 +202,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0256-Remove-Timings.patch b/patches/server/0249-Remove-Timings.patch similarity index 98% rename from patches/server/0256-Remove-Timings.patch rename to patches/server/0249-Remove-Timings.patch index a7fb74752..80ba536b6 100644 --- a/patches/server/0256-Remove-Timings.patch +++ b/patches/server/0249-Remove-Timings.patch @@ -56,10 +56,10 @@ index 57e76b53e5e314c3e6b8856010f7a84188121582..8c134a642ccaf3530022f2e675a858d7 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572 100644 +index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99586ddfe2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1481,7 +1481,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1743,21 +1743,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1624,7 +1624,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -242,7 +242,7 @@ index f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572..dfeae138e830e95ab823b6349a91160b try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1820,17 +1820,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2832,40 +2833,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -385,6 +386,7 @@ public class PurpurWorldConfig { +@@ -383,6 +384,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0262-Add-skeleton-bow-accuracy-option.patch b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0262-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0255-Add-skeleton-bow-accuracy-option.patch index ea00f2812..d6be178a6 100644 --- a/patches/server/0262-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e4592768 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d790f742b47093f4e393cc7d60fc7c5c13c20fd1..5b12c08a1d8e6f62c5653c95071a1d36d735d039 100644 +index 2822dfdf35e4f6b30379350b95a94ebfb7ce7c6d..1fbed95c05e5d8815a815b2e8c33c064446de40a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2502,6 +2502,8 @@ public class PurpurWorldConfig { +@@ -2463,6 +2463,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index d790f742b47093f4e393cc7d60fc7c5c13c20fd1..5b12c08a1d8e6f62c5653c95071a1d36 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2516,6 +2518,18 @@ public class PurpurWorldConfig { +@@ -2477,6 +2479,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0264-Add-death-screen-API.patch b/patches/server/0256-Add-death-screen-API.patch similarity index 100% rename from patches/server/0264-Add-death-screen-API.patch rename to patches/server/0256-Add-death-screen-API.patch diff --git a/patches/server/0265-Implement-ram-and-rambar-commands.patch b/patches/server/0257-Implement-ram-and-rambar-commands.patch similarity index 98% rename from patches/server/0265-Implement-ram-and-rambar-commands.patch rename to patches/server/0257-Implement-ram-and-rambar-commands.patch index 43a34adf0..cf56b373c 100644 --- a/patches/server/0265-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0257-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index d3c42c19a051fb3a670e541fc746b55717192a91..13dfb3e506d50c0b191baf5d05bbfc28 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 93aac363b21d695f266c66ec58f4ac8d17d61611..b4eaa50add793af326bdf19e98cc97f6b88d5496 100644 +index 24009a27151288fd0f37379732d42a3077fe6d66..2c805bcd63ef5f6d4b3df33fc25f98d05f0972f9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -301,6 +301,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 93aac363b21d695f266c66ec58f4ac8d17d61611..b4eaa50add793af326bdf19e98cc97f6 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3023,5 +3026,13 @@ public class ServerPlayer extends Player { +@@ -3022,5 +3025,13 @@ public class ServerPlayer extends Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } @@ -60,7 +60,7 @@ index 93aac363b21d695f266c66ec58f4ac8d17d61611..b4eaa50add793af326bdf19e98cc97f6 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d038e62a0151e3b5c9dee06f1b2682684d0b496e..b94f7b882405345f6154383beaef8d89673726c9 100644 +index f500c3b42a9ba346a0e4305c0169159f847e3457..8c90ac81fc69c4101c644cf8fe1885b06ba58df6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/server/0266-Configurable-block-blast-resistance.patch b/patches/server/0258-Configurable-block-blast-resistance.patch similarity index 94% rename from patches/server/0266-Configurable-block-blast-resistance.patch rename to patches/server/0258-Configurable-block-blast-resistance.patch index efd300477..5b3608496 100644 --- a/patches/server/0266-Configurable-block-blast-resistance.patch +++ b/patches/server/0258-Configurable-block-blast-resistance.patch @@ -18,10 +18,10 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b94f7b882405345f6154383beaef8d89673726c9..b0e560b1efa0368949fa0e3a6706807d9dbfca20 100644 +index 8c90ac81fc69c4101c644cf8fe1885b06ba58df6..bcdebc342d033c0aa32134e6caa34a2d4e641e05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -497,4 +497,19 @@ public class PurpurConfig { +@@ -476,4 +476,19 @@ public class PurpurConfig { String setPattern = getString("settings.username-valid-characters", defaultPattern); usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0267-Configurable-block-fall-damage-modifiers.patch b/patches/server/0259-Configurable-block-fall-damage-modifiers.patch similarity index 94% rename from patches/server/0267-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0259-Configurable-block-fall-damage-modifiers.patch index feb5dfd24..1ba9b6362 100644 --- a/patches/server/0267-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0259-Configurable-block-fall-damage-modifiers.patch @@ -18,10 +18,10 @@ index 9084e11df829fb24489773d15435a3a3570135fe..fe37651b9d5a1f786944c39de0c8a438 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 49dad044ac21bbfe2e60be76757ada4750b607b4..c5215d3a65856db760089f9e3dc38426c70e75ba 100644 +index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..c6ed00f89127a2857dfb9ce9e04513e5cf510dfb 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -96,6 +96,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -89,6 +89,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -32,7 +32,7 @@ index 49dad044ac21bbfe2e60be76757ada4750b607b4..c5215d3a65856db760089f9e3dc38426 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -514,7 +518,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -467,7 +471,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b0e560b1efa0368949fa0e3a6706807d9dbfca20..384d07ffdbae9b764d5313fa8d172f95d1c1aebd 100644 +index bcdebc342d033c0aa32134e6caa34a2d4e641e05..cf150b979efb7197d92b26cfd842d7023718f2a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -512,4 +512,50 @@ public class PurpurConfig { +@@ -491,4 +491,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0268-Language-API.patch b/patches/server/0260-Language-API.patch similarity index 100% rename from patches/server/0268-Language-API.patch rename to patches/server/0260-Language-API.patch diff --git a/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0261-Milk-Keeps-Beneficial-Effects.patch similarity index 89% rename from patches/server/0269-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0261-Milk-Keeps-Beneficial-Effects.patch index 74d9864a2..a87c15301 100644 --- a/patches/server/0269-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0261-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index def30f8c79a4244116f1b9d9ae1a9d06d0a38bce..1f0b8e10e03a1c0aea99768d714325effd04861e 100644 +index 5e979618feda785d3f36cf085e72eed23bdd3f22..fa698cfefccdddf5e5e9938a2959004c70f743a7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1154,6 +1154,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,7 +30,7 @@ index 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 94e29919ddc7f507d54e14c3360f7a3e8bb831a7..f1ac2b90a465213c93ce940ca3f40497a9309e9b 100644 +index 1fbed95c05e5d8815a815b2e8c33c064446de40a..97c9e8097bcaed24acc465aa5162538d38b56814 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { @@ -40,12 +40,12 @@ index 94e29919ddc7f507d54e14c3360f7a3e8bb831a7..f1ac2b90a465213c93ce940ca3f40497 + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; - public boolean persistentTileEntityDisplayNames = false; -@@ -154,6 +155,7 @@ public class PurpurWorldConfig { + public boolean projectilesBypassMobGriefing = false; +@@ -153,6 +154,7 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); - persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); + projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0270-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0271-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0263-Add-log-suppression-for-LibraryLoader.patch similarity index 91% rename from patches/server/0271-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0263-Add-log-suppression-for-LibraryLoader.patch index 2722dbce3..41bd50416 100644 --- a/patches/server/0271-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0263-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 384d07ffdbae9b764d5313fa8d172f95d1c1aebd..c7159eb65efaac72091fe3b9e7e63f9c778c15aa 100644 +index cf150b979efb7197d92b26cfd842d7023718f2a1..1a5133d07b3da44b54e560320d0c7461250cd4d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -470,11 +470,14 @@ public class PurpurConfig { +@@ -449,11 +449,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch index bbbbc0811..d6297f44b 100644 --- a/patches/server/0272-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f1ac2b90a465213c93ce940ca3f40497a9309e9b..eae5bebdb1bcc711b205078f96023ceb48fe5dd0 100644 +index 97c9e8097bcaed24acc465aa5162538d38b56814..06b72061a8c1c2e0bd085f4fde7511a73fe3fec3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1412,6 +1412,7 @@ public class PurpurWorldConfig { +@@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index f1ac2b90a465213c93ce940ca3f40497a9309e9b..eae5bebdb1bcc711b205078f96023ceb private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1430,6 +1431,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1389,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0273-Fire-Immunity-API.patch b/patches/server/0265-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0273-Fire-Immunity-API.patch rename to patches/server/0265-Fire-Immunity-API.patch diff --git a/patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 95a0d2dde..503abfc7d 100644 --- a/patches/server/0274-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,10 +17,10 @@ index 7a27388b5155e7b2478b0daa02cb616829a5d4a2..3aae4fa4176c0bf170f4532ae187e312 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eae5bebdb1bcc711b205078f96023ceb48fe5dd0..cb7cb5352a431cc336086c106be84e50424fd8ea 100644 +index 06b72061a8c1c2e0bd085f4fde7511a73fe3fec3..42e6d0177969fc045003b5fa8df2a0223362a1a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -417,6 +417,7 @@ public class PurpurWorldConfig { +@@ -415,6 +415,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index eae5bebdb1bcc711b205078f96023ceb48fe5dd0..cb7cb5352a431cc336086c106be84e50 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -444,6 +445,7 @@ public class PurpurWorldConfig { +@@ -442,6 +443,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0275-Added-got-ram-event.patch b/patches/server/0267-Added-got-ram-event.patch similarity index 100% rename from patches/server/0275-Added-got-ram-event.patch rename to patches/server/0267-Added-got-ram-event.patch diff --git a/patches/server/0276-Log-skipped-entity-s-position.patch b/patches/server/0268-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0276-Log-skipped-entity-s-position.patch rename to patches/server/0268-Log-skipped-entity-s-position.patch diff --git a/patches/server/0277-End-Crystal-Cramming.patch b/patches/server/0269-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0277-End-Crystal-Cramming.patch rename to patches/server/0269-End-Crystal-Cramming.patch index 63bfa1843..c6a791e10 100644 --- a/patches/server/0277-End-Crystal-Cramming.patch +++ b/patches/server/0269-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdb // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb7cb5352a431cc336086c106be84e50424fd8ea..892af70a29ab76575cc86c7d9f36e28f3aefabb9 100644 +index 42e6d0177969fc045003b5fa8df2a0223362a1a2..d74a3602bdb45594da4deb7d65eee8fe98af5cae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -947,6 +947,7 @@ public class PurpurWorldConfig { +@@ -913,6 +913,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index cb7cb5352a431cc336086c106be84e50424fd8ea..892af70a29ab76575cc86c7d9f36e28f private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -974,6 +975,7 @@ public class PurpurWorldConfig { +@@ -940,6 +941,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index a923faa04..aee8a4fbd 100644 --- a/patches/server/0278-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index 37ce2605c8803d8d87770bf6a95a83aa975b99fe..39d4e47b1408dd7c0174a6cf8b4ebac6 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 892af70a29ab76575cc86c7d9f36e28f3aefabb9..70b3c2fc1bd9f31d79079828a5de22a40d9cceba 100644 +index d74a3602bdb45594da4deb7d65eee8fe98af5cae..c54bf92fbe8b975aee69819cfdf64ad2cb3065b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -846,11 +846,13 @@ public class PurpurWorldConfig { +@@ -812,11 +812,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch similarity index 87% rename from patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch index 4a36a5b5b..96434dfed 100644 --- a/patches/server/0279-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch @@ -27,22 +27,22 @@ index ddc880ac0c8378bc1132be5deba746c1484c941c..7a8e4b9a9f2e1e5a9c38ad330c75df1f } } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8d1723c78 100644 +index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..0ed72ec09443de7b62a5320841202b683a393314 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java @@ -29,6 +29,7 @@ public class RangedAttribute extends Attribute { @Override public double sanitizeValue(double value) { -+ if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur ++ //if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur // Purpur - TODO: fix clamp enchant levels option return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c7159eb65efaac72091fe3b9e7e63f9c778c15aa..538239ed3d8ece17e219e097162eb66bff7d43c8 100644 +index 1a5133d07b3da44b54e560320d0c7461250cd4d1..c895adeef1dcf3d16eb966233dd3a593eda314a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -501,6 +501,11 @@ public class PurpurConfig { +@@ -480,6 +480,11 @@ public class PurpurConfig { usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0280-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch similarity index 93% rename from patches/server/0280-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0272-Config-to-remove-explosion-radius-clamp.patch index 6eb9e20bd..8b6885d33 100644 --- a/patches/server/0280-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 6b6340ae8ca3f81f08f9038b63ebc419e003cf6b..ed31528ddfec06e723827a505daeca59 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70b3c2fc1bd9f31d79079828a5de22a40d9cceba..9759c3aa4dab2a1ea3ab62ee026d6ad93a488ff7 100644 +index c54bf92fbe8b975aee69819cfdf64ad2cb3065b6..8b440188e2ea6e75adcb9b9e4919279c3a7f8576 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,6 +213,11 @@ public class PurpurWorldConfig { +@@ -211,6 +211,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch index 9988211a0..d1a339124 100644 --- a/patches/server/0281-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9759c3aa4dab2a1ea3ab62ee026d6ad93a488ff7..959be2c3248bc5db01d4c5a4b15326867074ecee 100644 +index 8b440188e2ea6e75adcb9b9e4919279c3a7f8576..5dd73270a3fe702a660f3689f09d2d08bf9f322f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -900,8 +900,20 @@ public class PurpurWorldConfig { +@@ -866,8 +866,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0282-Add-PreExplodeEvents.patch b/patches/server/0274-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0282-Add-PreExplodeEvents.patch rename to patches/server/0274-Add-PreExplodeEvents.patch diff --git a/patches/server/0283-Improve-output-of-plugins-command.patch b/patches/server/0275-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0283-Improve-output-of-plugins-command.patch rename to patches/server/0275-Improve-output-of-plugins-command.patch diff --git a/patches/server/0284-Add-mending-multiplier.patch b/patches/server/0276-Add-mending-multiplier.patch similarity index 93% rename from patches/server/0284-Add-mending-multiplier.patch rename to patches/server/0276-Add-mending-multiplier.patch index c6cc8341f..a5869e5ee 100644 --- a/patches/server/0284-Add-mending-multiplier.patch +++ b/patches/server/0276-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index ce608784e0e35b67dde377436aaf42c956ce0644..f5debc8ddc496cd3e2d8b253511ee5cc public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 959be2c3248bc5db01d4c5a4b15326867074ecee..24e3ebf13e6af6d4bddb85976b30ef894278ce20 100644 +index 5dd73270a3fe702a660f3689f09d2d08bf9f322f..60159dbc735621db46cc0b8969b8a627fa7a4e4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { @@ -38,7 +38,7 @@ index 959be2c3248bc5db01d4c5a4b15326867074ecee..24e3ebf13e6af6d4bddb85976b30ef89 public boolean alwaysTameInCreative = false; public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; -@@ -146,6 +147,7 @@ public class PurpurWorldConfig { +@@ -145,6 +146,7 @@ public class PurpurWorldConfig { public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0285-Make-GUI-Great-Again.patch b/patches/server/0277-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0285-Make-GUI-Great-Again.patch rename to patches/server/0277-Make-GUI-Great-Again.patch index 758d27fe1..b361a6f56 100644 --- a/patches/server/0285-Make-GUI-Great-Again.patch +++ b/patches/server/0277-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 0d2d254fc2795f0ec844029bd4c05cdf6dc94207..775c5de4f5094260096cef6723dd50dfe2cb0c81 100644 +index aa28e72c12cbb1d15d6bd0c6b01760c12e51497b..6f8fb235345e8d0e24385024465fc3a0b0f8164a 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -110,6 +110,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0286-Shears-can-defuse-TNT.patch b/patches/server/0278-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0286-Shears-can-defuse-TNT.patch rename to patches/server/0278-Shears-can-defuse-TNT.patch index bf9cf7e65..b31b31103 100644 --- a/patches/server/0286-Shears-can-defuse-TNT.patch +++ b/patches/server/0278-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24e3ebf13e6af6d4bddb85976b30ef894278ce20..a35837a4d089658b4a19ebf63690e5371e1515cd 100644 +index 60159dbc735621db46cc0b8969b8a627fa7a4e4b..33bdb5aab5080d83bc4bdabcb5c2c1de8678238d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3276,4 +3276,11 @@ public class PurpurWorldConfig { +@@ -3234,4 +3234,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0287-Explorer-Map-API.patch b/patches/server/0279-Explorer-Map-API.patch similarity index 100% rename from patches/server/0287-Explorer-Map-API.patch rename to patches/server/0279-Explorer-Map-API.patch diff --git a/patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch index 5fe1444e3..3b4779b56 100644 --- a/patches/server/0288-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a35837a4d089658b4a19ebf63690e5371e1515cd..43c6f7bfac08c31e19df70fb92cd611fbbe03b30 100644 +index 33bdb5aab5080d83bc4bdabcb5c2c1de8678238d..691eba61c293384e1fb1aa6f0d4fb52034abc0e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2091,6 +2091,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2049,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index a35837a4d089658b4a19ebf63690e5371e1515cd..43c6f7bfac08c31e19df70fb92cd611f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2104,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -2062,6 +2063,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 66% rename from patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index c0e4a8146..be3cf613f 100644 --- a/patches/server/0289-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,39 +5,23 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index e25af9af8f87e6762716749c367658bf6bda9e34..8c209106c9f09f7d3e661c6fa3cffccf08e73182 100644 +index e25af9af8f87e6762716749c367658bf6bda9e34..b7d5c0b0e3741fcf04c4bac21a82fc41e2eeed5d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -597,20 +597,33 @@ public class PiglinAi { - Iterator iterator = iterable.iterator(); - - Item item; -+ ItemStack itemstack; // Purpur - - do { - if (!iterator.hasNext()) { - return false; - } - -- ItemStack itemstack = (ItemStack) iterator.next(); -+ itemstack = (ItemStack) iterator.next(); // Purpur +@@ -606,11 +606,18 @@ public class PiglinAi { + ItemStack itemstack = (ItemStack) iterator.next(); item = itemstack.getItem(); - } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD)); -+ } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD) && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(entity, itemstack))); ++ } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD) && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(item))); // Purpur return true; } + // Purpur start -+ private static boolean isWearingGoldTrim(LivingEntity entity, ItemStack itemstack) { -+ Optional optionalArmorTrim = net.minecraft.world.item.armortrim.ArmorTrim.getTrim(entity.level().registryAccess(), itemstack, true); -+ -+ if (optionalArmorTrim.isEmpty()) return false; -+ -+ net.minecraft.world.item.armortrim.ArmorTrim armorTrim = optionalArmorTrim.get(); -+ -+ return armorTrim.material().is(net.minecraft.world.item.armortrim.TrimMaterials.GOLD); ++ private static boolean isWearingGoldTrim(Item itemstack) { ++ net.minecraft.world.item.armortrim.ArmorTrim armorTrim = itemstack.components().get(net.minecraft.core.component.DataComponents.TRIM); ++ return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.armortrim.TrimMaterials.GOLD); + } + // Purpur end + @@ -45,10 +29,10 @@ index e25af9af8f87e6762716749c367658bf6bda9e34..8c209106c9f09f7d3e661c6fa3cffccf piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 43c6f7bfac08c31e19df70fb92cd611fbbe03b30..2cefa0a09e86e8d344de8b6fff8541d43f662b65 100644 +index 691eba61c293384e1fb1aa6f0d4fb52034abc0e4..2b1d637e2e6641de2b65a23b05d28527c10cb517 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2260,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2218,6 +2218,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +40,7 @@ index 43c6f7bfac08c31e19df70fb92cd611fbbe03b30..2cefa0a09e86e8d344de8b6fff8541d4 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2275,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2233,6 +2234,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 95% rename from patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch index 43ecdf2ef..9dd75b366 100644 --- a/patches/server/0290-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,10 +31,10 @@ index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb900 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 538239ed3d8ece17e219e097162eb66bff7d43c8..ecb9b15939ab8ff6cfa7e15457701428019b443a 100644 +index c895adeef1dcf3d16eb966233dd3a593eda314a8..395ff2bb672c972ce2fd1cd5dc66f30b64222f0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -566,4 +566,9 @@ public class PurpurConfig { +@@ -545,4 +545,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/server/0291-place-end-crystal-on-any-block.patch b/patches/server/0283-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0291-place-end-crystal-on-any-block.patch rename to patches/server/0283-place-end-crystal-on-any-block.patch index 87405372a..368d3d326 100644 --- a/patches/server/0291-place-end-crystal-on-any-block.patch +++ b/patches/server/0283-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2cefa0a09e86e8d344de8b6fff8541d43f662b65..28ecc0e7d61a1c0a62bc0ec096cd601a45fa02db 100644 +index 2b1d637e2e6641de2b65a23b05d28527c10cb517..a90decaa9ebe5aecadddb58c68e84a1d2e132235 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -969,6 +969,7 @@ public class PurpurWorldConfig { +@@ -935,6 +935,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 2cefa0a09e86e8d344de8b6fff8541d43f662b65..28ecc0e7d61a1c0a62bc0ec096cd601a private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -997,6 +998,7 @@ public class PurpurWorldConfig { +@@ -963,6 +964,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch index d9b93d98f..be4f11907 100644 --- a/patches/server/0293-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28ecc0e7d61a1c0a62bc0ec096cd601a45fa02db..002c9bba93dede25111c653ec1df38316f19421f 100644 +index a90decaa9ebe5aecadddb58c68e84a1d2e132235..083c92fa9e0af35238e919851cf5f0778573e2f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -145,6 +145,7 @@ public class PurpurWorldConfig { +@@ -144,6 +144,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 28ecc0e7d61a1c0a62bc0ec096cd601a45fa02db..002c9bba93dede25111c653ec1df3831 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); mendingMultiplier = getDouble("gameplay-mechanics.mending-multiplier", mendingMultiplier); -@@ -173,6 +174,7 @@ public class PurpurWorldConfig { +@@ -171,6 +172,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0294-register-minecraft-debug-commands.patch b/patches/server/0285-register-minecraft-debug-commands.patch similarity index 95% rename from patches/server/0294-register-minecraft-debug-commands.patch rename to patches/server/0285-register-minecraft-debug-commands.patch index d1d70ac86..af0a5658b 100644 --- a/patches/server/0294-register-minecraft-debug-commands.patch +++ b/patches/server/0285-register-minecraft-debug-commands.patch @@ -35,10 +35,10 @@ index 5443013060b62e3bfcc51cddca96d1c0bc59fe72..868932a170c3052e49dc69c2e8eb3ac9 if (optionset.has("initSettings")) { // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ecb9b15939ab8ff6cfa7e15457701428019b443a..ea383b56c5985069fb55e5a2252510e45783df7a 100644 +index 395ff2bb672c972ce2fd1cd5dc66f30b64222f0a..eab357f5eb221fd1e2b64cf7a9635e1954a9fdc7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -571,4 +571,9 @@ public class PurpurConfig { +@@ -550,4 +550,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/server/0295-Configurable-villager-search-radius.patch b/patches/server/0286-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0295-Configurable-villager-search-radius.patch rename to patches/server/0286-Configurable-villager-search-radius.patch index 8f9e628a1..ed87a8de6 100644 --- a/patches/server/0295-Configurable-villager-search-radius.patch +++ b/patches/server/0286-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 002c9bba93dede25111c653ec1df38316f19421f..7dc82ffccc157a17335f1bc56ab81be3813294f6 100644 +index 083c92fa9e0af35238e919851cf5f0778573e2f5..389ba542e27e35f9f508555797d9f1f98dc4bed1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2890,6 +2890,8 @@ public class PurpurWorldConfig { +@@ -2848,6 +2848,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 002c9bba93dede25111c653ec1df38316f19421f..7dc82ffccc157a17335f1bc56ab81be3 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2926,6 +2928,8 @@ public class PurpurWorldConfig { +@@ -2884,6 +2886,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0018-Silk-touch-spawners.patch b/patches/unapplied-server/0018-Silk-touch-spawners.patch similarity index 100% rename from patches/server/0018-Silk-touch-spawners.patch rename to patches/unapplied-server/0018-Silk-touch-spawners.patch diff --git a/patches/server/0217-Signs-allow-color-codes.patch b/patches/unapplied-server/0217-Signs-allow-color-codes.patch similarity index 100% rename from patches/server/0217-Signs-allow-color-codes.patch rename to patches/unapplied-server/0217-Signs-allow-color-codes.patch diff --git a/patches/server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch From 1197553d30f14d3a3e62bff65d503b4f3e40fb8c Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 19:22:16 -0700 Subject: [PATCH 111/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@82a8012 [ci skip] adjust projects workflow for label changes PaperMC/Paper@61c9c07 Fix CraftMetaBlockState adding extra tags PaperMC/Paper@7f2d531 Rewrite reflection in library loader jars (#10608) PaperMC/Paper@05308fc Remap plugin libraries with namespace set to spigot (#10610) PaperMC/Paper@69a971a Reset component prototype on itemtype change PaperMC/Paper@f9397e1 Fix incorrect Commodore mapping of sweeping enchant --- gradle.properties | 2 +- .../api/0041-Add-log-suppression-for-LibraryLoader.patch | 8 ++++---- patches/server/0243-Spark-Profiler.patch | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index abbe3e3d4..c854ceea7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.5-R0.1-SNAPSHOT mcVersion = 1.20.5 -paperCommit = 0f3e324152d03fdeb11ea8762325fc600d1e7fcb +paperCommit = f9397e108e02ae558493d7bb63b0264af2cc7693 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch index 8ecbea4f6..d1a85cb9d 100644 --- a/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch @@ -17,10 +17,10 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..f1e58639213be0c43cd2ff090b625e7d /** * This class was not meant to be constructed explicitly diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -index f4d655a158410039305ac68cebe0d79000f73df8..449f36f73e7a16b3a7c1e7ea2a0ca9b59050db62 100644 +index 8e1b6be2462aaa692efa1f72986921a6dc357196..b6e18b12fd4d61ce92203582906d24b4d14e6cc5 100644 --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -66,6 +66,7 @@ public class LibraryLoader +@@ -68,6 +68,7 @@ public class LibraryLoader @Override public void transferStarted(@NotNull TransferEvent event) throws TransferCancelledException { @@ -28,7 +28,7 @@ index f4d655a158410039305ac68cebe0d79000f73df8..449f36f73e7a16b3a7c1e7ea2a0ca9b5 logger.log( Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); } } ); -@@ -86,6 +87,7 @@ public class LibraryLoader +@@ -88,6 +89,7 @@ public class LibraryLoader { return null; } @@ -36,7 +36,7 @@ index f4d655a158410039305ac68cebe0d79000f73df8..449f36f73e7a16b3a7c1e7ea2a0ca9b5 logger.log( Level.INFO, "[{0}] Loading {1} libraries... please wait", new Object[] { java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), desc.getLibraries().size() // Paper - use configured log prefix -@@ -124,6 +126,7 @@ public class LibraryLoader +@@ -135,6 +137,7 @@ public class LibraryLoader } jarFiles.add( url ); diff --git a/patches/server/0243-Spark-Profiler.patch b/patches/server/0243-Spark-Profiler.patch index 8ec8899bb..a8bab00ce 100644 --- a/patches/server/0243-Spark-Profiler.patch +++ b/patches/server/0243-Spark-Profiler.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Spark Profiler Co-authored-by: granny diff --git a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -index bb1cfa8ea8b11fc36ea72c8e382b8554bccd0ce5..a1af6a07a5fcd280993ad9dae139f3343200692f 100644 +index 6f14cb9a73faa1d0ae2939d08809d9f6c2a99e1d..4e98745670032038f7b4f8e1adabc1e00e7f15bf 100644 --- a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java +++ b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -@@ -109,6 +109,7 @@ public class PluginInitializerManager { +@@ -112,6 +112,7 @@ public class PluginInitializerManager { @SuppressWarnings("unchecked") java.util.List files = ((java.util.List) optionSet.valuesOf("add-plugin")).stream().map(File::toPath).toList(); io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, files); From 79d7e7f17b55b2b32d0bfeb1c976434186311878 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 28 Apr 2024 23:09:47 -0700 Subject: [PATCH 112/148] comment out missed profiler methods --- .../server/0250-Remove-Mojang-Profiler.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/patches/server/0250-Remove-Mojang-Profiler.patch b/patches/server/0250-Remove-Mojang-Profiler.patch index a851b8706..be7a6f2e1 100644 --- a/patches/server/0250-Remove-Mojang-Profiler.patch +++ b/patches/server/0250-Remove-Mojang-Profiler.patch @@ -1534,6 +1534,27 @@ index 09502b15c20f401c3b56ecedc4d3b515384d654f..bca7b7192debb3a34a08047010a2438e super.customServerAiStep(); } +diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +index 29412208e329e9fc211b844822a2fc3328a5bc89..f8790ab5b7c1279719271ee57c00f4f2d6ce9714 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java ++++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +@@ -130,12 +130,12 @@ public class Armadillo extends Animal { + + @Override + protected void customServerAiStep() { +- this.level().getProfiler().push("armadilloBrain"); ++ //this.level().getProfiler().push("armadilloBrain"); // Purpur + ((Brain) this.brain).tick((ServerLevel) this.level(), this); // CraftBukkit - decompile error +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("armadilloActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("armadilloActivityUpdate"); // Purpur + ArmadilloAi.updateActivity(this); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur + if (this.isAlive() && !this.isBaby() && --this.scuteTime <= 0) { + this.playSound(SoundEvents.ARMADILLO_SCUTE_DROP, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F); + this.forceDrops = true; // CraftBukkit diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java index ea1515f189bf3bc4cfef4524fb40f0d826f68cc0..d330f79e860662bc93a1703215e66e6564d181b9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java From f0d8a13a1f964575bd1c8879fbeb5cad790d5762 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 00:51:29 -0700 Subject: [PATCH 113/148] reapply stored bee api patches --- .../0045-Stored-Bee-API.patch} | 0 ...-API.patch => 0046-Explorer-Map-API.patch} | 0 ...ge.patch => 0047-Stonecutter-damage.patch} | 0 .../0278-Stored-Bee-API.patch} | 63 +++++++++---------- ...patch => 0279-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0280-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 0 ...0284-place-end-crystal-on-any-block.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...6-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 0 13 files changed, 31 insertions(+), 32 deletions(-) rename patches/{dropped-api/0047-Stored-Bee-API.patch => api/0045-Stored-Bee-API.patch} (100%) rename patches/api/{0045-Explorer-Map-API.patch => 0046-Explorer-Map-API.patch} (100%) rename patches/api/{0046-Stonecutter-damage.patch => 0047-Stonecutter-damage.patch} (100%) rename patches/{unapplied-server/0293-Stored-Bee-API.patch => server/0278-Stored-Bee-API.patch} (74%) rename patches/server/{0278-Shears-can-defuse-TNT.patch => 0279-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0279-Explorer-Map-API.patch => 0280-Explorer-Map-API.patch} (100%) rename patches/server/{0280-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0281-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0282-Add-option-for-always-showing-item-in-player-death-m.patch => 0283-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0283-place-end-crystal-on-any-block.patch => 0284-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0284-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0285-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0285-register-minecraft-debug-commands.patch => 0286-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0286-Configurable-villager-search-radius.patch => 0287-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/dropped-api/0047-Stored-Bee-API.patch b/patches/api/0045-Stored-Bee-API.patch similarity index 100% rename from patches/dropped-api/0047-Stored-Bee-API.patch rename to patches/api/0045-Stored-Bee-API.patch diff --git a/patches/api/0045-Explorer-Map-API.patch b/patches/api/0046-Explorer-Map-API.patch similarity index 100% rename from patches/api/0045-Explorer-Map-API.patch rename to patches/api/0046-Explorer-Map-API.patch diff --git a/patches/api/0046-Stonecutter-damage.patch b/patches/api/0047-Stonecutter-damage.patch similarity index 100% rename from patches/api/0046-Stonecutter-damage.patch rename to patches/api/0047-Stonecutter-damage.patch diff --git a/patches/unapplied-server/0293-Stored-Bee-API.patch b/patches/server/0278-Stored-Bee-API.patch similarity index 74% rename from patches/unapplied-server/0293-Stored-Bee-API.patch rename to patches/server/0278-Stored-Bee-API.patch index fcce78557..8c167d448 100644 --- a/patches/unapplied-server/0293-Stored-Bee-API.patch +++ b/patches/server/0278-Stored-Bee-API.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Stored Bee API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index ba610e05806ad020d439d59d30b820bc9cd3fbff..6afaab31539667667481f7e9bfc0c6846abe661a 100644 +index d8efb00c325448d566c59418fe22268c6eb4cfce..f7a6ab35c95ffda73f17843916ddb624ad290b42 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -134,6 +134,22 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -146,11 +146,33 @@ public class BeehiveBlockEntity extends BlockEntity { return list; } + // Purpur start -+ public List releaseBee(BlockState iblockdata, BeeData data, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { ++ public List releaseBee(BlockState iblockdata, BeehiveBlockEntity.BeeData data, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, boolean force) { + List list = Lists.newArrayList(); + -+ BeehiveBlockEntity.releaseBee(this.level, this.worldPosition, iblockdata, data, list, tileentitybeehive_releasestatus, this.savedFlowerPos, force); ++ BeehiveBlockEntity.releaseOccupant(this.level, this.worldPosition, iblockdata, data.occupant, list, tileentitybeehive_releasestatus, this.savedFlowerPos, force); + + if (!list.isEmpty()) { + stored.remove(data); @@ -28,10 +28,8 @@ index ba610e05806ad020d439d59d30b820bc9cd3fbff..6afaab31539667667481f7e9bfc0c684 + } + // Purpur end + - public void addOccupant(Entity entity, boolean hasNectar) { - this.addOccupantWithPresetTicks(entity, hasNectar, 0); - } -@@ -143,6 +159,12 @@ public class BeehiveBlockEntity extends BlockEntity { + @VisibleForDebug + public int getOccupantCount() { return this.stored.size(); } @@ -44,20 +42,20 @@ index ba610e05806ad020d439d59d30b820bc9cd3fbff..6afaab31539667667481f7e9bfc0c684 // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -435,9 +457,9 @@ public class BeehiveBlockEntity extends BlockEntity { - private BeeReleaseStatus() {} +@@ -471,9 +493,9 @@ public class BeehiveBlockEntity extends BlockEntity { + } } - private static class BeeData { + public static class BeeData { // Purpur - change from private to public -- final CompoundTag entityData; -+ public final CompoundTag entityData; // Purpur - make public - int ticksInHive; - int exitTickCounter; // Paper - Fix bees aging inside hives; separate counter for checking if bee should exit to reduce exit attempts - final int minOccupationTicks; +- private final BeehiveBlockEntity.Occupant occupant; ++ public final BeehiveBlockEntity.Occupant occupant; // Purpur - make public + private int exitTickCounter; // Paper - Fix bees aging inside hives; separate counter for checking if bee should exit to reduce exit attempts + private int ticksInHive; + diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -index 2e51fab98d95c93d2095f7be6dbb5d5474158bfb..32285c8e0f42897793759fba85a1e8658750c843 100644 +index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..3beb26ad2ef0fded49a8da8c5dec64f9508c1995 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java @@ -16,8 +16,15 @@ import org.bukkit.entity.Bee; @@ -75,7 +73,7 @@ index 2e51fab98d95c93d2095f7be6dbb5d5474158bfb..32285c8e0f42897793759fba85a1e865 + // Purpur end } - protected CraftBeehive(CraftBeehive state) { + protected CraftBeehive(CraftBeehive state, Location location) { @@ -75,15 +82,54 @@ public class CraftBeehive extends CraftBlockEntityState impl bees.add((Bee) bee.getBukkitEntity()); } @@ -120,20 +118,20 @@ index 2e51fab98d95c93d2095f7be6dbb5d5474158bfb..32285c8e0f42897793759fba85a1e865 public void addEntity(Bee entity) { Preconditions.checkArgument(entity != null, "Entity must not be null"); -- this.getSnapshot().addOccupant(((CraftBee) entity).getHandle(), false); +- this.getSnapshot().addOccupant(((CraftBee) entity).getHandle()); + int length = this.getSnapshot().getStored().size(); // Purpur -+ getSnapshot().addOccupant(((CraftBee) entity).getHandle(), false); ++ getSnapshot().addOccupant(((CraftBee) entity).getHandle()); + + // Purpur start - check if new bee was added, and if yes, add to stored bees -+ List s = this.getSnapshot().getStored(); -+ if(length < s.size()) { -+ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(s.get(s.size() - 1), this)); ++ List storedBeeData = this.getSnapshot().getStored(); ++ if(length < storedBeeData.size()) { ++ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(storedBeeData.getLast(), this)); + } + // Purpur end } @Override -@@ -95,6 +141,7 @@ public class CraftBeehive extends CraftBlockEntityState impl +@@ -100,6 +146,7 @@ public class CraftBeehive extends CraftBlockEntityState impl @Override public void clearEntities() { getSnapshot().clearBees(); @@ -143,15 +141,16 @@ index 2e51fab98d95c93d2095f7be6dbb5d5474158bfb..32285c8e0f42897793759fba85a1e865 } diff --git a/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java new file mode 100644 -index 0000000000000000000000000000000000000000..8efca1d91188ac4db911a8eb0fa9ea2cc3c48e28 +index 0000000000000000000000000000000000000000..25d718489a1a589d9754b8a02340cec819eec6d8 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java -@@ -0,0 +1,102 @@ +@@ -0,0 +1,103 @@ +package org.purpurmc.purpur.entity; + +import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.text.Component; +import net.minecraft.nbt.Tag; ++import net.minecraft.server.MinecraftServer; +import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +import org.bukkit.block.EntityBlockStorage; +import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; @@ -177,12 +176,12 @@ index 0000000000000000000000000000000000000000..8efca1d91188ac4db911a8eb0fa9ea2c + this.handle = data; + this.blockStorage = blockStorage; + -+ this.customName = handle.entityData.contains("CustomName", Tag.TAG_STRING) -+ ? PaperAdventure.asAdventure(net.minecraft.network.chat.Component.Serializer.fromJson(handle.entityData.getString("CustomName"))) ++ this.customName = handle.occupant.entityData().contains("CustomName") ++ ? PaperAdventure.asAdventure(net.minecraft.network.chat.Component.Serializer.fromJson(handle.occupant.entityData().getUnsafe().getString("CustomName"), MinecraftServer.getDefaultRegistryAccess())) + : null; + -+ if(handle.entityData.contains("BukkitValues", Tag.TAG_COMPOUND)) { -+ this.persistentDataContainer.putAll(handle.entityData.getCompound("BukkitValues")); ++ if(handle.occupant.entityData().getUnsafe().contains("BukkitValues", Tag.TAG_COMPOUND)) { ++ this.persistentDataContainer.putAll(handle.occupant.entityData().getUnsafe().getCompound("BukkitValues")); + } + } + @@ -241,11 +240,11 @@ index 0000000000000000000000000000000000000000..8efca1d91188ac4db911a8eb0fa9ea2c + + @Override + public void update() { -+ handle.entityData.put("BukkitValues", this.persistentDataContainer.toTagCompound()); ++ handle.occupant.entityData().copyTag().put("BukkitValues", this.persistentDataContainer.toTagCompound()); + if(customName == null) { -+ handle.entityData.remove("CustomName"); ++ handle.occupant.entityData().copyTag().remove("CustomName"); + } else { -+ handle.entityData.putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName))); ++ handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), MinecraftServer.getDefaultRegistryAccess())); + } + } +} diff --git a/patches/server/0278-Shears-can-defuse-TNT.patch b/patches/server/0279-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0278-Shears-can-defuse-TNT.patch rename to patches/server/0279-Shears-can-defuse-TNT.patch diff --git a/patches/server/0279-Explorer-Map-API.patch b/patches/server/0280-Explorer-Map-API.patch similarity index 100% rename from patches/server/0279-Explorer-Map-API.patch rename to patches/server/0280-Explorer-Map-API.patch diff --git a/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0283-place-end-crystal-on-any-block.patch b/patches/server/0284-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0283-place-end-crystal-on-any-block.patch rename to patches/server/0284-place-end-crystal-on-any-block.patch diff --git a/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0285-register-minecraft-debug-commands.patch b/patches/server/0286-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0285-register-minecraft-debug-commands.patch rename to patches/server/0286-register-minecraft-debug-commands.patch diff --git a/patches/server/0286-Configurable-villager-search-radius.patch b/patches/server/0287-Configurable-villager-search-radius.patch similarity index 100% rename from patches/server/0286-Configurable-villager-search-radius.patch rename to patches/server/0287-Configurable-villager-search-radius.patch From 24acf827ef05d10a116e87048a07f0cee8e87c84 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 01:09:38 -0700 Subject: [PATCH 114/148] change task used to get purpur paperclip jar in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f7225234..10bd274f5 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Use the command `./gradlew build` to build the API and server. Compiled JARs will be placed under `Purpur-API/build/libs` and `Purpur-Server/build/libs`. **These JARs are not used to start a server.** -To compile a server-ready purpurclip jar, run `./gradlew createReobfPaperclipJar`. +To compile a server-ready purpurclip jar, run `./gradlew createMojmapBundlerJar`. To install the `purpur-api` and `purpur` dependencies to your local Maven repo, run `./gradlew publishToMavenLocal`. The compiled purpurclip jar will be in `build/libs/` not `Purpur-Server/build/libs`. Special Thanks To: From 633a2e73581c464b24e419d2dec830f09ca04e8f Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 01:22:13 -0700 Subject: [PATCH 115/148] remove LivingEntity#safeFallDistance API --- ...g-threshold.patch => 0011-Lagging-threshold.patch} | 0 ...ch => 0012-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 .../{0014-Anvil-API.patch => 0013-Anvil-API.patch} | 0 ...patch => 0014-ItemStack-convenience-methods.patch} | 0 ...tch => 0015-LivingEntity-broadcastItemBreak.patch} | 11 ++++++----- ...iences.patch => 0016-ChatColor-conveniences.patch} | 0 ...nities.patch => 0017-Item-entity-immunities.patch} | 0 ...redicate-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...Rabid-Wolf-API.patch => 0019-Rabid-Wolf-API.patch} | 0 ...Event.patch => 0020-PlayerBookTooLargeEvent.patch} | 0 ...Full-netherite-armor-grants-fire-resistance.patch} | 0 ...tch => 0022-Add-EntityTeleportHinderedEvent.patch} | 0 ...d-enchantment-target-for-bows-and-crossbows.patch} | 0 ...ch => 0024-API-for-any-mob-to-burn-daylight.patch} | 4 ++-- ... 0025-Add-back-player-spawned-endermite-API.patch} | 0 ...patch => 0026-Fix-default-permission-system.patch} | 0 ...028-Summoner-API.patch => 0027-Summoner-API.patch} | 0 ...tch => 0028-Clean-up-version-command-output.patch} | 0 ...PI.patch => 0029-Extended-OfflinePlayer-API.patch} | 0 ...-Added-the-ability-to-add-combustible-items.patch} | 0 ...Grindstone-API.patch => 0031-Grindstone-API.patch} | 0 ...=> 0032-Shears-can-have-looting-enchantment.patch} | 0 ...rs.patch => 0033-Lobotomize-stuck-villagers.patch} | 0 ...-api.patch => 0034-Add-local-difficulty-api.patch} | 0 ...Remove-Timings.patch => 0035-Remove-Timings.patch} | 0 ...{0037-Add-Bee-API.patch => 0036-Add-Bee-API.patch} | 0 ...g-Marker-API.patch => 0037-Debug-Marker-API.patch} | 0 ...reen-API.patch => 0038-Add-death-screen-API.patch} | 0 ...040-Language-API.patch => 0039-Language-API.patch} | 0 ... 0040-Add-log-suppression-for-LibraryLoader.patch} | 0 ...mmunity-API.patch => 0041-Fire-Immunity-API.patch} | 0 ...am-event.patch => 0042-Added-goat-ram-event.patch} | 0 ...deEvents.patch => 0043-Add-PreExplodeEvents.patch} | 0 ...Stored-Bee-API.patch => 0044-Stored-Bee-API.patch} | 0 ...orer-Map-API.patch => 0045-Explorer-Map-API.patch} | 0 ...ter-damage.patch => 0046-Stonecutter-damage.patch} | 0 .../0011-LivingEntity-safeFallDistance.patch | 0 .../0013-LivingEntity-safeFallDistance.patch | 0 ...g-threshold.patch => 0013-Lagging-threshold.patch} | 0 ...ch => 0014-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 .../{0016-Anvil-API.patch => 0015-Anvil-API.patch} | 0 ...atch => 0016-Alternative-Keepalive-Handling.patch} | 0 ....patch => 0017-Add-turtle-egg-block-options.patch} | 0 ...-Logger-settings-suppressing-pointless-logs.patch} | 0 ....patch => 0019-Disable-outdated-build-check.patch} | 0 ...I-settings.patch => 0020-Giants-AI-settings.patch} | 0 ....patch => 0021-Zombie-horse-naturally-spawn.patch} | 0 ...tch => 0022-Charged-creeper-naturally-spawn.patch} | 0 ...023-Rabbit-naturally-spawn-toast-and-killer.patch} | 0 ...ted-server-showing-in-ping-before-server-fu.patch} | 0 ...x-type.patch => 0025-Tulips-change-fox-type.patch} | 0 ...r-Bears.patch => 0026-Breedable-Polar-Bears.patch} | 0 ...aliate.patch => 0027-Chickens-can-retaliate.patch} | 0 ...28-Add-option-to-set-armorstand-step-height.patch} | 0 ...-options.patch => 0029-Cat-spawning-options.patch} | 0 ...-mushrooms.patch => 0030-Cows-eat-mushrooms.patch} | 0 ...31-Fix-cow-rotation-when-shearing-mooshroom.patch} | 0 ...le-back.patch => 0032-Pigs-give-saddle-back.patch} | 0 ...h => 0033-Snowman-drop-and-put-back-pumpkin.patch} | 0 ...h => 0034-Ender-dragon-always-drop-full-exp.patch} | 0 ...oil-to-moisten-from-water-directly-under-it.patch} | 0 ...=> 0036-Minecart-settings-and-WASD-controls.patch} | 0 ...037-Disable-loot-drops-on-death-by-cramming.patch} | 0 ... 0038-Option-to-toggle-milk-curing-bad-omen.patch} | 0 ...teway-should-check-if-entity-can-use-portal.patch} | 0 ...=> 0040-Skip-events-if-there-s-no-listeners.patch} | 0 ...patch => 0041-Add-permission-for-F3-N-debug.patch} | 0 ...chup.patch => 0042-Configurable-TPS-Catchup.patch} | 0 ...n-to-allow-loyalty-on-tridents-to-work-in-t.patch} | 0 ...-Add-enderman-and-creeper-griefing-controls.patch} | 0 ...tch => 0045-Villagers-follow-emerald-blocks.patch} | 0 ...gers.patch => 0046-Allow-leashing-villagers.patch} | 0 ...ds.patch => 0047-Implement-infinite-liquids.patch} | 0 ...h => 0048-Make-lava-flow-speed-configurable.patch} | 0 ...> 0049-Add-player-death-exp-control-options.patch} | 0 ...-Configurable-void-damage-height-and-damage.patch} | 0 ...y.patch => 0051-Add-canSaveToDisk-to-Entity.patch} | 0 ... 0052-Dispenser-curse-of-binding-protection.patch} | 0 ...d-option-for-boats-to-eject-players-on-land.patch} | 0 ...-Mending-mends-most-damages-equipment-first.patch} | 2 +- ...tch => 0055-Add-5-second-tps-average-in-tps.patch} | 0 ...ngs.patch => 0056-Implement-elytra-settings.patch} | 2 +- ...nities.patch => 0057-Item-entity-immunities.patch} | 0 ...ping-command.patch => 0058-Add-ping-command.patch} | 0 ...demo-command.patch => 0059-Add-demo-command.patch} | 0 ...s-command.patch => 0060-Add-credits-command.patch} | 0 ...s.patch => 0061-Configurable-jockey-options.patch} | 0 ...attracted-to-crystals-and-crystals-shoot-ph.patch} | 0 ....patch => 0063-Add-phantom-spawning-options.patch} | 0 ...tch => 0064-Implement-bed-explosion-options.patch} | 0 ...-Implement-respawn-anchor-explosion-options.patch} | 0 ...=> 0066-Add-allow-water-in-end-world-option.patch} | 0 ...tity-lifespan.patch => 0067-Entity-lifespan.patch} | 0 ...n-to-teleport-to-spawn-if-outside-world-bor.patch} | 0 ...R-immunity.patch => 0069-Squid-EAR-immunity.patch} | 0 ...-light.patch => 0070-Phantoms-burn-in-light.patch} | 0 ...atch => 0071-Configurable-villager-breeding.patch} | 0 ...patch => 0072-Redstone-deactivates-spawners.patch} | 0 ...tory.patch => 0073-Totems-work-in-inventory.patch} | 0 ... => 0074-Add-vindicator-johnny-spawn-chance.patch} | 0 ...atch => 0075-Dispensers-place-anvils-option.patch} | 0 ...vil-colors.patch => 0076-Allow-anvil-colors.patch} | 0 ...ption-to-disable-dolphin-treasure-searching.patch} | 0 ...-height.patch => 0078-Short-enderman-height.patch} | 0 ...> 0079-Stop-squids-floating-on-top-of-water.patch} | 0 ...080-Crying-obsidian-valid-for-portal-frames.patch} | 0 ...0081-Entities-can-use-portals-configuration.patch} | 0 ...tch => 0082-LivingEntity-broadcastItemBreak.patch} | 11 ++++++----- ...0083-Customizable-wither-health-and-healing.patch} | 0 ...llow-toggling-special-MobSpawners-per-world.patch} | 0 ...setting.patch => 0085-Raid-cooldown-setting.patch} | 0 ...awn-rate-config-options-per-projectile-type.patch} | 0 ...n-to-disable-zombie-aggressiveness-towards-.patch} | 0 ...redicate-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...ids-Oh-my.patch => 0089-Flying-squids-Oh-my.patch} | 0 ...ettings.patch => 0090-Infinity-bow-settings.patch} | 0 ...e.patch => 0091-Configurable-daylight-cycle.patch} | 0 ...-infinite-and-mending-enchantments-together.patch} | 0 ...h => 0093-Furnace-uses-lava-from-underneath.patch} | 0 ...094-Arrows-should-not-reset-despawn-counter.patch} | 0 ...ity-to-re-add-farmland-mechanics-from-Alpha.patch} | 0 ...-Add-adjustable-breeding-cooldown-to-config.patch} | 0 ...097-Make-entity-breeding-times-configurable.patch} | 0 ...play-names-from-item-forms-of-entities-to-e.patch} | 0 ...visible-when-using-a-Name-Tag-on-an-Armor-S.patch} | 0 ...g-for-allowing-Endermen-to-despawn-even-whi.patch} | 0 ...ch => 0101-Add-configurable-snowball-damage.patch} | 0 ...h => 0102-Changeable-Mob-Left-Handed-Chance.patch} | 0 ...g.patch => 0103-Add-boat-fall-damage-config.patch} | 0 ...atch => 0104-Snow-Golem-rate-of-fire-config.patch} | 0 ...0105-EMC-Configurable-disable-give-dropping.patch} | 0 ...on-for-Villager-Clerics-to-farm-Nether-Wart.patch} | 0 ...r-Zombified-Piglin-death-always-counting-as.patch} | 0 ...nfigurable-chance-for-wolves-to-spawn-rabid.patch} | 0 ...h => 0109-Configurable-default-collar-color.patch} | 0 ...swoop.patch => 0110-Phantom-flames-on-swoop.patch} | 0 ...r-chests-to-open-even-with-a-solid-block-on.patch} | 0 ...ement-TPSBar.patch => 0112-Implement-TPSBar.patch} | 0 ...ack.patch => 0113-Striders-give-saddle-back.patch} | 0 ...Event.patch => 0114-PlayerBookTooLargeEvent.patch} | 0 ...Full-netherite-armor-grants-fire-resistance.patch} | 0 ...d-mobGriefing-bypass-to-everything-affected.patch} | 0 ...fig-to-allow-Note-Block-sounds-when-blocked.patch} | 0 ...tch => 0118-Add-EntityTeleportHinderedEvent.patch} | 0 ...es.patch => 0119-Farmland-trampling-changes.patch} | 0 ...h => 0120-Movement-options-for-armor-stands.patch} | 0 ...-portals.patch => 0121-Fix-stuck-in-portals.patch} | 0 ... 0122-Toggle-for-water-sensitive-mob-damage.patch} | 0 ...h => 0123-Config-to-always-tame-in-Creative.patch} | 0 ...patch => 0124-End-crystal-explosion-options.patch} | 0 ...or-if-Wither-Ender-Dragon-can-ride-vehicles.patch} | 0 ...issors.patch => 0126-Dont-run-with-scissors.patch} | 0 ...8-One-Punch-Man.patch => 0127-One-Punch-Man.patch} | 0 ...ble-Ender-Pearl-cooldown-damage-and-Endermi.patch} | 0 ...-Config-to-ignore-nearby-mobs-when-sleeping.patch} | 0 ... 0130-Add-back-player-spawned-endermite-API.patch} | 0 ...-Enderman-aggressiveness-towards-Endermites.patch} | 0 ...-ignore-Dragon-Head-wearers-and-stare-aggro.patch} | 0 ...ids-config.patch => 0133-Tick-fluids-config.patch} | 0 ...ch => 0134-Config-to-disable-Llama-caravans.patch} | 0 ...35-Config-to-make-Creepers-explode-on-death.patch} | 0 ...-Configurable-ravager-griefable-blocks-list.patch} | 0 ...tch => 0137-Sneak-to-bulk-process-composter.patch} | 0 ...ght.patch => 0138-Config-for-skipping-night.patch} | 0 ...tch => 0139-Add-config-for-villager-trading.patch} | 0 ...s.patch => 0140-Allow-infinity-on-crossbows.patch} | 0 ...ng-Settings.patch => 0141-Drowning-Settings.patch} | 0 ...> 0142-Break-individual-slabs-when-sneaking.patch} | 0 ...-Config-to-disable-hostile-mob-spawn-on-ice.patch} | 0 ...44-Config-to-show-Armor-Stand-arms-on-spawn.patch} | 0 ... 0145-Option-to-make-doors-require-redstone.patch} | 0 ...=> 0146-Config-to-allow-for-unsafe-enchants.patch} | 2 +- ...atch => 0147-Configurable-sponge-absorption.patch} | 0 ...nfig.patch => 0148-Projectile-offset-config.patch} | 0 ...Config-for-powered-rail-activation-distance.patch} | 0 ....patch => 0150-Piglin-portal-spawn-modifier.patch} | 0 ...=> 0151-Config-to-change-max-number-of-bees.patch} | 0 ... => 0152-Config-for-wither-explosion-radius.patch} | 0 ...ns.patch => 0153-Gamemode-extra-permissions.patch} | 0 ...atch => 0154-Configurable-piston-push-limit.patch} | 0 ...tch => 0155-Configurable-broadcast-settings.patch} | 0 ...ss.patch => 0156-Configurable-mob-blindness.patch} | 0 ...57-Hide-hidden-players-from-entity-selector.patch} | 0 ...r-health-to-impact-Creeper-explosion-radius.patch} | 0 ...patch => 0159-Iron-golem-calm-anger-options.patch} | 0 ...ble-parrots.patch => 0160-Breedable-parrots.patch} | 0 ...61-Configurable-powered-rail-boost-modifier.patch} | 0 ...fig-change-multiplier-critical-damage-value.patch} | 0 ...63-Option-to-disable-dragon-egg-teleporting.patch} | 0 ...0164-Config-for-unverified-username-message.patch} | 0 ...165-Make-anvil-cumulative-cost-configurable.patch} | 0 ... 0166-Bee-can-work-when-raining-or-at-night.patch} | 0 ...ch => 0167-API-for-any-mob-to-burn-daylight.patch} | 4 ++-- ...rld.patch => 0168-Config-MobEffect-by-world.patch} | 0 ...> 0169-Beacon-Activation-Range-Configurable.patch} | 0 ... 0170-Make-lightning-rod-range-configurable.patch} | 0 ...y-burp-after-eating-food-fills-hunger-bar-c.patch} | 0 ...Allow-player-join-full-server-by-permission.patch} | 0 ....patch => 0173-Add-portal-permission-bypass.patch} | 0 ...h => 0174-Shulker-spawn-from-bullet-options.patch} | 0 ...> 0175-Eating-glow-berries-adds-glow-effect.patch} | 0 ... => 0176-Option-to-make-drowned-break-doors.patch} | 0 ... 0177-Configurable-hunger-starvation-damage.patch} | 0 ...Catcher.patch => 0178-Enhance-SysoutCatcher.patch} | 0 ...me-command.patch => 0179-Add-uptime-command.patch} | 0 ...tions.patch => 0180-Tool-actionable-options.patch} | 0 ...h => 0181-Store-placer-on-Block-when-placed.patch} | 2 +- ...183-Summoner-API.patch => 0182-Summoner-API.patch} | 0 ...83-Customizable-sleeping-actionbar-messages.patch} | 0 ...-disable-shulker-box-items-from-dropping-co.patch} | 0 ...delay.patch => 0185-Big-dripleaf-tilt-delay.patch} | 0 ...atch => 0186-Player-ridable-in-water-option.patch} | 0 ...-disable-Enderman-teleport-on-projectile-hi.patch} | 0 ...s-command.patch => 0188-Add-compass-command.patch} | 0 ...age.patch => 0189-Toggle-for-kinetic-damage.patch} | 0 ...0190-Add-Option-for-disable-observer-clocks.patch} | 0 ...-Customizeable-Zombie-Villager-curing-times.patch} | 0 ...-Option-for-sponges-to-work-on-lava-and-mud.patch} | 0 ...tch => 0193-Toggle-for-Wither-s-spawn-sound.patch} | 0 ...4-Cactus-breaks-from-solid-neighbors-config.patch} | 0 ...ig-to-remove-curse-of-binding-with-weakness.patch} | 0 ...atch => 0196-Conduit-behavior-configuration.patch} | 0 ...chances.patch => 0197-Cauldron-fill-chances.patch} | 0 ...Config-to-allow-mobs-to-pathfind-over-rails.patch} | 0 ...patch => 0199-Shulker-change-color-with-dye.patch} | 0 ...PI.patch => 0200-Extended-OfflinePlayer-API.patch} | 0 ...-Added-the-ability-to-add-combustible-items.patch} | 0 ...or-if-rain-and-thunder-should-stop-on-sleep.patch} | 0 ...r-azalea-blocks-to-grow-into-trees-naturall.patch} | 0 ...04-Shift-right-click-to-use-exp-for-mending.patch} | 0 ...hins-naturally-aggressive-to-players-chance.patch} | 0 ...Cows-naturally-aggressive-to-players-chance.patch} | 0 ...ption-for-beds-to-explode-on-villager-sleep.patch} | 0 ...=> 0208-Halloween-options-and-optimizations.patch} | 0 ...rwarding.patch => 0209-UPnP-Port-Forwarding.patch} | 0 ...=> 0210-Campfire-option-for-lit-when-placed.patch} | 0 ...ns-to-extinguish-fire-blocks-with-snowballs.patch} | 0 ...Add-option-to-disable-zombie-villagers-cure.patch} | 0 ...-weeping-and-twisting-vines-configurable-ma.patch} | 0 ...e.patch => 0214-Mobs-always-drop-experience.patch} | 0 ...Grindstone-API.patch => 0215-Grindstone-API.patch} | 0 ...y-for-hoe-to-replant-crops-and-nether-warts.patch} | 0 ...> 0217-Turtle-eggs-random-tick-crack-chance.patch} | 0 ...t.patch => 0218-Mob-head-visibility-percent.patch} | 0 ...Configurable-valid-characters-for-usernames.patch} | 0 ...=> 0220-Shears-can-have-looting-enchantment.patch} | 0 ...=> 0221-Stop-bees-from-dying-after-stinging.patch} | 0 ...> 0222-Configurable-farmland-trample-height.patch} | 0 ...> 0223-Configurable-player-pickup-exp-delay.patch} | 0 ...id-trading.patch => 0224-Allow-void-trading.patch} | 0 ...ize.patch => 0225-Configurable-phantom-size.patch} | 0 ...r-second.patch => 0226-Max-joins-per-second.patch} | 0 ...0227-Configurable-minimum-demand-for-trades.patch} | 0 ...rs.patch => 0228-Lobotomize-stuck-villagers.patch} | 0 ...0229-Option-for-villager-display-trade-item.patch} | 0 ...-Fix-spawner-not-spawning-water-animals-cor.patch} | 0 ...231-Config-for-mob-last-hurt-by-player-time.patch} | 2 +- ...s.patch => 0232-Anvil-repair-damage-options.patch} | 0 ...-disable-turtle-egg-trampling-with-feather-.patch} | 0 ... 0234-Add-toggle-for-enchant-level-clamping.patch} | 2 +- ...> 0235-Skip-junit-tests-for-purpur-commands.patch} | 0 ...-configurable-search-radius-for-villagers-t.patch} | 0 ...ter-damage.patch => 0237-Stonecutter-damage.patch} | 0 ...nfigurable-damage-settings-for-magma-blocks.patch} | 0 ...tch => 0239-Add-config-for-snow-on-blue-ice.patch} | 0 ...es.patch => 0240-Skeletons-eat-wither-roses.patch} | 0 ...ch => 0241-Enchantment-Table-Persists-Lapis.patch} | 0 ...Spark-Profiler.patch => 0242-Spark-Profiler.patch} | 0 ...ption-to-disable-kick-for-out-of-order-chat.patch} | 0 ...-Config-for-sculk-shrieker-can_summon-state.patch} | 0 ...e.patch => 0245-Config-to-not-let-coral-die.patch} | 0 ...-api.patch => 0246-Add-local-difficulty-api.patch} | 0 ...tch => 0247-Add-toggle-for-RNG-manipulation.patch} | 0 ...Remove-Timings.patch => 0248-Remove-Timings.patch} | 0 ...ofiler.patch => 0249-Remove-Mojang-Profiler.patch} | 0 ...re-logger-output-for-invalid-movement-kicks.patch} | 0 ...{0252-Add-Bee-API.patch => 0251-Add-Bee-API.patch} | 0 ...g-Marker-API.patch => 0252-Debug-Marker-API.patch} | 0 ...-spawning-option-to-ignore-creative-players.patch} | 0 ...ch => 0254-Add-skeleton-bow-accuracy-option.patch} | 0 ...reen-API.patch => 0255-Add-death-screen-API.patch} | 0 ...h => 0256-Implement-ram-and-rambar-commands.patch} | 0 ...=> 0257-Configurable-block-blast-resistance.patch} | 0 ...58-Configurable-block-fall-damage-modifiers.patch} | 0 ...260-Language-API.patch => 0259-Language-API.patch} | 0 ...patch => 0260-Milk-Keeps-Beneficial-Effects.patch} | 0 ...-Fix-mobs-not-looking-up-and-down-when-stra.patch} | 0 ... 0262-Add-log-suppression-for-LibraryLoader.patch} | 0 ...n-to-allow-creeper-to-encircle-target-when-.patch} | 0 ...mmunity-API.patch => 0264-Fire-Immunity-API.patch} | 0 ...n-to-teleport-to-spawn-on-nether-ceiling-da.patch} | 0 ...ram-event.patch => 0266-Added-got-ram-event.patch} | 0 ...patch => 0267-Log-skipped-entity-s-position.patch} | 0 ...Cramming.patch => 0268-End-Crystal-Cramming.patch} | 0 ...-allow-beacon-effects-when-covered-by-tinte.patch} | 0 ...d-attribute-clamping-and-armor-limit-config.patch} | 0 ...271-Config-to-remove-explosion-radius-clamp.patch} | 0 ...onemealable-sugarcane-cactus-and-netherwart.patch} | 0 ...deEvents.patch => 0273-Add-PreExplodeEvents.patch} | 0 ...h => 0274-Improve-output-of-plugins-command.patch} | 0 ...iplier.patch => 0275-Add-mending-multiplier.patch} | 0 ...at-Again.patch => 0276-Make-GUI-Great-Again.patch} | 0 ...Stored-Bee-API.patch => 0277-Stored-Bee-API.patch} | 0 ...use-TNT.patch => 0278-Shears-can-defuse-TNT.patch} | 0 ...orer-Map-API.patch => 0279-Explorer-Map-API.patch} | 0 ...=> 0280-Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...tion-for-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...n-for-always-showing-item-in-player-death-m.patch} | 0 ...atch => 0283-place-end-crystal-on-any-block.patch} | 0 ...n-to-disable-the-copper-oxidation-proximity.patch} | 0 ...h => 0285-register-minecraft-debug-commands.patch} | 0 ...=> 0286-Configurable-villager-search-radius.patch} | 0 312 files changed, 22 insertions(+), 20 deletions(-) rename patches/api/{0012-Lagging-threshold.patch => 0011-Lagging-threshold.patch} (100%) rename patches/api/{0013-PlayerSetSpawnerTypeWithEggEvent.patch => 0012-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/api/{0014-Anvil-API.patch => 0013-Anvil-API.patch} (100%) rename patches/api/{0015-ItemStack-convenience-methods.patch => 0014-ItemStack-convenience-methods.patch} (100%) rename patches/api/{0016-LivingEntity-broadcastItemBreak.patch => 0015-LivingEntity-broadcastItemBreak.patch} (73%) rename patches/api/{0017-ChatColor-conveniences.patch => 0016-ChatColor-conveniences.patch} (100%) rename patches/api/{0018-Item-entity-immunities.patch => 0017-Item-entity-immunities.patch} (100%) rename patches/api/{0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0020-Rabid-Wolf-API.patch => 0019-Rabid-Wolf-API.patch} (100%) rename patches/api/{0021-PlayerBookTooLargeEvent.patch => 0020-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0022-Full-netherite-armor-grants-fire-resistance.patch => 0021-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0023-Add-EntityTeleportHinderedEvent.patch => 0022-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0024-Add-enchantment-target-for-bows-and-crossbows.patch => 0023-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0025-API-for-any-mob-to-burn-daylight.patch => 0024-API-for-any-mob-to-burn-daylight.patch} (91%) rename patches/api/{0026-Add-back-player-spawned-endermite-API.patch => 0025-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/api/{0027-Fix-default-permission-system.patch => 0026-Fix-default-permission-system.patch} (100%) rename patches/api/{0028-Summoner-API.patch => 0027-Summoner-API.patch} (100%) rename patches/api/{0029-Clean-up-version-command-output.patch => 0028-Clean-up-version-command-output.patch} (100%) rename patches/api/{0030-Extended-OfflinePlayer-API.patch => 0029-Extended-OfflinePlayer-API.patch} (100%) rename patches/api/{0031-Added-the-ability-to-add-combustible-items.patch => 0030-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/api/{0032-Grindstone-API.patch => 0031-Grindstone-API.patch} (100%) rename patches/api/{0033-Shears-can-have-looting-enchantment.patch => 0032-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0034-Lobotomize-stuck-villagers.patch => 0033-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0035-Add-local-difficulty-api.patch => 0034-Add-local-difficulty-api.patch} (100%) rename patches/api/{0036-Remove-Timings.patch => 0035-Remove-Timings.patch} (100%) rename patches/api/{0037-Add-Bee-API.patch => 0036-Add-Bee-API.patch} (100%) rename patches/api/{0038-Debug-Marker-API.patch => 0037-Debug-Marker-API.patch} (100%) rename patches/api/{0039-Add-death-screen-API.patch => 0038-Add-death-screen-API.patch} (100%) rename patches/api/{0040-Language-API.patch => 0039-Language-API.patch} (100%) rename patches/api/{0041-Add-log-suppression-for-LibraryLoader.patch => 0040-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/api/{0042-Fire-Immunity-API.patch => 0041-Fire-Immunity-API.patch} (100%) rename patches/api/{0043-Added-goat-ram-event.patch => 0042-Added-goat-ram-event.patch} (100%) rename patches/api/{0044-Add-PreExplodeEvents.patch => 0043-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0045-Stored-Bee-API.patch => 0044-Stored-Bee-API.patch} (100%) rename patches/api/{0046-Explorer-Map-API.patch => 0045-Explorer-Map-API.patch} (100%) rename patches/api/{0047-Stonecutter-damage.patch => 0046-Stonecutter-damage.patch} (100%) rename patches/{api => dropped-api}/0011-LivingEntity-safeFallDistance.patch (100%) rename patches/{server => dropped-server}/0013-LivingEntity-safeFallDistance.patch (100%) rename patches/server/{0014-Lagging-threshold.patch => 0013-Lagging-threshold.patch} (100%) rename patches/server/{0015-PlayerSetSpawnerTypeWithEggEvent.patch => 0014-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/server/{0016-Anvil-API.patch => 0015-Anvil-API.patch} (100%) rename patches/server/{0017-Alternative-Keepalive-Handling.patch => 0016-Alternative-Keepalive-Handling.patch} (100%) rename patches/server/{0018-Add-turtle-egg-block-options.patch => 0017-Add-turtle-egg-block-options.patch} (100%) rename patches/server/{0019-Logger-settings-suppressing-pointless-logs.patch => 0018-Logger-settings-suppressing-pointless-logs.patch} (100%) rename patches/server/{0020-Disable-outdated-build-check.patch => 0019-Disable-outdated-build-check.patch} (100%) rename patches/server/{0021-Giants-AI-settings.patch => 0020-Giants-AI-settings.patch} (100%) rename patches/server/{0022-Zombie-horse-naturally-spawn.patch => 0021-Zombie-horse-naturally-spawn.patch} (100%) rename patches/server/{0023-Charged-creeper-naturally-spawn.patch => 0022-Charged-creeper-naturally-spawn.patch} (100%) rename patches/server/{0024-Rabbit-naturally-spawn-toast-and-killer.patch => 0023-Rabbit-naturally-spawn-toast-and-killer.patch} (100%) rename patches/server/{0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0026-Tulips-change-fox-type.patch => 0025-Tulips-change-fox-type.patch} (100%) rename patches/server/{0027-Breedable-Polar-Bears.patch => 0026-Breedable-Polar-Bears.patch} (100%) rename patches/server/{0028-Chickens-can-retaliate.patch => 0027-Chickens-can-retaliate.patch} (100%) rename patches/server/{0029-Add-option-to-set-armorstand-step-height.patch => 0028-Add-option-to-set-armorstand-step-height.patch} (100%) rename patches/server/{0030-Cat-spawning-options.patch => 0029-Cat-spawning-options.patch} (100%) rename patches/server/{0031-Cows-eat-mushrooms.patch => 0030-Cows-eat-mushrooms.patch} (100%) rename patches/server/{0032-Fix-cow-rotation-when-shearing-mooshroom.patch => 0031-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0033-Pigs-give-saddle-back.patch => 0032-Pigs-give-saddle-back.patch} (100%) rename patches/server/{0034-Snowman-drop-and-put-back-pumpkin.patch => 0033-Snowman-drop-and-put-back-pumpkin.patch} (100%) rename patches/server/{0035-Ender-dragon-always-drop-full-exp.patch => 0034-Ender-dragon-always-drop-full-exp.patch} (100%) rename patches/server/{0036-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0035-Allow-soil-to-moisten-from-water-directly-under-it.patch} (100%) rename patches/server/{0037-Minecart-settings-and-WASD-controls.patch => 0036-Minecart-settings-and-WASD-controls.patch} (100%) rename patches/server/{0038-Disable-loot-drops-on-death-by-cramming.patch => 0037-Disable-loot-drops-on-death-by-cramming.patch} (100%) rename patches/server/{0039-Option-to-toggle-milk-curing-bad-omen.patch => 0038-Option-to-toggle-milk-curing-bad-omen.patch} (100%) rename patches/server/{0040-End-gateway-should-check-if-entity-can-use-portal.patch => 0039-End-gateway-should-check-if-entity-can-use-portal.patch} (100%) rename patches/server/{0041-Skip-events-if-there-s-no-listeners.patch => 0040-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0042-Add-permission-for-F3-N-debug.patch => 0041-Add-permission-for-F3-N-debug.patch} (100%) rename patches/server/{0043-Configurable-TPS-Catchup.patch => 0042-Configurable-TPS-Catchup.patch} (100%) rename patches/server/{0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (100%) rename patches/server/{0045-Add-enderman-and-creeper-griefing-controls.patch => 0044-Add-enderman-and-creeper-griefing-controls.patch} (100%) rename patches/server/{0046-Villagers-follow-emerald-blocks.patch => 0045-Villagers-follow-emerald-blocks.patch} (100%) rename patches/server/{0047-Allow-leashing-villagers.patch => 0046-Allow-leashing-villagers.patch} (100%) rename patches/server/{0048-Implement-infinite-liquids.patch => 0047-Implement-infinite-liquids.patch} (100%) rename patches/server/{0049-Make-lava-flow-speed-configurable.patch => 0048-Make-lava-flow-speed-configurable.patch} (100%) rename patches/server/{0050-Add-player-death-exp-control-options.patch => 0049-Add-player-death-exp-control-options.patch} (100%) rename patches/server/{0051-Configurable-void-damage-height-and-damage.patch => 0050-Configurable-void-damage-height-and-damage.patch} (100%) rename patches/server/{0052-Add-canSaveToDisk-to-Entity.patch => 0051-Add-canSaveToDisk-to-Entity.patch} (100%) rename patches/server/{0053-Dispenser-curse-of-binding-protection.patch => 0052-Dispenser-curse-of-binding-protection.patch} (100%) rename patches/server/{0054-Add-option-for-boats-to-eject-players-on-land.patch => 0053-Add-option-for-boats-to-eject-players-on-land.patch} (100%) rename patches/server/{0055-Mending-mends-most-damages-equipment-first.patch => 0054-Mending-mends-most-damages-equipment-first.patch} (98%) rename patches/server/{0056-Add-5-second-tps-average-in-tps.patch => 0055-Add-5-second-tps-average-in-tps.patch} (100%) rename patches/server/{0057-Implement-elytra-settings.patch => 0056-Implement-elytra-settings.patch} (98%) rename patches/server/{0058-Item-entity-immunities.patch => 0057-Item-entity-immunities.patch} (100%) rename patches/server/{0059-Add-ping-command.patch => 0058-Add-ping-command.patch} (100%) rename patches/server/{0060-Add-demo-command.patch => 0059-Add-demo-command.patch} (100%) rename patches/server/{0061-Add-credits-command.patch => 0060-Add-credits-command.patch} (100%) rename patches/server/{0062-Configurable-jockey-options.patch => 0061-Configurable-jockey-options.patch} (100%) rename patches/server/{0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename patches/server/{0064-Add-phantom-spawning-options.patch => 0063-Add-phantom-spawning-options.patch} (100%) rename patches/server/{0065-Implement-bed-explosion-options.patch => 0064-Implement-bed-explosion-options.patch} (100%) rename patches/server/{0066-Implement-respawn-anchor-explosion-options.patch => 0065-Implement-respawn-anchor-explosion-options.patch} (100%) rename patches/server/{0067-Add-allow-water-in-end-world-option.patch => 0066-Add-allow-water-in-end-world-option.patch} (100%) rename patches/server/{0068-Entity-lifespan.patch => 0067-Entity-lifespan.patch} (100%) rename patches/server/{0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (100%) rename patches/server/{0070-Squid-EAR-immunity.patch => 0069-Squid-EAR-immunity.patch} (100%) rename patches/server/{0071-Phantoms-burn-in-light.patch => 0070-Phantoms-burn-in-light.patch} (100%) rename patches/server/{0072-Configurable-villager-breeding.patch => 0071-Configurable-villager-breeding.patch} (100%) rename patches/server/{0073-Redstone-deactivates-spawners.patch => 0072-Redstone-deactivates-spawners.patch} (100%) rename patches/server/{0074-Totems-work-in-inventory.patch => 0073-Totems-work-in-inventory.patch} (100%) rename patches/server/{0075-Add-vindicator-johnny-spawn-chance.patch => 0074-Add-vindicator-johnny-spawn-chance.patch} (100%) rename patches/server/{0076-Dispensers-place-anvils-option.patch => 0075-Dispensers-place-anvils-option.patch} (100%) rename patches/server/{0077-Allow-anvil-colors.patch => 0076-Allow-anvil-colors.patch} (100%) rename patches/server/{0078-Add-option-to-disable-dolphin-treasure-searching.patch => 0077-Add-option-to-disable-dolphin-treasure-searching.patch} (100%) rename patches/server/{0079-Short-enderman-height.patch => 0078-Short-enderman-height.patch} (100%) rename patches/server/{0080-Stop-squids-floating-on-top-of-water.patch => 0079-Stop-squids-floating-on-top-of-water.patch} (100%) rename patches/server/{0081-Crying-obsidian-valid-for-portal-frames.patch => 0080-Crying-obsidian-valid-for-portal-frames.patch} (100%) rename patches/server/{0082-Entities-can-use-portals-configuration.patch => 0081-Entities-can-use-portals-configuration.patch} (100%) rename patches/server/{0083-LivingEntity-broadcastItemBreak.patch => 0082-LivingEntity-broadcastItemBreak.patch} (70%) rename patches/server/{0084-Customizable-wither-health-and-healing.patch => 0083-Customizable-wither-health-and-healing.patch} (100%) rename patches/server/{0085-Allow-toggling-special-MobSpawners-per-world.patch => 0084-Allow-toggling-special-MobSpawners-per-world.patch} (100%) rename patches/server/{0086-Raid-cooldown-setting.patch => 0085-Raid-cooldown-setting.patch} (100%) rename patches/server/{0087-Despawn-rate-config-options-per-projectile-type.patch => 0086-Despawn-rate-config-options-per-projectile-type.patch} (100%) rename patches/server/{0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/server/{0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0090-Flying-squids-Oh-my.patch => 0089-Flying-squids-Oh-my.patch} (100%) rename patches/server/{0091-Infinity-bow-settings.patch => 0090-Infinity-bow-settings.patch} (100%) rename patches/server/{0092-Configurable-daylight-cycle.patch => 0091-Configurable-daylight-cycle.patch} (100%) rename patches/server/{0093-Allow-infinite-and-mending-enchantments-together.patch => 0092-Allow-infinite-and-mending-enchantments-together.patch} (100%) rename patches/server/{0094-Furnace-uses-lava-from-underneath.patch => 0093-Furnace-uses-lava-from-underneath.patch} (100%) rename patches/server/{0095-Arrows-should-not-reset-despawn-counter.patch => 0094-Arrows-should-not-reset-despawn-counter.patch} (100%) rename patches/server/{0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (100%) rename patches/server/{0097-Add-adjustable-breeding-cooldown-to-config.patch => 0096-Add-adjustable-breeding-cooldown-to-config.patch} (100%) rename patches/server/{0098-Make-entity-breeding-times-configurable.patch => 0097-Make-entity-breeding-times-configurable.patch} (100%) rename patches/server/{0099-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0098-Apply-display-names-from-item-forms-of-entities-to-e.patch} (100%) rename patches/server/{0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (100%) rename patches/server/{0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (100%) rename patches/server/{0102-Add-configurable-snowball-damage.patch => 0101-Add-configurable-snowball-damage.patch} (100%) rename patches/server/{0103-Changeable-Mob-Left-Handed-Chance.patch => 0102-Changeable-Mob-Left-Handed-Chance.patch} (100%) rename patches/server/{0104-Add-boat-fall-damage-config.patch => 0103-Add-boat-fall-damage-config.patch} (100%) rename patches/server/{0105-Snow-Golem-rate-of-fire-config.patch => 0104-Snow-Golem-rate-of-fire-config.patch} (100%) rename patches/server/{0106-EMC-Configurable-disable-give-dropping.patch => 0105-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (100%) rename patches/server/{0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (100%) rename patches/server/{0109-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0108-Configurable-chance-for-wolves-to-spawn-rabid.patch} (100%) rename patches/server/{0110-Configurable-default-collar-color.patch => 0109-Configurable-default-collar-color.patch} (100%) rename patches/server/{0111-Phantom-flames-on-swoop.patch => 0110-Phantom-flames-on-swoop.patch} (100%) rename patches/server/{0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (100%) rename patches/server/{0113-Implement-TPSBar.patch => 0112-Implement-TPSBar.patch} (100%) rename patches/server/{0114-Striders-give-saddle-back.patch => 0113-Striders-give-saddle-back.patch} (100%) rename patches/server/{0115-PlayerBookTooLargeEvent.patch => 0114-PlayerBookTooLargeEvent.patch} (100%) rename patches/server/{0116-Full-netherite-armor-grants-fire-resistance.patch => 0115-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/server/{0117-Add-mobGriefing-bypass-to-everything-affected.patch => 0116-Add-mobGriefing-bypass-to-everything-affected.patch} (100%) rename patches/server/{0118-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0117-Config-to-allow-Note-Block-sounds-when-blocked.patch} (100%) rename patches/server/{0119-Add-EntityTeleportHinderedEvent.patch => 0118-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/server/{0120-Farmland-trampling-changes.patch => 0119-Farmland-trampling-changes.patch} (100%) rename patches/server/{0121-Movement-options-for-armor-stands.patch => 0120-Movement-options-for-armor-stands.patch} (100%) rename patches/server/{0122-Fix-stuck-in-portals.patch => 0121-Fix-stuck-in-portals.patch} (100%) rename patches/server/{0123-Toggle-for-water-sensitive-mob-damage.patch => 0122-Toggle-for-water-sensitive-mob-damage.patch} (100%) rename patches/server/{0124-Config-to-always-tame-in-Creative.patch => 0123-Config-to-always-tame-in-Creative.patch} (100%) rename patches/server/{0125-End-crystal-explosion-options.patch => 0124-End-crystal-explosion-options.patch} (100%) rename patches/server/{0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (100%) rename patches/server/{0127-Dont-run-with-scissors.patch => 0126-Dont-run-with-scissors.patch} (100%) rename patches/server/{0128-One-Punch-Man.patch => 0127-One-Punch-Man.patch} (100%) rename patches/server/{0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (100%) rename patches/server/{0130-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0129-Config-to-ignore-nearby-mobs-when-sleeping.patch} (100%) rename patches/server/{0131-Add-back-player-spawned-endermite-API.patch => 0130-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0132-Config-Enderman-aggressiveness-towards-Endermites.patch => 0131-Config-Enderman-aggressiveness-towards-Endermites.patch} (100%) rename patches/server/{0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (100%) rename patches/server/{0134-Tick-fluids-config.patch => 0133-Tick-fluids-config.patch} (100%) rename patches/server/{0135-Config-to-disable-Llama-caravans.patch => 0134-Config-to-disable-Llama-caravans.patch} (100%) rename patches/server/{0136-Config-to-make-Creepers-explode-on-death.patch => 0135-Config-to-make-Creepers-explode-on-death.patch} (100%) rename patches/server/{0137-Configurable-ravager-griefable-blocks-list.patch => 0136-Configurable-ravager-griefable-blocks-list.patch} (100%) rename patches/server/{0138-Sneak-to-bulk-process-composter.patch => 0137-Sneak-to-bulk-process-composter.patch} (100%) rename patches/server/{0139-Config-for-skipping-night.patch => 0138-Config-for-skipping-night.patch} (100%) rename patches/server/{0140-Add-config-for-villager-trading.patch => 0139-Add-config-for-villager-trading.patch} (100%) rename patches/server/{0141-Allow-infinity-on-crossbows.patch => 0140-Allow-infinity-on-crossbows.patch} (100%) rename patches/server/{0142-Drowning-Settings.patch => 0141-Drowning-Settings.patch} (100%) rename patches/server/{0143-Break-individual-slabs-when-sneaking.patch => 0142-Break-individual-slabs-when-sneaking.patch} (100%) rename patches/server/{0144-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0143-Config-to-disable-hostile-mob-spawn-on-ice.patch} (100%) rename patches/server/{0145-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0144-Config-to-show-Armor-Stand-arms-on-spawn.patch} (100%) rename patches/server/{0146-Option-to-make-doors-require-redstone.patch => 0145-Option-to-make-doors-require-redstone.patch} (100%) rename patches/server/{0147-Config-to-allow-for-unsafe-enchants.patch => 0146-Config-to-allow-for-unsafe-enchants.patch} (98%) rename patches/server/{0148-Configurable-sponge-absorption.patch => 0147-Configurable-sponge-absorption.patch} (100%) rename patches/server/{0149-Projectile-offset-config.patch => 0148-Projectile-offset-config.patch} (100%) rename patches/server/{0150-Config-for-powered-rail-activation-distance.patch => 0149-Config-for-powered-rail-activation-distance.patch} (100%) rename patches/server/{0151-Piglin-portal-spawn-modifier.patch => 0150-Piglin-portal-spawn-modifier.patch} (100%) rename patches/server/{0152-Config-to-change-max-number-of-bees.patch => 0151-Config-to-change-max-number-of-bees.patch} (100%) rename patches/server/{0153-Config-for-wither-explosion-radius.patch => 0152-Config-for-wither-explosion-radius.patch} (100%) rename patches/server/{0154-Gamemode-extra-permissions.patch => 0153-Gamemode-extra-permissions.patch} (100%) rename patches/server/{0155-Configurable-piston-push-limit.patch => 0154-Configurable-piston-push-limit.patch} (100%) rename patches/server/{0156-Configurable-broadcast-settings.patch => 0155-Configurable-broadcast-settings.patch} (100%) rename patches/server/{0157-Configurable-mob-blindness.patch => 0156-Configurable-mob-blindness.patch} (100%) rename patches/server/{0158-Hide-hidden-players-from-entity-selector.patch => 0157-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0159-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0158-Config-for-health-to-impact-Creeper-explosion-radius.patch} (100%) rename patches/server/{0160-Iron-golem-calm-anger-options.patch => 0159-Iron-golem-calm-anger-options.patch} (100%) rename patches/server/{0161-Breedable-parrots.patch => 0160-Breedable-parrots.patch} (100%) rename patches/server/{0162-Configurable-powered-rail-boost-modifier.patch => 0161-Configurable-powered-rail-boost-modifier.patch} (100%) rename patches/server/{0163-Add-config-change-multiplier-critical-damage-value.patch => 0162-Add-config-change-multiplier-critical-damage-value.patch} (100%) rename patches/server/{0164-Option-to-disable-dragon-egg-teleporting.patch => 0163-Option-to-disable-dragon-egg-teleporting.patch} (100%) rename patches/server/{0165-Config-for-unverified-username-message.patch => 0164-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0166-Make-anvil-cumulative-cost-configurable.patch => 0165-Make-anvil-cumulative-cost-configurable.patch} (100%) rename patches/server/{0167-Bee-can-work-when-raining-or-at-night.patch => 0166-Bee-can-work-when-raining-or-at-night.patch} (100%) rename patches/server/{0168-API-for-any-mob-to-burn-daylight.patch => 0167-API-for-any-mob-to-burn-daylight.patch} (99%) rename patches/server/{0169-Config-MobEffect-by-world.patch => 0168-Config-MobEffect-by-world.patch} (100%) rename patches/server/{0170-Beacon-Activation-Range-Configurable.patch => 0169-Beacon-Activation-Range-Configurable.patch} (100%) rename patches/server/{0171-Make-lightning-rod-range-configurable.patch => 0170-Make-lightning-rod-range-configurable.patch} (100%) rename patches/server/{0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (100%) rename patches/server/{0173-Allow-player-join-full-server-by-permission.patch => 0172-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0174-Add-portal-permission-bypass.patch => 0173-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0175-Shulker-spawn-from-bullet-options.patch => 0174-Shulker-spawn-from-bullet-options.patch} (100%) rename patches/server/{0176-Eating-glow-berries-adds-glow-effect.patch => 0175-Eating-glow-berries-adds-glow-effect.patch} (100%) rename patches/server/{0177-Option-to-make-drowned-break-doors.patch => 0176-Option-to-make-drowned-break-doors.patch} (100%) rename patches/server/{0178-Configurable-hunger-starvation-damage.patch => 0177-Configurable-hunger-starvation-damage.patch} (100%) rename patches/server/{0179-Enhance-SysoutCatcher.patch => 0178-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0180-Add-uptime-command.patch => 0179-Add-uptime-command.patch} (100%) rename patches/server/{0181-Tool-actionable-options.patch => 0180-Tool-actionable-options.patch} (100%) rename patches/server/{0182-Store-placer-on-Block-when-placed.patch => 0181-Store-placer-on-Block-when-placed.patch} (96%) rename patches/server/{0183-Summoner-API.patch => 0182-Summoner-API.patch} (100%) rename patches/server/{0184-Customizable-sleeping-actionbar-messages.patch => 0183-Customizable-sleeping-actionbar-messages.patch} (100%) rename patches/server/{0185-option-to-disable-shulker-box-items-from-dropping-co.patch => 0184-option-to-disable-shulker-box-items-from-dropping-co.patch} (100%) rename patches/server/{0186-Big-dripleaf-tilt-delay.patch => 0185-Big-dripleaf-tilt-delay.patch} (100%) rename patches/server/{0187-Player-ridable-in-water-option.patch => 0186-Player-ridable-in-water-option.patch} (100%) rename patches/server/{0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (100%) rename patches/server/{0189-Add-compass-command.patch => 0188-Add-compass-command.patch} (100%) rename patches/server/{0190-Toggle-for-kinetic-damage.patch => 0189-Toggle-for-kinetic-damage.patch} (100%) rename patches/server/{0191-Add-Option-for-disable-observer-clocks.patch => 0190-Add-Option-for-disable-observer-clocks.patch} (100%) rename patches/server/{0192-Customizeable-Zombie-Villager-curing-times.patch => 0191-Customizeable-Zombie-Villager-curing-times.patch} (100%) rename patches/server/{0193-Option-for-sponges-to-work-on-lava-and-mud.patch => 0192-Option-for-sponges-to-work-on-lava-and-mud.patch} (100%) rename patches/server/{0194-Toggle-for-Wither-s-spawn-sound.patch => 0193-Toggle-for-Wither-s-spawn-sound.patch} (100%) rename patches/server/{0195-Cactus-breaks-from-solid-neighbors-config.patch => 0194-Cactus-breaks-from-solid-neighbors-config.patch} (100%) rename patches/server/{0196-Config-to-remove-curse-of-binding-with-weakness.patch => 0195-Config-to-remove-curse-of-binding-with-weakness.patch} (100%) rename patches/server/{0197-Conduit-behavior-configuration.patch => 0196-Conduit-behavior-configuration.patch} (100%) rename patches/server/{0198-Cauldron-fill-chances.patch => 0197-Cauldron-fill-chances.patch} (100%) rename patches/server/{0199-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0198-Config-to-allow-mobs-to-pathfind-over-rails.patch} (100%) rename patches/server/{0200-Shulker-change-color-with-dye.patch => 0199-Shulker-change-color-with-dye.patch} (100%) rename patches/server/{0201-Extended-OfflinePlayer-API.patch => 0200-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0202-Added-the-ability-to-add-combustible-items.patch => 0201-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (100%) rename patches/server/{0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (100%) rename patches/server/{0205-Shift-right-click-to-use-exp-for-mending.patch => 0204-Shift-right-click-to-use-exp-for-mending.patch} (100%) rename patches/server/{0206-Dolphins-naturally-aggressive-to-players-chance.patch => 0205-Dolphins-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0207-Cows-naturally-aggressive-to-players-chance.patch => 0206-Cows-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0208-Option-for-beds-to-explode-on-villager-sleep.patch => 0207-Option-for-beds-to-explode-on-villager-sleep.patch} (100%) rename patches/server/{0209-Halloween-options-and-optimizations.patch => 0208-Halloween-options-and-optimizations.patch} (100%) rename patches/server/{0210-UPnP-Port-Forwarding.patch => 0209-UPnP-Port-Forwarding.patch} (100%) rename patches/server/{0211-Campfire-option-for-lit-when-placed.patch => 0210-Campfire-option-for-lit-when-placed.patch} (100%) rename patches/server/{0212-options-to-extinguish-fire-blocks-with-snowballs.patch => 0211-options-to-extinguish-fire-blocks-with-snowballs.patch} (100%) rename patches/server/{0213-Add-option-to-disable-zombie-villagers-cure.patch => 0212-Add-option-to-disable-zombie-villagers-cure.patch} (100%) rename patches/server/{0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0215-Mobs-always-drop-experience.patch => 0214-Mobs-always-drop-experience.patch} (100%) rename patches/server/{0216-Grindstone-API.patch => 0215-Grindstone-API.patch} (100%) rename patches/server/{0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (100%) rename patches/server/{0218-Turtle-eggs-random-tick-crack-chance.patch => 0217-Turtle-eggs-random-tick-crack-chance.patch} (100%) rename patches/server/{0219-Mob-head-visibility-percent.patch => 0218-Mob-head-visibility-percent.patch} (100%) rename patches/server/{0220-Configurable-valid-characters-for-usernames.patch => 0219-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0221-Shears-can-have-looting-enchantment.patch => 0220-Shears-can-have-looting-enchantment.patch} (100%) rename patches/server/{0222-Stop-bees-from-dying-after-stinging.patch => 0221-Stop-bees-from-dying-after-stinging.patch} (100%) rename patches/server/{0223-Configurable-farmland-trample-height.patch => 0222-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0224-Configurable-player-pickup-exp-delay.patch => 0223-Configurable-player-pickup-exp-delay.patch} (100%) rename patches/server/{0225-Allow-void-trading.patch => 0224-Allow-void-trading.patch} (100%) rename patches/server/{0226-Configurable-phantom-size.patch => 0225-Configurable-phantom-size.patch} (100%) rename patches/server/{0227-Max-joins-per-second.patch => 0226-Max-joins-per-second.patch} (100%) rename patches/server/{0228-Configurable-minimum-demand-for-trades.patch => 0227-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0229-Lobotomize-stuck-villagers.patch => 0228-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0230-Option-for-villager-display-trade-item.patch => 0229-Option-for-villager-display-trade-item.patch} (100%) rename patches/server/{0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (100%) rename patches/server/{0232-Config-for-mob-last-hurt-by-player-time.patch => 0231-Config-for-mob-last-hurt-by-player-time.patch} (97%) rename patches/server/{0233-Anvil-repair-damage-options.patch => 0232-Anvil-repair-damage-options.patch} (100%) rename patches/server/{0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0235-Add-toggle-for-enchant-level-clamping.patch => 0234-Add-toggle-for-enchant-level-clamping.patch} (97%) rename patches/server/{0236-Skip-junit-tests-for-purpur-commands.patch => 0235-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0237-Implement-configurable-search-radius-for-villagers-t.patch => 0236-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0238-Stonecutter-damage.patch => 0237-Stonecutter-damage.patch} (100%) rename patches/server/{0239-Configurable-damage-settings-for-magma-blocks.patch => 0238-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0240-Add-config-for-snow-on-blue-ice.patch => 0239-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0241-Skeletons-eat-wither-roses.patch => 0240-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0242-Enchantment-Table-Persists-Lapis.patch => 0241-Enchantment-Table-Persists-Lapis.patch} (100%) rename patches/server/{0243-Spark-Profiler.patch => 0242-Spark-Profiler.patch} (100%) rename patches/server/{0244-Option-to-disable-kick-for-out-of-order-chat.patch => 0243-Option-to-disable-kick-for-out-of-order-chat.patch} (100%) rename patches/server/{0245-Config-for-sculk-shrieker-can_summon-state.patch => 0244-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0246-Config-to-not-let-coral-die.patch => 0245-Config-to-not-let-coral-die.patch} (100%) rename patches/server/{0247-Add-local-difficulty-api.patch => 0246-Add-local-difficulty-api.patch} (100%) rename patches/server/{0248-Add-toggle-for-RNG-manipulation.patch => 0247-Add-toggle-for-RNG-manipulation.patch} (100%) rename patches/server/{0249-Remove-Timings.patch => 0248-Remove-Timings.patch} (100%) rename patches/server/{0250-Remove-Mojang-Profiler.patch => 0249-Remove-Mojang-Profiler.patch} (100%) rename patches/server/{0251-Add-more-logger-output-for-invalid-movement-kicks.patch => 0250-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0252-Add-Bee-API.patch => 0251-Add-Bee-API.patch} (100%) rename patches/server/{0253-Debug-Marker-API.patch => 0252-Debug-Marker-API.patch} (100%) rename patches/server/{0254-mob-spawning-option-to-ignore-creative-players.patch => 0253-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0255-Add-skeleton-bow-accuracy-option.patch => 0254-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0256-Add-death-screen-API.patch => 0255-Add-death-screen-API.patch} (100%) rename patches/server/{0257-Implement-ram-and-rambar-commands.patch => 0256-Implement-ram-and-rambar-commands.patch} (100%) rename patches/server/{0258-Configurable-block-blast-resistance.patch => 0257-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0259-Configurable-block-fall-damage-modifiers.patch => 0258-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0260-Language-API.patch => 0259-Language-API.patch} (100%) rename patches/server/{0261-Milk-Keeps-Beneficial-Effects.patch => 0260-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0263-Add-log-suppression-for-LibraryLoader.patch => 0262-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0265-Fire-Immunity-API.patch => 0264-Fire-Immunity-API.patch} (100%) rename patches/server/{0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0267-Added-got-ram-event.patch => 0266-Added-got-ram-event.patch} (100%) rename patches/server/{0268-Log-skipped-entity-s-position.patch => 0267-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0269-End-Crystal-Cramming.patch => 0268-End-Crystal-Cramming.patch} (100%) rename patches/server/{0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0271-Add-attribute-clamping-and-armor-limit-config.patch => 0270-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0272-Config-to-remove-explosion-radius-clamp.patch => 0271-Config-to-remove-explosion-radius-clamp.patch} (100%) rename patches/server/{0273-bonemealable-sugarcane-cactus-and-netherwart.patch => 0272-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0274-Add-PreExplodeEvents.patch => 0273-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0275-Improve-output-of-plugins-command.patch => 0274-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0276-Add-mending-multiplier.patch => 0275-Add-mending-multiplier.patch} (100%) rename patches/server/{0277-Make-GUI-Great-Again.patch => 0276-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0278-Stored-Bee-API.patch => 0277-Stored-Bee-API.patch} (100%) rename patches/server/{0279-Shears-can-defuse-TNT.patch => 0278-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0280-Explorer-Map-API.patch => 0279-Explorer-Map-API.patch} (100%) rename patches/server/{0281-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0280-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0283-Add-option-for-always-showing-item-in-player-death-m.patch => 0282-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0284-place-end-crystal-on-any-block.patch => 0283-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0285-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0284-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0286-register-minecraft-debug-commands.patch => 0285-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0287-Configurable-villager-search-radius.patch => 0286-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/api/0012-Lagging-threshold.patch b/patches/api/0011-Lagging-threshold.patch similarity index 100% rename from patches/api/0012-Lagging-threshold.patch rename to patches/api/0011-Lagging-threshold.patch diff --git a/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0012-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/api/0012-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/api/0014-Anvil-API.patch b/patches/api/0013-Anvil-API.patch similarity index 100% rename from patches/api/0014-Anvil-API.patch rename to patches/api/0013-Anvil-API.patch diff --git a/patches/api/0015-ItemStack-convenience-methods.patch b/patches/api/0014-ItemStack-convenience-methods.patch similarity index 100% rename from patches/api/0015-ItemStack-convenience-methods.patch rename to patches/api/0014-ItemStack-convenience-methods.patch diff --git a/patches/api/0016-LivingEntity-broadcastItemBreak.patch b/patches/api/0015-LivingEntity-broadcastItemBreak.patch similarity index 73% rename from patches/api/0016-LivingEntity-broadcastItemBreak.patch rename to patches/api/0015-LivingEntity-broadcastItemBreak.patch index 55595febc..439fc7df5 100644 --- a/patches/api/0016-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0015-LivingEntity-broadcastItemBreak.patch @@ -5,19 +5,20 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 57a3e330043077f042a284c99e2631e1582cb32c..3c5df0d60777dc6bc4dd38017423c38fcb6ed065 100644 +index b777e530122549455dcce6fac8d4a151c1c0af42..aba9952b2256b058eb413ce93f3305c861a200db 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1466,5 +1466,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1447,4 +1447,13 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ - @Deprecated - void setSafeFallDistance(float safeFallDistance); + void setBodyYaw(float bodyYaw); + // Paper end - body yaw API + ++ // Purpur start + /** + * Play item break animation for the item in specified equipment slot + * + * @param slot Equipment slot to play break animation for + */ + void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); - // Purpur end ++ // Purpur end } diff --git a/patches/api/0017-ChatColor-conveniences.patch b/patches/api/0016-ChatColor-conveniences.patch similarity index 100% rename from patches/api/0017-ChatColor-conveniences.patch rename to patches/api/0016-ChatColor-conveniences.patch diff --git a/patches/api/0018-Item-entity-immunities.patch b/patches/api/0017-Item-entity-immunities.patch similarity index 100% rename from patches/api/0018-Item-entity-immunities.patch rename to patches/api/0017-Item-entity-immunities.patch diff --git a/patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0020-Rabid-Wolf-API.patch b/patches/api/0019-Rabid-Wolf-API.patch similarity index 100% rename from patches/api/0020-Rabid-Wolf-API.patch rename to patches/api/0019-Rabid-Wolf-API.patch diff --git a/patches/api/0021-PlayerBookTooLargeEvent.patch b/patches/api/0020-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0021-PlayerBookTooLargeEvent.patch rename to patches/api/0020-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0021-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0021-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0023-Add-EntityTeleportHinderedEvent.patch b/patches/api/0022-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0023-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0022-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0023-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0023-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch b/patches/api/0024-API-for-any-mob-to-burn-daylight.patch similarity index 91% rename from patches/api/0025-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0024-API-for-any-mob-to-burn-daylight.patch index 9d7eb1a62..eb412045f 100644 --- a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0024-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 50344412a04f3008439e337ecf9dd09c7f853bc9..f482467ae784b134da97eb38afb7f125 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 3c5df0d60777dc6bc4dd38017423c38fcb6ed065..b6c928d1e0d659280d9a61456be8534604cc166b 100644 +index aba9952b2256b058eb413ce93f3305c861a200db..61a046584acf48693489ff551a0dd4c4b16af9ff 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1473,5 +1473,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1455,5 +1455,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0026-Add-back-player-spawned-endermite-API.patch b/patches/api/0025-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/api/0026-Add-back-player-spawned-endermite-API.patch rename to patches/api/0025-Add-back-player-spawned-endermite-API.patch diff --git a/patches/api/0027-Fix-default-permission-system.patch b/patches/api/0026-Fix-default-permission-system.patch similarity index 100% rename from patches/api/0027-Fix-default-permission-system.patch rename to patches/api/0026-Fix-default-permission-system.patch diff --git a/patches/api/0028-Summoner-API.patch b/patches/api/0027-Summoner-API.patch similarity index 100% rename from patches/api/0028-Summoner-API.patch rename to patches/api/0027-Summoner-API.patch diff --git a/patches/api/0029-Clean-up-version-command-output.patch b/patches/api/0028-Clean-up-version-command-output.patch similarity index 100% rename from patches/api/0029-Clean-up-version-command-output.patch rename to patches/api/0028-Clean-up-version-command-output.patch diff --git a/patches/api/0030-Extended-OfflinePlayer-API.patch b/patches/api/0029-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/api/0030-Extended-OfflinePlayer-API.patch rename to patches/api/0029-Extended-OfflinePlayer-API.patch diff --git a/patches/api/0031-Added-the-ability-to-add-combustible-items.patch b/patches/api/0030-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/api/0031-Added-the-ability-to-add-combustible-items.patch rename to patches/api/0030-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/api/0032-Grindstone-API.patch b/patches/api/0031-Grindstone-API.patch similarity index 100% rename from patches/api/0032-Grindstone-API.patch rename to patches/api/0031-Grindstone-API.patch diff --git a/patches/api/0033-Shears-can-have-looting-enchantment.patch b/patches/api/0032-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0033-Shears-can-have-looting-enchantment.patch rename to patches/api/0032-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0034-Lobotomize-stuck-villagers.patch b/patches/api/0033-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0034-Lobotomize-stuck-villagers.patch rename to patches/api/0033-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0035-Add-local-difficulty-api.patch b/patches/api/0034-Add-local-difficulty-api.patch similarity index 100% rename from patches/api/0035-Add-local-difficulty-api.patch rename to patches/api/0034-Add-local-difficulty-api.patch diff --git a/patches/api/0036-Remove-Timings.patch b/patches/api/0035-Remove-Timings.patch similarity index 100% rename from patches/api/0036-Remove-Timings.patch rename to patches/api/0035-Remove-Timings.patch diff --git a/patches/api/0037-Add-Bee-API.patch b/patches/api/0036-Add-Bee-API.patch similarity index 100% rename from patches/api/0037-Add-Bee-API.patch rename to patches/api/0036-Add-Bee-API.patch diff --git a/patches/api/0038-Debug-Marker-API.patch b/patches/api/0037-Debug-Marker-API.patch similarity index 100% rename from patches/api/0038-Debug-Marker-API.patch rename to patches/api/0037-Debug-Marker-API.patch diff --git a/patches/api/0039-Add-death-screen-API.patch b/patches/api/0038-Add-death-screen-API.patch similarity index 100% rename from patches/api/0039-Add-death-screen-API.patch rename to patches/api/0038-Add-death-screen-API.patch diff --git a/patches/api/0040-Language-API.patch b/patches/api/0039-Language-API.patch similarity index 100% rename from patches/api/0040-Language-API.patch rename to patches/api/0039-Language-API.patch diff --git a/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0040-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/api/0041-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0040-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/api/0042-Fire-Immunity-API.patch b/patches/api/0041-Fire-Immunity-API.patch similarity index 100% rename from patches/api/0042-Fire-Immunity-API.patch rename to patches/api/0041-Fire-Immunity-API.patch diff --git a/patches/api/0043-Added-goat-ram-event.patch b/patches/api/0042-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0043-Added-goat-ram-event.patch rename to patches/api/0042-Added-goat-ram-event.patch diff --git a/patches/api/0044-Add-PreExplodeEvents.patch b/patches/api/0043-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0044-Add-PreExplodeEvents.patch rename to patches/api/0043-Add-PreExplodeEvents.patch diff --git a/patches/api/0045-Stored-Bee-API.patch b/patches/api/0044-Stored-Bee-API.patch similarity index 100% rename from patches/api/0045-Stored-Bee-API.patch rename to patches/api/0044-Stored-Bee-API.patch diff --git a/patches/api/0046-Explorer-Map-API.patch b/patches/api/0045-Explorer-Map-API.patch similarity index 100% rename from patches/api/0046-Explorer-Map-API.patch rename to patches/api/0045-Explorer-Map-API.patch diff --git a/patches/api/0047-Stonecutter-damage.patch b/patches/api/0046-Stonecutter-damage.patch similarity index 100% rename from patches/api/0047-Stonecutter-damage.patch rename to patches/api/0046-Stonecutter-damage.patch diff --git a/patches/api/0011-LivingEntity-safeFallDistance.patch b/patches/dropped-api/0011-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/api/0011-LivingEntity-safeFallDistance.patch rename to patches/dropped-api/0011-LivingEntity-safeFallDistance.patch diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/dropped-server/0013-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/server/0013-LivingEntity-safeFallDistance.patch rename to patches/dropped-server/0013-LivingEntity-safeFallDistance.patch diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0013-Lagging-threshold.patch similarity index 100% rename from patches/server/0014-Lagging-threshold.patch rename to patches/server/0013-Lagging-threshold.patch diff --git a/patches/server/0015-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch similarity index 100% rename from patches/server/0015-PlayerSetSpawnerTypeWithEggEvent.patch rename to patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0015-Anvil-API.patch similarity index 100% rename from patches/server/0016-Anvil-API.patch rename to patches/server/0015-Anvil-API.patch diff --git a/patches/server/0017-Alternative-Keepalive-Handling.patch b/patches/server/0016-Alternative-Keepalive-Handling.patch similarity index 100% rename from patches/server/0017-Alternative-Keepalive-Handling.patch rename to patches/server/0016-Alternative-Keepalive-Handling.patch diff --git a/patches/server/0018-Add-turtle-egg-block-options.patch b/patches/server/0017-Add-turtle-egg-block-options.patch similarity index 100% rename from patches/server/0018-Add-turtle-egg-block-options.patch rename to patches/server/0017-Add-turtle-egg-block-options.patch diff --git a/patches/server/0019-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0018-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/server/0019-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0018-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/server/0020-Disable-outdated-build-check.patch b/patches/server/0019-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0020-Disable-outdated-build-check.patch rename to patches/server/0019-Disable-outdated-build-check.patch diff --git a/patches/server/0021-Giants-AI-settings.patch b/patches/server/0020-Giants-AI-settings.patch similarity index 100% rename from patches/server/0021-Giants-AI-settings.patch rename to patches/server/0020-Giants-AI-settings.patch diff --git a/patches/server/0022-Zombie-horse-naturally-spawn.patch b/patches/server/0021-Zombie-horse-naturally-spawn.patch similarity index 100% rename from patches/server/0022-Zombie-horse-naturally-spawn.patch rename to patches/server/0021-Zombie-horse-naturally-spawn.patch diff --git a/patches/server/0023-Charged-creeper-naturally-spawn.patch b/patches/server/0022-Charged-creeper-naturally-spawn.patch similarity index 100% rename from patches/server/0023-Charged-creeper-naturally-spawn.patch rename to patches/server/0022-Charged-creeper-naturally-spawn.patch diff --git a/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0023-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 100% rename from patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0023-Rabbit-naturally-spawn-toast-and-killer.patch diff --git a/patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0026-Tulips-change-fox-type.patch b/patches/server/0025-Tulips-change-fox-type.patch similarity index 100% rename from patches/server/0026-Tulips-change-fox-type.patch rename to patches/server/0025-Tulips-change-fox-type.patch diff --git a/patches/server/0027-Breedable-Polar-Bears.patch b/patches/server/0026-Breedable-Polar-Bears.patch similarity index 100% rename from patches/server/0027-Breedable-Polar-Bears.patch rename to patches/server/0026-Breedable-Polar-Bears.patch diff --git a/patches/server/0028-Chickens-can-retaliate.patch b/patches/server/0027-Chickens-can-retaliate.patch similarity index 100% rename from patches/server/0028-Chickens-can-retaliate.patch rename to patches/server/0027-Chickens-can-retaliate.patch diff --git a/patches/server/0029-Add-option-to-set-armorstand-step-height.patch b/patches/server/0028-Add-option-to-set-armorstand-step-height.patch similarity index 100% rename from patches/server/0029-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0028-Add-option-to-set-armorstand-step-height.patch diff --git a/patches/server/0030-Cat-spawning-options.patch b/patches/server/0029-Cat-spawning-options.patch similarity index 100% rename from patches/server/0030-Cat-spawning-options.patch rename to patches/server/0029-Cat-spawning-options.patch diff --git a/patches/server/0031-Cows-eat-mushrooms.patch b/patches/server/0030-Cows-eat-mushrooms.patch similarity index 100% rename from patches/server/0031-Cows-eat-mushrooms.patch rename to patches/server/0030-Cows-eat-mushrooms.patch diff --git a/patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0031-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0031-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0033-Pigs-give-saddle-back.patch b/patches/server/0032-Pigs-give-saddle-back.patch similarity index 100% rename from patches/server/0033-Pigs-give-saddle-back.patch rename to patches/server/0032-Pigs-give-saddle-back.patch diff --git a/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0033-Snowman-drop-and-put-back-pumpkin.patch similarity index 100% rename from patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0033-Snowman-drop-and-put-back-pumpkin.patch diff --git a/patches/server/0035-Ender-dragon-always-drop-full-exp.patch b/patches/server/0034-Ender-dragon-always-drop-full-exp.patch similarity index 100% rename from patches/server/0035-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0034-Ender-dragon-always-drop-full-exp.patch diff --git a/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0035-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 100% rename from patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0035-Allow-soil-to-moisten-from-water-directly-under-it.patch diff --git a/patches/server/0037-Minecart-settings-and-WASD-controls.patch b/patches/server/0036-Minecart-settings-and-WASD-controls.patch similarity index 100% rename from patches/server/0037-Minecart-settings-and-WASD-controls.patch rename to patches/server/0036-Minecart-settings-and-WASD-controls.patch diff --git a/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0037-Disable-loot-drops-on-death-by-cramming.patch similarity index 100% rename from patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0037-Disable-loot-drops-on-death-by-cramming.patch diff --git a/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0038-Option-to-toggle-milk-curing-bad-omen.patch similarity index 100% rename from patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0038-Option-to-toggle-milk-curing-bad-omen.patch diff --git a/patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0039-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0039-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0041-Skip-events-if-there-s-no-listeners.patch b/patches/server/0040-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0041-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0040-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0042-Add-permission-for-F3-N-debug.patch b/patches/server/0041-Add-permission-for-F3-N-debug.patch similarity index 100% rename from patches/server/0042-Add-permission-for-F3-N-debug.patch rename to patches/server/0041-Add-permission-for-F3-N-debug.patch diff --git a/patches/server/0043-Configurable-TPS-Catchup.patch b/patches/server/0042-Configurable-TPS-Catchup.patch similarity index 100% rename from patches/server/0043-Configurable-TPS-Catchup.patch rename to patches/server/0042-Configurable-TPS-Catchup.patch diff --git a/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch similarity index 100% rename from patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch rename to patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch diff --git a/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch similarity index 100% rename from patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch rename to patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch diff --git a/patches/server/0046-Villagers-follow-emerald-blocks.patch b/patches/server/0045-Villagers-follow-emerald-blocks.patch similarity index 100% rename from patches/server/0046-Villagers-follow-emerald-blocks.patch rename to patches/server/0045-Villagers-follow-emerald-blocks.patch diff --git a/patches/server/0047-Allow-leashing-villagers.patch b/patches/server/0046-Allow-leashing-villagers.patch similarity index 100% rename from patches/server/0047-Allow-leashing-villagers.patch rename to patches/server/0046-Allow-leashing-villagers.patch diff --git a/patches/server/0048-Implement-infinite-liquids.patch b/patches/server/0047-Implement-infinite-liquids.patch similarity index 100% rename from patches/server/0048-Implement-infinite-liquids.patch rename to patches/server/0047-Implement-infinite-liquids.patch diff --git a/patches/server/0049-Make-lava-flow-speed-configurable.patch b/patches/server/0048-Make-lava-flow-speed-configurable.patch similarity index 100% rename from patches/server/0049-Make-lava-flow-speed-configurable.patch rename to patches/server/0048-Make-lava-flow-speed-configurable.patch diff --git a/patches/server/0050-Add-player-death-exp-control-options.patch b/patches/server/0049-Add-player-death-exp-control-options.patch similarity index 100% rename from patches/server/0050-Add-player-death-exp-control-options.patch rename to patches/server/0049-Add-player-death-exp-control-options.patch diff --git a/patches/server/0051-Configurable-void-damage-height-and-damage.patch b/patches/server/0050-Configurable-void-damage-height-and-damage.patch similarity index 100% rename from patches/server/0051-Configurable-void-damage-height-and-damage.patch rename to patches/server/0050-Configurable-void-damage-height-and-damage.patch diff --git a/patches/server/0052-Add-canSaveToDisk-to-Entity.patch b/patches/server/0051-Add-canSaveToDisk-to-Entity.patch similarity index 100% rename from patches/server/0052-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0051-Add-canSaveToDisk-to-Entity.patch diff --git a/patches/server/0053-Dispenser-curse-of-binding-protection.patch b/patches/server/0052-Dispenser-curse-of-binding-protection.patch similarity index 100% rename from patches/server/0053-Dispenser-curse-of-binding-protection.patch rename to patches/server/0052-Dispenser-curse-of-binding-protection.patch diff --git a/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch similarity index 100% rename from patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch diff --git a/patches/server/0055-Mending-mends-most-damages-equipment-first.patch b/patches/server/0054-Mending-mends-most-damages-equipment-first.patch similarity index 98% rename from patches/server/0055-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0054-Mending-mends-most-damages-equipment-first.patch index 329b32553..fe5e0e660 100644 --- a/patches/server/0055-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0054-Mending-mends-most-damages-equipment-first.patch @@ -18,7 +18,7 @@ index a207a31d80a302dbdfe80f8727222542d3a78da2..7ca70e9ddda24e2fe661c7b13fa439a6 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 36e3415b9312d3a80c9f5e1c36b42b7ea30c31c5..9df30e61d97d7c403adede631df2a6825b986496 100644 +index a45389d64c04cd4c2a35fbc511595be0535a8665..e51bbab02b816a431f18c520fc67eeb1880fbfa0 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -636,6 +636,16 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0056-Add-5-second-tps-average-in-tps.patch b/patches/server/0055-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0056-Add-5-second-tps-average-in-tps.patch rename to patches/server/0055-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0057-Implement-elytra-settings.patch b/patches/server/0056-Implement-elytra-settings.patch similarity index 98% rename from patches/server/0057-Implement-elytra-settings.patch rename to patches/server/0056-Implement-elytra-settings.patch index 64864116d..3bf9c49e0 100644 --- a/patches/server/0057-Implement-elytra-settings.patch +++ b/patches/server/0056-Implement-elytra-settings.patch @@ -46,7 +46,7 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6 itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 9df30e61d97d7c403adede631df2a6825b986496..a1bf3368450386015c64b711c01471dad8dc5ccd 100644 +index e51bbab02b816a431f18c520fc67eeb1880fbfa0..b2c5581b126ceb9e47a13f6eda8cc132d11bfb09 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -663,7 +663,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0058-Item-entity-immunities.patch b/patches/server/0057-Item-entity-immunities.patch similarity index 100% rename from patches/server/0058-Item-entity-immunities.patch rename to patches/server/0057-Item-entity-immunities.patch diff --git a/patches/server/0059-Add-ping-command.patch b/patches/server/0058-Add-ping-command.patch similarity index 100% rename from patches/server/0059-Add-ping-command.patch rename to patches/server/0058-Add-ping-command.patch diff --git a/patches/server/0060-Add-demo-command.patch b/patches/server/0059-Add-demo-command.patch similarity index 100% rename from patches/server/0060-Add-demo-command.patch rename to patches/server/0059-Add-demo-command.patch diff --git a/patches/server/0061-Add-credits-command.patch b/patches/server/0060-Add-credits-command.patch similarity index 100% rename from patches/server/0061-Add-credits-command.patch rename to patches/server/0060-Add-credits-command.patch diff --git a/patches/server/0062-Configurable-jockey-options.patch b/patches/server/0061-Configurable-jockey-options.patch similarity index 100% rename from patches/server/0062-Configurable-jockey-options.patch rename to patches/server/0061-Configurable-jockey-options.patch diff --git a/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/patches/server/0064-Add-phantom-spawning-options.patch b/patches/server/0063-Add-phantom-spawning-options.patch similarity index 100% rename from patches/server/0064-Add-phantom-spawning-options.patch rename to patches/server/0063-Add-phantom-spawning-options.patch diff --git a/patches/server/0065-Implement-bed-explosion-options.patch b/patches/server/0064-Implement-bed-explosion-options.patch similarity index 100% rename from patches/server/0065-Implement-bed-explosion-options.patch rename to patches/server/0064-Implement-bed-explosion-options.patch diff --git a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0065-Implement-respawn-anchor-explosion-options.patch similarity index 100% rename from patches/server/0066-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0065-Implement-respawn-anchor-explosion-options.patch diff --git a/patches/server/0067-Add-allow-water-in-end-world-option.patch b/patches/server/0066-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/server/0067-Add-allow-water-in-end-world-option.patch rename to patches/server/0066-Add-allow-water-in-end-world-option.patch diff --git a/patches/server/0068-Entity-lifespan.patch b/patches/server/0067-Entity-lifespan.patch similarity index 100% rename from patches/server/0068-Entity-lifespan.patch rename to patches/server/0067-Entity-lifespan.patch diff --git a/patches/server/0069-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 100% rename from patches/server/0069-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 diff --git a/patches/server/0070-Squid-EAR-immunity.patch b/patches/server/0069-Squid-EAR-immunity.patch similarity index 100% rename from patches/server/0070-Squid-EAR-immunity.patch rename to patches/server/0069-Squid-EAR-immunity.patch diff --git a/patches/server/0071-Phantoms-burn-in-light.patch b/patches/server/0070-Phantoms-burn-in-light.patch similarity index 100% rename from patches/server/0071-Phantoms-burn-in-light.patch rename to patches/server/0070-Phantoms-burn-in-light.patch diff --git a/patches/server/0072-Configurable-villager-breeding.patch b/patches/server/0071-Configurable-villager-breeding.patch similarity index 100% rename from patches/server/0072-Configurable-villager-breeding.patch rename to patches/server/0071-Configurable-villager-breeding.patch diff --git a/patches/server/0073-Redstone-deactivates-spawners.patch b/patches/server/0072-Redstone-deactivates-spawners.patch similarity index 100% rename from patches/server/0073-Redstone-deactivates-spawners.patch rename to patches/server/0072-Redstone-deactivates-spawners.patch diff --git a/patches/server/0074-Totems-work-in-inventory.patch b/patches/server/0073-Totems-work-in-inventory.patch similarity index 100% rename from patches/server/0074-Totems-work-in-inventory.patch rename to patches/server/0073-Totems-work-in-inventory.patch diff --git a/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0074-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/server/0075-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0074-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/server/0076-Dispensers-place-anvils-option.patch b/patches/server/0075-Dispensers-place-anvils-option.patch similarity index 100% rename from patches/server/0076-Dispensers-place-anvils-option.patch rename to patches/server/0075-Dispensers-place-anvils-option.patch diff --git a/patches/server/0077-Allow-anvil-colors.patch b/patches/server/0076-Allow-anvil-colors.patch similarity index 100% rename from patches/server/0077-Allow-anvil-colors.patch rename to patches/server/0076-Allow-anvil-colors.patch diff --git a/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 100% rename from patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch diff --git a/patches/server/0079-Short-enderman-height.patch b/patches/server/0078-Short-enderman-height.patch similarity index 100% rename from patches/server/0079-Short-enderman-height.patch rename to patches/server/0078-Short-enderman-height.patch diff --git a/patches/server/0080-Stop-squids-floating-on-top-of-water.patch b/patches/server/0079-Stop-squids-floating-on-top-of-water.patch similarity index 100% rename from patches/server/0080-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0079-Stop-squids-floating-on-top-of-water.patch diff --git a/patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0082-Entities-can-use-portals-configuration.patch b/patches/server/0081-Entities-can-use-portals-configuration.patch similarity index 100% rename from patches/server/0082-Entities-can-use-portals-configuration.patch rename to patches/server/0081-Entities-can-use-portals-configuration.patch diff --git a/patches/server/0083-LivingEntity-broadcastItemBreak.patch b/patches/server/0082-LivingEntity-broadcastItemBreak.patch similarity index 70% rename from patches/server/0083-LivingEntity-broadcastItemBreak.patch rename to patches/server/0082-LivingEntity-broadcastItemBreak.patch index 6596842e4..d815a2657 100644 --- a/patches/server/0083-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0082-LivingEntity-broadcastItemBreak.patch @@ -5,18 +5,19 @@ 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 39c2a9f732b8e2452fd2dca07193a173d0c2ba1c..4fd98b8c39c3a989e5bf5682b936cade78a8c404 100644 +index aa351df679f300018367244c7ccb3e5a59e9276f..11bd76d79bbfff68734d8ee1095f21c5c50e7bde 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1184,5 +1184,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - public void setSafeFallDistance(float safeFallDistance) { - getHandle().getAttribute(Attributes.SAFE_FALL_DISTANCE).setBaseValue(safeFallDistance); +@@ -1173,4 +1173,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + this.getHandle().setYBodyRot(bodyYaw); } + // Paper end - body yaw API + ++ // Purpur start + @Override + public void broadcastItemBreak(org.bukkit.inventory.EquipmentSlot slot) { + if (slot == null) return; + getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); + } - // Purpur end ++ // Purpur end } diff --git a/patches/server/0084-Customizable-wither-health-and-healing.patch b/patches/server/0083-Customizable-wither-health-and-healing.patch similarity index 100% rename from patches/server/0084-Customizable-wither-health-and-healing.patch rename to patches/server/0083-Customizable-wither-health-and-healing.patch diff --git a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch similarity index 100% rename from patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch diff --git a/patches/server/0086-Raid-cooldown-setting.patch b/patches/server/0085-Raid-cooldown-setting.patch similarity index 100% rename from patches/server/0086-Raid-cooldown-setting.patch rename to patches/server/0085-Raid-cooldown-setting.patch diff --git a/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch similarity index 100% rename from patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch diff --git a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0090-Flying-squids-Oh-my.patch b/patches/server/0089-Flying-squids-Oh-my.patch similarity index 100% rename from patches/server/0090-Flying-squids-Oh-my.patch rename to patches/server/0089-Flying-squids-Oh-my.patch diff --git a/patches/server/0091-Infinity-bow-settings.patch b/patches/server/0090-Infinity-bow-settings.patch similarity index 100% rename from patches/server/0091-Infinity-bow-settings.patch rename to patches/server/0090-Infinity-bow-settings.patch diff --git a/patches/server/0092-Configurable-daylight-cycle.patch b/patches/server/0091-Configurable-daylight-cycle.patch similarity index 100% rename from patches/server/0092-Configurable-daylight-cycle.patch rename to patches/server/0091-Configurable-daylight-cycle.patch diff --git a/patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0092-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0092-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/server/0094-Furnace-uses-lava-from-underneath.patch b/patches/server/0093-Furnace-uses-lava-from-underneath.patch similarity index 100% rename from patches/server/0094-Furnace-uses-lava-from-underneath.patch rename to patches/server/0093-Furnace-uses-lava-from-underneath.patch diff --git a/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch similarity index 100% rename from patches/server/0095-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0094-Arrows-should-not-reset-despawn-counter.patch diff --git a/patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 100% rename from patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch diff --git a/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch similarity index 100% rename from patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch diff --git a/patches/server/0098-Make-entity-breeding-times-configurable.patch b/patches/server/0097-Make-entity-breeding-times-configurable.patch similarity index 100% rename from patches/server/0098-Make-entity-breeding-times-configurable.patch rename to patches/server/0097-Make-entity-breeding-times-configurable.patch diff --git a/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 100% rename from patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch diff --git a/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 100% rename from patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch diff --git a/patches/server/0102-Add-configurable-snowball-damage.patch b/patches/server/0101-Add-configurable-snowball-damage.patch similarity index 100% rename from patches/server/0102-Add-configurable-snowball-damage.patch rename to patches/server/0101-Add-configurable-snowball-damage.patch diff --git a/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch similarity index 100% rename from patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch diff --git a/patches/server/0104-Add-boat-fall-damage-config.patch b/patches/server/0103-Add-boat-fall-damage-config.patch similarity index 100% rename from patches/server/0104-Add-boat-fall-damage-config.patch rename to patches/server/0103-Add-boat-fall-damage-config.patch diff --git a/patches/server/0105-Snow-Golem-rate-of-fire-config.patch b/patches/server/0104-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/server/0105-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0104-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/server/0106-EMC-Configurable-disable-give-dropping.patch b/patches/server/0105-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0106-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0105-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 100% rename from patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch diff --git a/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 100% rename from patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch diff --git a/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 100% rename from patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch diff --git a/patches/server/0110-Configurable-default-collar-color.patch b/patches/server/0109-Configurable-default-collar-color.patch similarity index 100% rename from patches/server/0110-Configurable-default-collar-color.patch rename to patches/server/0109-Configurable-default-collar-color.patch diff --git a/patches/server/0111-Phantom-flames-on-swoop.patch b/patches/server/0110-Phantom-flames-on-swoop.patch similarity index 100% rename from patches/server/0111-Phantom-flames-on-swoop.patch rename to patches/server/0110-Phantom-flames-on-swoop.patch diff --git a/patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 100% rename from patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch diff --git a/patches/server/0113-Implement-TPSBar.patch b/patches/server/0112-Implement-TPSBar.patch similarity index 100% rename from patches/server/0113-Implement-TPSBar.patch rename to patches/server/0112-Implement-TPSBar.patch diff --git a/patches/server/0114-Striders-give-saddle-back.patch b/patches/server/0113-Striders-give-saddle-back.patch similarity index 100% rename from patches/server/0114-Striders-give-saddle-back.patch rename to patches/server/0113-Striders-give-saddle-back.patch diff --git a/patches/server/0115-PlayerBookTooLargeEvent.patch b/patches/server/0114-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/server/0115-PlayerBookTooLargeEvent.patch rename to patches/server/0114-PlayerBookTooLargeEvent.patch diff --git a/patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 100% rename from patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch diff --git a/patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 100% rename from patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch diff --git a/patches/server/0119-Add-EntityTeleportHinderedEvent.patch b/patches/server/0118-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/server/0119-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0118-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/server/0120-Farmland-trampling-changes.patch b/patches/server/0119-Farmland-trampling-changes.patch similarity index 100% rename from patches/server/0120-Farmland-trampling-changes.patch rename to patches/server/0119-Farmland-trampling-changes.patch diff --git a/patches/server/0121-Movement-options-for-armor-stands.patch b/patches/server/0120-Movement-options-for-armor-stands.patch similarity index 100% rename from patches/server/0121-Movement-options-for-armor-stands.patch rename to patches/server/0120-Movement-options-for-armor-stands.patch diff --git a/patches/server/0122-Fix-stuck-in-portals.patch b/patches/server/0121-Fix-stuck-in-portals.patch similarity index 100% rename from patches/server/0122-Fix-stuck-in-portals.patch rename to patches/server/0121-Fix-stuck-in-portals.patch diff --git a/patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch similarity index 100% rename from patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch diff --git a/patches/server/0124-Config-to-always-tame-in-Creative.patch b/patches/server/0123-Config-to-always-tame-in-Creative.patch similarity index 100% rename from patches/server/0124-Config-to-always-tame-in-Creative.patch rename to patches/server/0123-Config-to-always-tame-in-Creative.patch diff --git a/patches/server/0125-End-crystal-explosion-options.patch b/patches/server/0124-End-crystal-explosion-options.patch similarity index 100% rename from patches/server/0125-End-crystal-explosion-options.patch rename to patches/server/0124-End-crystal-explosion-options.patch diff --git a/patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 100% rename from patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch diff --git a/patches/server/0127-Dont-run-with-scissors.patch b/patches/server/0126-Dont-run-with-scissors.patch similarity index 100% rename from patches/server/0127-Dont-run-with-scissors.patch rename to patches/server/0126-Dont-run-with-scissors.patch diff --git a/patches/server/0128-One-Punch-Man.patch b/patches/server/0127-One-Punch-Man.patch similarity index 100% rename from patches/server/0128-One-Punch-Man.patch rename to patches/server/0127-One-Punch-Man.patch diff --git a/patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 100% rename from patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch diff --git a/patches/server/0131-Add-back-player-spawned-endermite-API.patch b/patches/server/0130-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0131-Add-back-player-spawned-endermite-API.patch rename to patches/server/0130-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 100% rename from patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch diff --git a/patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 100% rename from patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch diff --git a/patches/server/0134-Tick-fluids-config.patch b/patches/server/0133-Tick-fluids-config.patch similarity index 100% rename from patches/server/0134-Tick-fluids-config.patch rename to patches/server/0133-Tick-fluids-config.patch diff --git a/patches/server/0135-Config-to-disable-Llama-caravans.patch b/patches/server/0134-Config-to-disable-Llama-caravans.patch similarity index 100% rename from patches/server/0135-Config-to-disable-Llama-caravans.patch rename to patches/server/0134-Config-to-disable-Llama-caravans.patch diff --git a/patches/server/0136-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch similarity index 100% rename from patches/server/0136-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0135-Config-to-make-Creepers-explode-on-death.patch diff --git a/patches/server/0137-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch similarity index 100% rename from patches/server/0137-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0136-Configurable-ravager-griefable-blocks-list.patch diff --git a/patches/server/0138-Sneak-to-bulk-process-composter.patch b/patches/server/0137-Sneak-to-bulk-process-composter.patch similarity index 100% rename from patches/server/0138-Sneak-to-bulk-process-composter.patch rename to patches/server/0137-Sneak-to-bulk-process-composter.patch diff --git a/patches/server/0139-Config-for-skipping-night.patch b/patches/server/0138-Config-for-skipping-night.patch similarity index 100% rename from patches/server/0139-Config-for-skipping-night.patch rename to patches/server/0138-Config-for-skipping-night.patch diff --git a/patches/server/0140-Add-config-for-villager-trading.patch b/patches/server/0139-Add-config-for-villager-trading.patch similarity index 100% rename from patches/server/0140-Add-config-for-villager-trading.patch rename to patches/server/0139-Add-config-for-villager-trading.patch diff --git a/patches/server/0141-Allow-infinity-on-crossbows.patch b/patches/server/0140-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/server/0141-Allow-infinity-on-crossbows.patch rename to patches/server/0140-Allow-infinity-on-crossbows.patch diff --git a/patches/server/0142-Drowning-Settings.patch b/patches/server/0141-Drowning-Settings.patch similarity index 100% rename from patches/server/0142-Drowning-Settings.patch rename to patches/server/0141-Drowning-Settings.patch diff --git a/patches/server/0143-Break-individual-slabs-when-sneaking.patch b/patches/server/0142-Break-individual-slabs-when-sneaking.patch similarity index 100% rename from patches/server/0143-Break-individual-slabs-when-sneaking.patch rename to patches/server/0142-Break-individual-slabs-when-sneaking.patch diff --git a/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/server/0145-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 100% rename from patches/server/0145-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch diff --git a/patches/server/0146-Option-to-make-doors-require-redstone.patch b/patches/server/0145-Option-to-make-doors-require-redstone.patch similarity index 100% rename from patches/server/0146-Option-to-make-doors-require-redstone.patch rename to patches/server/0145-Option-to-make-doors-require-redstone.patch diff --git a/patches/server/0147-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0146-Config-to-allow-for-unsafe-enchants.patch similarity index 98% rename from patches/server/0147-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0146-Config-to-allow-for-unsafe-enchants.patch index 46aa47f10..9f4841d77 100644 --- a/patches/server/0147-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0146-Config-to-allow-for-unsafe-enchants.patch @@ -74,7 +74,7 @@ index 5cadd69bcae33b1de58806fcf40533850d976154..17067510990f575bf638f6a95ed0d964 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index a1bf3368450386015c64b711c01471dad8dc5ccd..0956421f1c037fc3d8e1ed99b6ffaca4d9426c7c 100644 +index b2c5581b126ceb9e47a13f6eda8cc132d11bfb09..513e0309b525cac496daccac801d92d3dacf41bd 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1226,6 +1226,16 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0148-Configurable-sponge-absorption.patch b/patches/server/0147-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0148-Configurable-sponge-absorption.patch rename to patches/server/0147-Configurable-sponge-absorption.patch diff --git a/patches/server/0149-Projectile-offset-config.patch b/patches/server/0148-Projectile-offset-config.patch similarity index 100% rename from patches/server/0149-Projectile-offset-config.patch rename to patches/server/0148-Projectile-offset-config.patch diff --git a/patches/server/0150-Config-for-powered-rail-activation-distance.patch b/patches/server/0149-Config-for-powered-rail-activation-distance.patch similarity index 100% rename from patches/server/0150-Config-for-powered-rail-activation-distance.patch rename to patches/server/0149-Config-for-powered-rail-activation-distance.patch diff --git a/patches/server/0151-Piglin-portal-spawn-modifier.patch b/patches/server/0150-Piglin-portal-spawn-modifier.patch similarity index 100% rename from patches/server/0151-Piglin-portal-spawn-modifier.patch rename to patches/server/0150-Piglin-portal-spawn-modifier.patch diff --git a/patches/server/0152-Config-to-change-max-number-of-bees.patch b/patches/server/0151-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0152-Config-to-change-max-number-of-bees.patch rename to patches/server/0151-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0153-Config-for-wither-explosion-radius.patch b/patches/server/0152-Config-for-wither-explosion-radius.patch similarity index 100% rename from patches/server/0153-Config-for-wither-explosion-radius.patch rename to patches/server/0152-Config-for-wither-explosion-radius.patch diff --git a/patches/server/0154-Gamemode-extra-permissions.patch b/patches/server/0153-Gamemode-extra-permissions.patch similarity index 100% rename from patches/server/0154-Gamemode-extra-permissions.patch rename to patches/server/0153-Gamemode-extra-permissions.patch diff --git a/patches/server/0155-Configurable-piston-push-limit.patch b/patches/server/0154-Configurable-piston-push-limit.patch similarity index 100% rename from patches/server/0155-Configurable-piston-push-limit.patch rename to patches/server/0154-Configurable-piston-push-limit.patch diff --git a/patches/server/0156-Configurable-broadcast-settings.patch b/patches/server/0155-Configurable-broadcast-settings.patch similarity index 100% rename from patches/server/0156-Configurable-broadcast-settings.patch rename to patches/server/0155-Configurable-broadcast-settings.patch diff --git a/patches/server/0157-Configurable-mob-blindness.patch b/patches/server/0156-Configurable-mob-blindness.patch similarity index 100% rename from patches/server/0157-Configurable-mob-blindness.patch rename to patches/server/0156-Configurable-mob-blindness.patch diff --git a/patches/server/0158-Hide-hidden-players-from-entity-selector.patch b/patches/server/0157-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0158-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0157-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 100% rename from patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch diff --git a/patches/server/0160-Iron-golem-calm-anger-options.patch b/patches/server/0159-Iron-golem-calm-anger-options.patch similarity index 100% rename from patches/server/0160-Iron-golem-calm-anger-options.patch rename to patches/server/0159-Iron-golem-calm-anger-options.patch diff --git a/patches/server/0161-Breedable-parrots.patch b/patches/server/0160-Breedable-parrots.patch similarity index 100% rename from patches/server/0161-Breedable-parrots.patch rename to patches/server/0160-Breedable-parrots.patch diff --git a/patches/server/0162-Configurable-powered-rail-boost-modifier.patch b/patches/server/0161-Configurable-powered-rail-boost-modifier.patch similarity index 100% rename from patches/server/0162-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0161-Configurable-powered-rail-boost-modifier.patch diff --git a/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch similarity index 100% rename from patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch diff --git a/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch similarity index 100% rename from patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch diff --git a/patches/server/0165-Config-for-unverified-username-message.patch b/patches/server/0164-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0165-Config-for-unverified-username-message.patch rename to patches/server/0164-Config-for-unverified-username-message.patch diff --git a/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0165-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0166-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0165-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0166-Bee-can-work-when-raining-or-at-night.patch similarity index 100% rename from patches/server/0167-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0166-Bee-can-work-when-raining-or-at-night.patch diff --git a/patches/server/0168-API-for-any-mob-to-burn-daylight.patch b/patches/server/0167-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from patches/server/0168-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0167-API-for-any-mob-to-burn-daylight.patch index 71bd9c97e..c76ff8510 100644 --- a/patches/server/0168-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0167-API-for-any-mob-to-burn-daylight.patch @@ -361,10 +361,10 @@ index befe3372d5f1550b7bde3b63b5e7aef9035c5379..3c674ecd3b80501047b4593e88720342 Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 4fd98b8c39c3a989e5bf5682b936cade78a8c404..d08f86f2122441d661e7693ad7dcb9854921a767 100644 +index 11bd76d79bbfff68734d8ee1095f21c5c50e7bde..1a8a76aa31bd1d1670be6e9cada162c540084cf9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1190,5 +1190,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1180,5 +1180,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0169-Config-MobEffect-by-world.patch b/patches/server/0168-Config-MobEffect-by-world.patch similarity index 100% rename from patches/server/0169-Config-MobEffect-by-world.patch rename to patches/server/0168-Config-MobEffect-by-world.patch diff --git a/patches/server/0170-Beacon-Activation-Range-Configurable.patch b/patches/server/0169-Beacon-Activation-Range-Configurable.patch similarity index 100% rename from patches/server/0170-Beacon-Activation-Range-Configurable.patch rename to patches/server/0169-Beacon-Activation-Range-Configurable.patch diff --git a/patches/server/0171-Make-lightning-rod-range-configurable.patch b/patches/server/0170-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0171-Make-lightning-rod-range-configurable.patch rename to patches/server/0170-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 100% rename from patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch diff --git a/patches/server/0173-Allow-player-join-full-server-by-permission.patch b/patches/server/0172-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0173-Allow-player-join-full-server-by-permission.patch rename to patches/server/0172-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0174-Add-portal-permission-bypass.patch b/patches/server/0173-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0174-Add-portal-permission-bypass.patch rename to patches/server/0173-Add-portal-permission-bypass.patch diff --git a/patches/server/0175-Shulker-spawn-from-bullet-options.patch b/patches/server/0174-Shulker-spawn-from-bullet-options.patch similarity index 100% rename from patches/server/0175-Shulker-spawn-from-bullet-options.patch rename to patches/server/0174-Shulker-spawn-from-bullet-options.patch diff --git a/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0175-Eating-glow-berries-adds-glow-effect.patch similarity index 100% rename from patches/server/0176-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0175-Eating-glow-berries-adds-glow-effect.patch diff --git a/patches/server/0177-Option-to-make-drowned-break-doors.patch b/patches/server/0176-Option-to-make-drowned-break-doors.patch similarity index 100% rename from patches/server/0177-Option-to-make-drowned-break-doors.patch rename to patches/server/0176-Option-to-make-drowned-break-doors.patch diff --git a/patches/server/0178-Configurable-hunger-starvation-damage.patch b/patches/server/0177-Configurable-hunger-starvation-damage.patch similarity index 100% rename from patches/server/0178-Configurable-hunger-starvation-damage.patch rename to patches/server/0177-Configurable-hunger-starvation-damage.patch diff --git a/patches/server/0179-Enhance-SysoutCatcher.patch b/patches/server/0178-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0179-Enhance-SysoutCatcher.patch rename to patches/server/0178-Enhance-SysoutCatcher.patch diff --git a/patches/server/0180-Add-uptime-command.patch b/patches/server/0179-Add-uptime-command.patch similarity index 100% rename from patches/server/0180-Add-uptime-command.patch rename to patches/server/0179-Add-uptime-command.patch diff --git a/patches/server/0181-Tool-actionable-options.patch b/patches/server/0180-Tool-actionable-options.patch similarity index 100% rename from patches/server/0181-Tool-actionable-options.patch rename to patches/server/0180-Tool-actionable-options.patch diff --git a/patches/server/0182-Store-placer-on-Block-when-placed.patch b/patches/server/0181-Store-placer-on-Block-when-placed.patch similarity index 96% rename from patches/server/0182-Store-placer-on-Block-when-placed.patch rename to patches/server/0181-Store-placer-on-Block-when-placed.patch index 04f5d1dfa..814965366 100644 --- a/patches/server/0182-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0181-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 0956421f1c037fc3d8e1ed99b6ffaca4d9426c7c..6cc31102f17ee19d9f2163a6aa5cf7bfe9ba3ff5 100644 +index 513e0309b525cac496daccac801d92d3dacf41bd..fb614432722ea27cd044d6cfd3c6a72f797979f1 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0183-Summoner-API.patch b/patches/server/0182-Summoner-API.patch similarity index 100% rename from patches/server/0183-Summoner-API.patch rename to patches/server/0182-Summoner-API.patch diff --git a/patches/server/0184-Customizable-sleeping-actionbar-messages.patch b/patches/server/0183-Customizable-sleeping-actionbar-messages.patch similarity index 100% rename from patches/server/0184-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0183-Customizable-sleeping-actionbar-messages.patch diff --git a/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 100% rename from patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch diff --git a/patches/server/0186-Big-dripleaf-tilt-delay.patch b/patches/server/0185-Big-dripleaf-tilt-delay.patch similarity index 100% rename from patches/server/0186-Big-dripleaf-tilt-delay.patch rename to patches/server/0185-Big-dripleaf-tilt-delay.patch diff --git a/patches/server/0187-Player-ridable-in-water-option.patch b/patches/server/0186-Player-ridable-in-water-option.patch similarity index 100% rename from patches/server/0187-Player-ridable-in-water-option.patch rename to patches/server/0186-Player-ridable-in-water-option.patch diff --git a/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 100% rename from patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch diff --git a/patches/server/0189-Add-compass-command.patch b/patches/server/0188-Add-compass-command.patch similarity index 100% rename from patches/server/0189-Add-compass-command.patch rename to patches/server/0188-Add-compass-command.patch diff --git a/patches/server/0190-Toggle-for-kinetic-damage.patch b/patches/server/0189-Toggle-for-kinetic-damage.patch similarity index 100% rename from patches/server/0190-Toggle-for-kinetic-damage.patch rename to patches/server/0189-Toggle-for-kinetic-damage.patch diff --git a/patches/server/0191-Add-Option-for-disable-observer-clocks.patch b/patches/server/0190-Add-Option-for-disable-observer-clocks.patch similarity index 100% rename from patches/server/0191-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0190-Add-Option-for-disable-observer-clocks.patch diff --git a/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch similarity index 100% rename from patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch diff --git a/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 100% rename from patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch diff --git a/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch similarity index 100% rename from patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch diff --git a/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch similarity index 100% rename from patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch diff --git a/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 100% rename from patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch diff --git a/patches/server/0197-Conduit-behavior-configuration.patch b/patches/server/0196-Conduit-behavior-configuration.patch similarity index 100% rename from patches/server/0197-Conduit-behavior-configuration.patch rename to patches/server/0196-Conduit-behavior-configuration.patch diff --git a/patches/server/0198-Cauldron-fill-chances.patch b/patches/server/0197-Cauldron-fill-chances.patch similarity index 100% rename from patches/server/0198-Cauldron-fill-chances.patch rename to patches/server/0197-Cauldron-fill-chances.patch diff --git a/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 100% rename from patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch diff --git a/patches/server/0200-Shulker-change-color-with-dye.patch b/patches/server/0199-Shulker-change-color-with-dye.patch similarity index 100% rename from patches/server/0200-Shulker-change-color-with-dye.patch rename to patches/server/0199-Shulker-change-color-with-dye.patch diff --git a/patches/server/0201-Extended-OfflinePlayer-API.patch b/patches/server/0200-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0201-Extended-OfflinePlayer-API.patch rename to patches/server/0200-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0202-Added-the-ability-to-add-combustible-items.patch b/patches/server/0201-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0202-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0201-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 100% rename from patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch diff --git a/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 100% rename from patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch diff --git a/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch similarity index 100% rename from patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch diff --git a/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 100% rename from patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch diff --git a/patches/server/0209-Halloween-options-and-optimizations.patch b/patches/server/0208-Halloween-options-and-optimizations.patch similarity index 100% rename from patches/server/0209-Halloween-options-and-optimizations.patch rename to patches/server/0208-Halloween-options-and-optimizations.patch diff --git a/patches/server/0210-UPnP-Port-Forwarding.patch b/patches/server/0209-UPnP-Port-Forwarding.patch similarity index 100% rename from patches/server/0210-UPnP-Port-Forwarding.patch rename to patches/server/0209-UPnP-Port-Forwarding.patch diff --git a/patches/server/0211-Campfire-option-for-lit-when-placed.patch b/patches/server/0210-Campfire-option-for-lit-when-placed.patch similarity index 100% rename from patches/server/0211-Campfire-option-for-lit-when-placed.patch rename to patches/server/0210-Campfire-option-for-lit-when-placed.patch diff --git a/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 100% rename from patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch diff --git a/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch similarity index 100% rename from patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch diff --git a/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0215-Mobs-always-drop-experience.patch b/patches/server/0214-Mobs-always-drop-experience.patch similarity index 100% rename from patches/server/0215-Mobs-always-drop-experience.patch rename to patches/server/0214-Mobs-always-drop-experience.patch diff --git a/patches/server/0216-Grindstone-API.patch b/patches/server/0215-Grindstone-API.patch similarity index 100% rename from patches/server/0216-Grindstone-API.patch rename to patches/server/0215-Grindstone-API.patch diff --git a/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0219-Mob-head-visibility-percent.patch b/patches/server/0218-Mob-head-visibility-percent.patch similarity index 100% rename from patches/server/0219-Mob-head-visibility-percent.patch rename to patches/server/0218-Mob-head-visibility-percent.patch diff --git a/patches/server/0220-Configurable-valid-characters-for-usernames.patch b/patches/server/0219-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0220-Configurable-valid-characters-for-usernames.patch rename to patches/server/0219-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0221-Shears-can-have-looting-enchantment.patch b/patches/server/0220-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0221-Shears-can-have-looting-enchantment.patch rename to patches/server/0220-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0222-Stop-bees-from-dying-after-stinging.patch b/patches/server/0221-Stop-bees-from-dying-after-stinging.patch similarity index 100% rename from patches/server/0222-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0221-Stop-bees-from-dying-after-stinging.patch diff --git a/patches/server/0223-Configurable-farmland-trample-height.patch b/patches/server/0222-Configurable-farmland-trample-height.patch similarity index 100% rename from patches/server/0223-Configurable-farmland-trample-height.patch rename to patches/server/0222-Configurable-farmland-trample-height.patch diff --git a/patches/server/0224-Configurable-player-pickup-exp-delay.patch b/patches/server/0223-Configurable-player-pickup-exp-delay.patch similarity index 100% rename from patches/server/0224-Configurable-player-pickup-exp-delay.patch rename to patches/server/0223-Configurable-player-pickup-exp-delay.patch diff --git a/patches/server/0225-Allow-void-trading.patch b/patches/server/0224-Allow-void-trading.patch similarity index 100% rename from patches/server/0225-Allow-void-trading.patch rename to patches/server/0224-Allow-void-trading.patch diff --git a/patches/server/0226-Configurable-phantom-size.patch b/patches/server/0225-Configurable-phantom-size.patch similarity index 100% rename from patches/server/0226-Configurable-phantom-size.patch rename to patches/server/0225-Configurable-phantom-size.patch diff --git a/patches/server/0227-Max-joins-per-second.patch b/patches/server/0226-Max-joins-per-second.patch similarity index 100% rename from patches/server/0227-Max-joins-per-second.patch rename to patches/server/0226-Max-joins-per-second.patch diff --git a/patches/server/0228-Configurable-minimum-demand-for-trades.patch b/patches/server/0227-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0228-Configurable-minimum-demand-for-trades.patch rename to patches/server/0227-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0229-Lobotomize-stuck-villagers.patch b/patches/server/0228-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0229-Lobotomize-stuck-villagers.patch rename to patches/server/0228-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0230-Option-for-villager-display-trade-item.patch b/patches/server/0229-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0230-Option-for-villager-display-trade-item.patch rename to patches/server/0229-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch similarity index 97% rename from patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch index 739d3c86f..f4950c805 100644 --- a/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch @@ -25,7 +25,7 @@ index 24f002e44a7a485026a814c898b8569998805da8..580e01281f27a4cd1d3a243a7d4791b8 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index d08f86f2122441d661e7693ad7dcb9854921a767..8d83832ef4bdc452c944101985c4b61cfcef0f08 100644 +index 1a8a76aa31bd1d1670be6e9cada162c540084cf9..b452ebbe11145987fb5e66b39993898457322080 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -505,7 +505,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0233-Anvil-repair-damage-options.patch b/patches/server/0232-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0233-Anvil-repair-damage-options.patch rename to patches/server/0232-Anvil-repair-damage-options.patch diff --git a/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch similarity index 97% rename from patches/server/0235-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0234-Add-toggle-for-enchant-level-clamping.patch index 9cb8ac823..9aa52f004 100644 --- a/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 6cc31102f17ee19d9f2163a6aa5cf7bfe9ba3ff5..d6e9711256af439b2f2b86452332faec255e9b91 100644 +index fb614432722ea27cd044d6cfd3c6a72f797979f1..39d5e156b129bfceae1f28dcdee4bcf6f7537099 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1220,6 +1220,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0236-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0235-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0236-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0235-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0238-Stonecutter-damage.patch b/patches/server/0237-Stonecutter-damage.patch similarity index 100% rename from patches/server/0238-Stonecutter-damage.patch rename to patches/server/0237-Stonecutter-damage.patch diff --git a/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0240-Add-config-for-snow-on-blue-ice.patch b/patches/server/0239-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0240-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0239-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0241-Skeletons-eat-wither-roses.patch b/patches/server/0240-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0241-Skeletons-eat-wither-roses.patch rename to patches/server/0240-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0242-Enchantment-Table-Persists-Lapis.patch b/patches/server/0241-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0242-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0241-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0243-Spark-Profiler.patch b/patches/server/0242-Spark-Profiler.patch similarity index 100% rename from patches/server/0243-Spark-Profiler.patch rename to patches/server/0242-Spark-Profiler.patch diff --git a/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0246-Config-to-not-let-coral-die.patch b/patches/server/0245-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0246-Config-to-not-let-coral-die.patch rename to patches/server/0245-Config-to-not-let-coral-die.patch diff --git a/patches/server/0247-Add-local-difficulty-api.patch b/patches/server/0246-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0247-Add-local-difficulty-api.patch rename to patches/server/0246-Add-local-difficulty-api.patch diff --git a/patches/server/0248-Add-toggle-for-RNG-manipulation.patch b/patches/server/0247-Add-toggle-for-RNG-manipulation.patch similarity index 100% rename from patches/server/0248-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0247-Add-toggle-for-RNG-manipulation.patch diff --git a/patches/server/0249-Remove-Timings.patch b/patches/server/0248-Remove-Timings.patch similarity index 100% rename from patches/server/0249-Remove-Timings.patch rename to patches/server/0248-Remove-Timings.patch diff --git a/patches/server/0250-Remove-Mojang-Profiler.patch b/patches/server/0249-Remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0250-Remove-Mojang-Profiler.patch rename to patches/server/0249-Remove-Mojang-Profiler.patch diff --git a/patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0250-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0250-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0252-Add-Bee-API.patch b/patches/server/0251-Add-Bee-API.patch similarity index 100% rename from patches/server/0252-Add-Bee-API.patch rename to patches/server/0251-Add-Bee-API.patch diff --git a/patches/server/0253-Debug-Marker-API.patch b/patches/server/0252-Debug-Marker-API.patch similarity index 100% rename from patches/server/0253-Debug-Marker-API.patch rename to patches/server/0252-Debug-Marker-API.patch diff --git a/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0255-Add-skeleton-bow-accuracy-option.patch b/patches/server/0254-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0255-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0254-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0256-Add-death-screen-API.patch b/patches/server/0255-Add-death-screen-API.patch similarity index 100% rename from patches/server/0256-Add-death-screen-API.patch rename to patches/server/0255-Add-death-screen-API.patch diff --git a/patches/server/0257-Implement-ram-and-rambar-commands.patch b/patches/server/0256-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0257-Implement-ram-and-rambar-commands.patch rename to patches/server/0256-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0258-Configurable-block-blast-resistance.patch b/patches/server/0257-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0258-Configurable-block-blast-resistance.patch rename to patches/server/0257-Configurable-block-blast-resistance.patch diff --git a/patches/server/0259-Configurable-block-fall-damage-modifiers.patch b/patches/server/0258-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0259-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0258-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0260-Language-API.patch b/patches/server/0259-Language-API.patch similarity index 100% rename from patches/server/0260-Language-API.patch rename to patches/server/0259-Language-API.patch diff --git a/patches/server/0261-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch similarity index 100% rename from patches/server/0261-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0260-Milk-Keeps-Beneficial-Effects.patch diff --git a/patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0263-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0263-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0262-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0265-Fire-Immunity-API.patch b/patches/server/0264-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0265-Fire-Immunity-API.patch rename to patches/server/0264-Fire-Immunity-API.patch diff --git a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 100% rename from patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch diff --git a/patches/server/0267-Added-got-ram-event.patch b/patches/server/0266-Added-got-ram-event.patch similarity index 100% rename from patches/server/0267-Added-got-ram-event.patch rename to patches/server/0266-Added-got-ram-event.patch diff --git a/patches/server/0268-Log-skipped-entity-s-position.patch b/patches/server/0267-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0268-Log-skipped-entity-s-position.patch rename to patches/server/0267-Log-skipped-entity-s-position.patch diff --git a/patches/server/0269-End-Crystal-Cramming.patch b/patches/server/0268-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0269-End-Crystal-Cramming.patch rename to patches/server/0268-End-Crystal-Cramming.patch diff --git a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch similarity index 100% rename from patches/server/0272-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0271-Config-to-remove-explosion-radius-clamp.patch diff --git a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0274-Add-PreExplodeEvents.patch b/patches/server/0273-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0274-Add-PreExplodeEvents.patch rename to patches/server/0273-Add-PreExplodeEvents.patch diff --git a/patches/server/0275-Improve-output-of-plugins-command.patch b/patches/server/0274-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0275-Improve-output-of-plugins-command.patch rename to patches/server/0274-Improve-output-of-plugins-command.patch diff --git a/patches/server/0276-Add-mending-multiplier.patch b/patches/server/0275-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0276-Add-mending-multiplier.patch rename to patches/server/0275-Add-mending-multiplier.patch diff --git a/patches/server/0277-Make-GUI-Great-Again.patch b/patches/server/0276-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0277-Make-GUI-Great-Again.patch rename to patches/server/0276-Make-GUI-Great-Again.patch diff --git a/patches/server/0278-Stored-Bee-API.patch b/patches/server/0277-Stored-Bee-API.patch similarity index 100% rename from patches/server/0278-Stored-Bee-API.patch rename to patches/server/0277-Stored-Bee-API.patch diff --git a/patches/server/0279-Shears-can-defuse-TNT.patch b/patches/server/0278-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0279-Shears-can-defuse-TNT.patch rename to patches/server/0278-Shears-can-defuse-TNT.patch diff --git a/patches/server/0280-Explorer-Map-API.patch b/patches/server/0279-Explorer-Map-API.patch similarity index 100% rename from patches/server/0280-Explorer-Map-API.patch rename to patches/server/0279-Explorer-Map-API.patch diff --git a/patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0284-place-end-crystal-on-any-block.patch b/patches/server/0283-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0284-place-end-crystal-on-any-block.patch rename to patches/server/0283-place-end-crystal-on-any-block.patch diff --git a/patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0286-register-minecraft-debug-commands.patch b/patches/server/0285-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0286-register-minecraft-debug-commands.patch rename to patches/server/0285-register-minecraft-debug-commands.patch diff --git a/patches/server/0287-Configurable-villager-search-radius.patch b/patches/server/0286-Configurable-villager-search-radius.patch similarity index 100% rename from patches/server/0287-Configurable-villager-search-radius.patch rename to patches/server/0286-Configurable-villager-search-radius.patch From 989502454acc252340931393546a49a51bfb462c Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 02:46:49 -0700 Subject: [PATCH 116/148] handle TODOs --- patches/server/0112-Implement-TPSBar.patch | 14 +++- .../server/0121-Fix-stuck-in-portals.patch | 4 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 4 +- ...0155-Configurable-broadcast-settings.patch | 4 +- ...omizable-sleeping-actionbar-messages.patch | 4 +- ...e-shulker-box-items-from-dropping-co.patch | 12 ++-- patches/server/0188-Add-compass-command.patch | 11 ++- ...dd-toggle-for-enchant-level-clamping.patch | 72 +++++++++++++------ ...56-Implement-ram-and-rambar-commands.patch | 12 ++-- ...bute-clamping-and-armor-limit-config.patch | 13 ++-- ...lways-showing-item-in-player-death-m.patch | 4 +- ...85-register-minecraft-debug-commands.patch | 21 +++--- 12 files changed, 107 insertions(+), 68 deletions(-) diff --git a/patches/server/0112-Implement-TPSBar.patch b/patches/server/0112-Implement-TPSBar.patch index 24bf45060..4acc2bb9a 100644 --- a/patches/server/0112-Implement-TPSBar.patch +++ b/patches/server/0112-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index 6d47aa73788eef78aa6714384db879b4e907de9b..8a132fcdeb620d2e7f1c0c8b9e592ff2 } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..4077269113e6f2369194e2372d415f2f6737317c 100644 +index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..07d08bc8d95025fda0859c84b9ea84fe6870d004 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -299,6 +299,7 @@ public class ServerPlayer extends Player { @@ -52,7 +52,15 @@ index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..4077269113e6f2369194e2372d415f2f // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -685,6 +686,7 @@ public class ServerPlayer extends Player { +@@ -609,6 +610,7 @@ public class ServerPlayer extends Player { + }); + } + ++ if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur + } + + @Override +@@ -685,6 +687,7 @@ public class ServerPlayer extends Player { }); } @@ -60,7 +68,7 @@ index fe250c154aed8b10e33c6b916cabedb0dda3d5d6..4077269113e6f2369194e2372d415f2f } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2986,5 +2988,13 @@ public class ServerPlayer extends Player { +@@ -2986,5 +2989,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } diff --git a/patches/server/0121-Fix-stuck-in-portals.patch b/patches/server/0121-Fix-stuck-in-portals.patch index 0bf84b60f..705472d25 100644 --- a/patches/server/0121-Fix-stuck-in-portals.patch +++ b/patches/server/0121-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4077269113e6f2369194e2372d415f2f6737317c..c8f5c10952a8bf09a09604e76f7e3cc66a262b77 100644 +index 07d08bc8d95025fda0859c84b9ea84fe6870d004..146c2e46e0fb9a9358484a054f716d72b9750ed8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1347,6 +1347,7 @@ public class ServerPlayer extends Player { +@@ -1348,6 +1348,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); diff --git a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch index 73b423792..359004bef 100644 --- a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c8f5c10952a8bf09a09604e76f7e3cc66a262b77..0da3b7bb3b597002b5e4bbc9d892a8bf4d2d6ccb 100644 +index 146c2e46e0fb9a9358484a054f716d72b9750ed8..c9458551b1da419f484e9dce6b3fba8d79c2de79 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1504,7 +1504,7 @@ public class ServerPlayer extends Player { +@@ -1505,7 +1505,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/server/0155-Configurable-broadcast-settings.patch b/patches/server/0155-Configurable-broadcast-settings.patch index 9234afddf..d862cbbd8 100644 --- a/patches/server/0155-Configurable-broadcast-settings.patch +++ b/patches/server/0155-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index 94893039363b5fe2d7d0622d0592bce2c867b1c3..ef520d1dd00ae9473c1f34e2df4d8b06 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0da3b7bb3b597002b5e4bbc9d892a8bf4d2d6ccb..65d6ca59fca1ece4c2867bc297c926e3c480cc06 100644 +index c9458551b1da419f484e9dce6b3fba8d79c2de79..2b10087cf34be4c36d8596d0263d68476bb1a521 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1088,6 +1088,7 @@ public class ServerPlayer extends Player { +@@ -1089,6 +1089,7 @@ public class ServerPlayer extends Player { })); PlayerTeam scoreboardteam = this.getTeam(); diff --git a/patches/server/0183-Customizable-sleeping-actionbar-messages.patch b/patches/server/0183-Customizable-sleeping-actionbar-messages.patch index 684fc8e4f..84c576f77 100644 --- a/patches/server/0183-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0183-Customizable-sleeping-actionbar-messages.patch @@ -38,10 +38,10 @@ index 1dc58b41d3963c2adc58e79cd6db7e146ac049ad..83ec2e31d81d6209953252a3780552c3 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 65d6ca59fca1ece4c2867bc297c926e3c480cc06..2480f449d8ceeb9ac6ef55163d8e649271f5c1c0 100644 +index 2b10087cf34be4c36d8596d0263d68476bb1a521..7bb82c9b652a509c2bf1a43ed82a5da709fb2cb2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1545,7 +1545,19 @@ public class ServerPlayer extends Player { +@@ -1546,7 +1546,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch index 17296340e..8bab2b5ab 100644 --- a/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -6,7 +6,7 @@ Subject: [PATCH] option to disable shulker box items from dropping contents diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..f713734efaad4312be270d808e79f0e562c84466 100644 +index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..167a8f6fb2354151d5e16aaa6f268f8a536c0a55 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java @@ -28,6 +28,7 @@ import net.minecraft.world.level.block.ShulkerBoxBlock; @@ -17,14 +17,14 @@ index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..f713734efaad4312be270d808e79f0e5 import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.shapes.CollisionContext; -@@ -256,6 +257,7 @@ public class BlockItem extends Item { - - @Override - public void onDestroyed(ItemEntity entity) { -+ //entity.level().purpurConfig.shulkerBoxItemDropContentsWhenDestroyed // Purpur - TODO: shulkerBoxItemDropContentsWhenDestroyed +@@ -259,6 +260,7 @@ public class BlockItem extends Item { ItemContainerContents itemcontainercontents = (ItemContainerContents) entity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemcontainercontents != null) { ++ if (entity.level().purpurConfig.shulkerBoxItemDropContentsWhenDestroyed && entity.getItem().is(Items.SHULKER_BOX)) // Purpur + ItemUtils.onContainerDestroyed(entity, itemcontainercontents.nonEmptyItemsCopy()); + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index c0bd8bc3a11bfc5120c768cbf3e45efaf52ea6c5..604155c1c99d9f28e5efb60ee9d25cd8af274359 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0188-Add-compass-command.patch b/patches/server/0188-Add-compass-command.patch index d94010b9b..8023c4d54 100644 --- a/patches/server/0188-Add-compass-command.patch +++ b/patches/server/0188-Add-compass-command.patch @@ -17,7 +17,7 @@ index 26c9254cef922a78deac3053f93c60037f19d31f..67ec90a2a05269a5912b3c8e64d6d416 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2480f449d8ceeb9ac6ef55163d8e649271f5c1c0..120a42a6057a9639b66be39099715a8bad1e06b5 100644 +index 7bb82c9b652a509c2bf1a43ed82a5da709fb2cb2..e9d9cb47221075447aac66dd30ce6e8f08962cf5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -300,6 +300,7 @@ public class ServerPlayer extends Player { @@ -28,16 +28,15 @@ index 2480f449d8ceeb9ac6ef55163d8e649271f5c1c0..120a42a6057a9639b66be39099715a8b // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -610,6 +611,8 @@ public class ServerPlayer extends Player { - }); +@@ -611,6 +612,7 @@ public class ServerPlayer extends Player { } -+ if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur - TODO: move back up + if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur + if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur } @Override -@@ -687,6 +690,7 @@ public class ServerPlayer extends Player { +@@ -688,6 +690,7 @@ public class ServerPlayer extends Player { } nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur @@ -45,7 +44,7 @@ index 2480f449d8ceeb9ac6ef55163d8e649271f5c1c0..120a42a6057a9639b66be39099715a8b } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -3010,5 +3014,13 @@ public class ServerPlayer extends Player { +@@ -3011,5 +3014,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch index 9aa52f004..58a27803e 100644 --- a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch @@ -4,29 +4,59 @@ Date: Sat, 30 Apr 2022 10:32:40 +0200 Subject: [PATCH] Add toggle for enchant level clamping -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fb614432722ea27cd044d6cfd3c6a72f797979f1..39d5e156b129bfceae1f28dcdee4bcf6f7537099 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1220,6 +1220,7 @@ public final class ItemStack implements DataComponentHolder { +diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java +index 5443013060b62e3bfcc51cddca96d1c0bc59fe72..8925440dbc35dbc4a7d59f13511d7afeda803260 100644 +--- a/src/main/java/net/minecraft/server/Main.java ++++ b/src/main/java/net/minecraft/server/Main.java +@@ -119,6 +119,11 @@ public class Main { + JvmProfiler.INSTANCE.start(Environment.SERVER); + } - public void enchant(Enchantment enchantment, int level) { - EnchantmentHelper.updateEnchantments(this, (itemenchantments_a) -> { -+ //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option - itemenchantments_a.upgrade(enchantment, level); - }); - } -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 6d0363cec691996be416ab22ef9d825196399158..96a402b8c5bf083c6120950eacf7970226972b8b 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -35,6 +35,7 @@ public class EnchantmentHelper { ++ // Purpur start - load config files early ++ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); ++ org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels"); ++ // Purpur end - load config files early ++ + io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper + Bootstrap.bootStrap(); + Bootstrap.validate(); +diff --git a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java +index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe13157ff09 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java +@@ -37,7 +37,7 @@ public class ItemEnchantments implements TooltipProvider { + public static final ItemEnchantments EMPTY = new ItemEnchantments(new Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), true); + // Paper end + public static final int MAX_LEVEL = 255; +- private static final Codec LEVEL_CODEC = Codec.intRange(0, 255); ++ private static final Codec LEVEL_CODEC = Codec.intRange(0, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)); // Purpur + private static final Codec>> LEVELS_CODEC = Codec.unboundedMap( // Paper + BuiltInRegistries.ENCHANTMENT.holderByNameCodec(), LEVEL_CODEC + ) +@@ -72,7 +72,7 @@ public class ItemEnchantments implements TooltipProvider { - public static int getItemEnchantmentLevel(Enchantment enchantment, ItemStack stack) { - ItemEnchantments itemEnchantments = stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); -+ //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option - return itemEnchantments.getLevel(enchantment); - } + for (Entry> entry : enchantments.object2IntEntrySet()) { + int i = entry.getIntValue(); +- if (i < 0 || i > 255) { ++ if (i < 0 || i > (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)) { // Purpur + throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + i); + } + } +@@ -169,13 +169,13 @@ public class ItemEnchantments implements TooltipProvider { + if (level <= 0) { + this.enchantments.removeInt(enchantment.builtInRegistryHolder()); + } else { +- this.enchantments.put(enchantment.builtInRegistryHolder(), Math.min(level, 255)); ++ this.enchantments.put(enchantment.builtInRegistryHolder(), Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767))); + } + } + + public void upgrade(Enchantment enchantment, int level) { + if (level > 0) { +- this.enchantments.merge(enchantment.builtInRegistryHolder(), Math.min(level, 255), Integer::max); ++ this.enchantments.merge(enchantment.builtInRegistryHolder(), Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)), Integer::max); + } + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index f0c3566e6b03c88c0cb53a90d44627d0967d13eb..c5dd0979f5bce259b920c47d974f2bf6b805c045 100644 diff --git a/patches/server/0256-Implement-ram-and-rambar-commands.patch b/patches/server/0256-Implement-ram-and-rambar-commands.patch index cf56b373c..3054c6fa9 100644 --- a/patches/server/0256-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0256-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index d3c42c19a051fb3a670e541fc746b55717192a91..13dfb3e506d50c0b191baf5d05bbfc28 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 24009a27151288fd0f37379732d42a3077fe6d66..2c805bcd63ef5f6d4b3df33fc25f98d05f0972f9 100644 +index 826b7e2bb897609a084555632f691ddb38882058..42a623254bd2886d09eb0cfeb01dd12d0dda19cf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -301,6 +301,7 @@ public class ServerPlayer extends Player { @@ -29,14 +29,14 @@ index 24009a27151288fd0f37379732d42a3077fe6d66..2c805bcd63ef5f6d4b3df33fc25f98d0 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -611,6 +612,7 @@ public class ServerPlayer extends Player { - }); - } +@@ -613,6 +614,7 @@ public class ServerPlayer extends Player { -+ if (nbt.contains("Purpur.RamBar")) { this.ramBar = nbt.getBoolean("Purpur.RamBar"); } // Purpur - if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur - TODO: move back up + if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur ++ if (nbt.contains("Purpur.RamBar")) { this.ramBar = nbt.getBoolean("Purpur.RamBar"); } // Purpur } + + @Override @@ -689,6 +691,7 @@ public class ServerPlayer extends Player { }); } diff --git a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch index 96434dfed..d993074b2 100644 --- a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch @@ -27,25 +27,30 @@ index ddc880ac0c8378bc1132be5deba746c1484c941c..7a8e4b9a9f2e1e5a9c38ad330c75df1f } } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..0ed72ec09443de7b62a5320841202b683a393314 100644 +index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8d1723c78 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/RangedAttribute.java @@ -29,6 +29,7 @@ public class RangedAttribute extends Attribute { @Override public double sanitizeValue(double value) { -+ //if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur // Purpur - TODO: fix clamp enchant levels option ++ if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1a5133d07b3da44b54e560320d0c7461250cd4d1..c895adeef1dcf3d16eb966233dd3a593eda314a8 100644 +index 1a5133d07b3da44b54e560320d0c7461250cd4d1..91bbd0ff7e67fffcfa206fcde3008d6a8e70170f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -480,6 +480,11 @@ public class PurpurConfig { +@@ -480,6 +480,16 @@ public class PurpurConfig { usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } ++ public static boolean clampAttributes = true; ++ private static void clampAttributes() { ++ clampAttributes = getBoolean("settings.clamp-attributes", clampAttributes); ++ } ++ + public static boolean limitArmor = true; + private static void limitArmor() { + limitArmor = getBoolean("settings.limit-armor", limitArmor); diff --git a/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch index 9dd75b366..c6b4b5860 100644 --- a/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,10 +31,10 @@ index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb900 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c895adeef1dcf3d16eb966233dd3a593eda314a8..395ff2bb672c972ce2fd1cd5dc66f30b64222f0a 100644 +index 91bbd0ff7e67fffcfa206fcde3008d6a8e70170f..1a7967981e03fc2bb4f278008d0e8ed52b343e95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -545,4 +545,9 @@ public class PurpurConfig { +@@ -550,4 +550,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/server/0285-register-minecraft-debug-commands.patch b/patches/server/0285-register-minecraft-debug-commands.patch index af0a5658b..6e9a92299 100644 --- a/patches/server/0285-register-minecraft-debug-commands.patch +++ b/patches/server/0285-register-minecraft-debug-commands.patch @@ -20,25 +20,22 @@ index 13dfb3e506d50c0b191baf5d05bbfc28c20be0ae..f9d0e8ee9414b3897f268ba78a1469dd RaidCommand.register(this.dispatcher, commandRegistryAccess); DebugPathCommand.register(this.dispatcher); diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 5443013060b62e3bfcc51cddca96d1c0bc59fe72..868932a170c3052e49dc69c2e8eb3ac9c405b45f 100644 +index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4300a41d1 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -133,6 +133,10 @@ public class Main { - // Paper start - load config files early for access below if needed - org.bukkit.configuration.file.YamlConfiguration bukkitConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("bukkit-settings")); - org.bukkit.configuration.file.YamlConfiguration spigotConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("spigot-settings")); -+ // Purpur start -+ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); +@@ -122,6 +122,7 @@ public class Main { + // Purpur start - load config files early + org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); + org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels"); + org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands = purpurConfiguration.getBoolean("settings.register-minecraft-debug-commands"); -+ // Purpur end - // Paper end - load config files early for access below if needed + // Purpur end - load config files early - if (optionset.has("initSettings")) { // CraftBukkit + io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 395ff2bb672c972ce2fd1cd5dc66f30b64222f0a..eab357f5eb221fd1e2b64cf7a9635e1954a9fdc7 100644 +index 1a7967981e03fc2bb4f278008d0e8ed52b343e95..53188a65cf8f360abc83129ddef039ae6af0ce47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -550,4 +550,9 @@ public class PurpurConfig { +@@ -555,4 +555,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } From fa3017b78e54487ecdb338005f4d0400d12594ef Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 02:50:39 -0700 Subject: [PATCH 117/148] reorganize unapplied patches --- .../0211-Config-for-grindstones.patch | 0 .../0263-Allay-respect-item-NBT.patch | 1 + 2 files changed, 1 insertion(+) rename patches/{dropped-server => unapplied-server}/0211-Config-for-grindstones.patch (100%) rename patches/{dropped-server => unapplied-server}/0263-Allay-respect-item-NBT.patch (98%) diff --git a/patches/dropped-server/0211-Config-for-grindstones.patch b/patches/unapplied-server/0211-Config-for-grindstones.patch similarity index 100% rename from patches/dropped-server/0211-Config-for-grindstones.patch rename to patches/unapplied-server/0211-Config-for-grindstones.patch diff --git a/patches/dropped-server/0263-Allay-respect-item-NBT.patch b/patches/unapplied-server/0263-Allay-respect-item-NBT.patch similarity index 98% rename from patches/dropped-server/0263-Allay-respect-item-NBT.patch rename to patches/unapplied-server/0263-Allay-respect-item-NBT.patch index c209860d2..4e5e97b5e 100644 --- a/patches/dropped-server/0263-Allay-respect-item-NBT.patch +++ b/patches/unapplied-server/0263-Allay-respect-item-NBT.patch @@ -3,6 +3,7 @@ From: BillyGalbreath Date: Tue, 20 Sep 2022 17:56:21 -0500 Subject: [PATCH] Allay respect item NBT +https://github.com/PurpurMC/Purpur/discussions/1127 diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java index bca7b7192debb3a34a08047010a2438e7b7e2a78..53765198483e137d411e227119e4f912964aefe3 100644 From 2c5e3081107587d9eaa57865066e44effcc72dc6 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 10:05:01 -0700 Subject: [PATCH 118/148] re-add bee count patch --- ...ounts-in-beehives-to-Purpur-clients.patch} | 139 +++++++++++------- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 0 ...ng.patch => 0225-Allow-void-trading.patch} | 0 ...h => 0226-Configurable-phantom-size.patch} | 0 ....patch => 0227-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 0 ... => 0229-Lobotomize-stuck-villagers.patch} | 0 ...ion-for-villager-display-trade-item.patch} | 0 ...wner-not-spawning-water-animals-cor.patch} | 0 ...ig-for-mob-last-hurt-by-player-time.patch} | 0 ...=> 0233-Anvil-repair-damage-options.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 0 ...ge.patch => 0238-Stonecutter-damage.patch} | 2 +- ...le-damage-settings-for-magma-blocks.patch} | 0 ...240-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0241-Skeletons-eat-wither-roses.patch} | 0 ...42-Enchantment-Table-Persists-Lapis.patch} | 0 ...ofiler.patch => 0243-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 4 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0246-Config-to-not-let-coral-die.patch} | 0 ...ch => 0247-Add-local-difficulty-api.patch} | 0 ...248-Add-toggle-for-RNG-manipulation.patch} | 0 ...imings.patch => 0249-Remove-Timings.patch} | 28 ++-- ...atch => 0250-Remove-Mojang-Profiler.patch} | 42 +++--- ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0252-Add-Bee-API.patch} | 0 ...-API.patch => 0253-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 0 ...55-Add-skeleton-bow-accuracy-option.patch} | 0 ....patch => 0256-Add-death-screen-API.patch} | 0 ...7-Implement-ram-and-rambar-commands.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 4 +- ...uage-API.patch => 0260-Language-API.patch} | 0 ... 0261-Milk-Keeps-Beneficial-Effects.patch} | 0 ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 4 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0265-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 0 ...t.patch => 0267-Added-got-ram-event.patch} | 0 ... 0268-Log-skipped-entity-s-position.patch} | 0 ....patch => 0269-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 4 +- ...ig-to-remove-explosion-radius-clamp.patch} | 0 ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0274-Add-PreExplodeEvents.patch} | 0 ...5-Improve-output-of-plugins-command.patch} | 0 ...atch => 0276-Add-mending-multiplier.patch} | 0 ....patch => 0277-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0278-Stored-Bee-API.patch} | 0 ...patch => 0279-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0280-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 4 +- ...0284-place-end-crystal-on-any-block.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...6-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 0 66 files changed, 142 insertions(+), 107 deletions(-) rename patches/{unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch => server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (52%) rename patches/server/{0222-Configurable-farmland-trample-height.patch => 0223-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0223-Configurable-player-pickup-exp-delay.patch => 0224-Configurable-player-pickup-exp-delay.patch} (100%) rename patches/server/{0224-Allow-void-trading.patch => 0225-Allow-void-trading.patch} (100%) rename patches/server/{0225-Configurable-phantom-size.patch => 0226-Configurable-phantom-size.patch} (100%) rename patches/server/{0226-Max-joins-per-second.patch => 0227-Max-joins-per-second.patch} (94%) rename patches/server/{0227-Configurable-minimum-demand-for-trades.patch => 0228-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0228-Lobotomize-stuck-villagers.patch => 0229-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0229-Option-for-villager-display-trade-item.patch => 0230-Option-for-villager-display-trade-item.patch} (100%) rename patches/server/{0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (100%) rename patches/server/{0231-Config-for-mob-last-hurt-by-player-time.patch => 0232-Config-for-mob-last-hurt-by-player-time.patch} (100%) rename patches/server/{0232-Anvil-repair-damage-options.patch => 0233-Anvil-repair-damage-options.patch} (100%) rename patches/server/{0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0234-Add-toggle-for-enchant-level-clamping.patch => 0235-Add-toggle-for-enchant-level-clamping.patch} (98%) rename patches/server/{0235-Skip-junit-tests-for-purpur-commands.patch => 0236-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0236-Implement-configurable-search-radius-for-villagers-t.patch => 0237-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0237-Stonecutter-damage.patch => 0238-Stonecutter-damage.patch} (98%) rename patches/server/{0238-Configurable-damage-settings-for-magma-blocks.patch => 0239-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0239-Add-config-for-snow-on-blue-ice.patch => 0240-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0240-Skeletons-eat-wither-roses.patch => 0241-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0241-Enchantment-Table-Persists-Lapis.patch => 0242-Enchantment-Table-Persists-Lapis.patch} (100%) rename patches/server/{0242-Spark-Profiler.patch => 0243-Spark-Profiler.patch} (100%) rename patches/server/{0243-Option-to-disable-kick-for-out-of-order-chat.patch => 0244-Option-to-disable-kick-for-out-of-order-chat.patch} (92%) rename patches/server/{0244-Config-for-sculk-shrieker-can_summon-state.patch => 0245-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0245-Config-to-not-let-coral-die.patch => 0246-Config-to-not-let-coral-die.patch} (100%) rename patches/server/{0246-Add-local-difficulty-api.patch => 0247-Add-local-difficulty-api.patch} (100%) rename patches/server/{0247-Add-toggle-for-RNG-manipulation.patch => 0248-Add-toggle-for-RNG-manipulation.patch} (100%) rename patches/server/{0248-Remove-Timings.patch => 0249-Remove-Timings.patch} (98%) rename patches/server/{0249-Remove-Mojang-Profiler.patch => 0250-Remove-Mojang-Profiler.patch} (98%) rename patches/server/{0250-Add-more-logger-output-for-invalid-movement-kicks.patch => 0251-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0251-Add-Bee-API.patch => 0252-Add-Bee-API.patch} (100%) rename patches/server/{0252-Debug-Marker-API.patch => 0253-Debug-Marker-API.patch} (100%) rename patches/server/{0253-mob-spawning-option-to-ignore-creative-players.patch => 0254-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0254-Add-skeleton-bow-accuracy-option.patch => 0255-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0255-Add-death-screen-API.patch => 0256-Add-death-screen-API.patch} (100%) rename patches/server/{0256-Implement-ram-and-rambar-commands.patch => 0257-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0257-Configurable-block-blast-resistance.patch => 0258-Configurable-block-blast-resistance.patch} (94%) rename patches/server/{0258-Configurable-block-fall-damage-modifiers.patch => 0259-Configurable-block-fall-damage-modifiers.patch} (97%) rename patches/server/{0259-Language-API.patch => 0260-Language-API.patch} (100%) rename patches/server/{0260-Milk-Keeps-Beneficial-Effects.patch => 0261-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0262-Add-log-suppression-for-LibraryLoader.patch => 0263-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/server/{0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0264-Fire-Immunity-API.patch => 0265-Fire-Immunity-API.patch} (100%) rename patches/server/{0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0266-Added-got-ram-event.patch => 0267-Added-got-ram-event.patch} (100%) rename patches/server/{0267-Log-skipped-entity-s-position.patch => 0268-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0268-End-Crystal-Cramming.patch => 0269-End-Crystal-Cramming.patch} (100%) rename patches/server/{0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0270-Add-attribute-clamping-and-armor-limit-config.patch => 0271-Add-attribute-clamping-and-armor-limit-config.patch} (95%) rename patches/server/{0271-Config-to-remove-explosion-radius-clamp.patch => 0272-Config-to-remove-explosion-radius-clamp.patch} (100%) rename patches/server/{0272-bonemealable-sugarcane-cactus-and-netherwart.patch => 0273-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0273-Add-PreExplodeEvents.patch => 0274-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0274-Improve-output-of-plugins-command.patch => 0275-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0275-Add-mending-multiplier.patch => 0276-Add-mending-multiplier.patch} (100%) rename patches/server/{0276-Make-GUI-Great-Again.patch => 0277-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0277-Stored-Bee-API.patch => 0278-Stored-Bee-API.patch} (100%) rename patches/server/{0278-Shears-can-defuse-TNT.patch => 0279-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0279-Explorer-Map-API.patch => 0280-Explorer-Map-API.patch} (100%) rename patches/server/{0280-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0281-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0282-Add-option-for-always-showing-item-in-player-death-m.patch => 0283-Add-option-for-always-showing-item-in-player-death-m.patch} (95%) rename patches/server/{0283-place-end-crystal-on-any-block.patch => 0284-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0284-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0285-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0285-register-minecraft-debug-commands.patch => 0286-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0286-Configurable-villager-search-radius.patch => 0287-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 52% rename from patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 39d510ede..527eeff3c 100644 --- a/patches/unapplied-server/0228-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,10 +29,10 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644 +index a34c44ba770ded446b7969a31d3d05016717c13b..e50954e35116ea60b68ae00191771f8d9f78b45d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -434,6 +434,11 @@ public class PurpurConfig { +@@ -418,6 +418,11 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } @@ -44,23 +44,81 @@ index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f746 public static boolean loggerSuppressInitLegacyMaterialError = false; public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; -diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +diff --git a/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java new file mode 100644 -index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409faab8b62e +index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be5577aeef071 --- /dev/null -+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java -@@ -0,0 +1,96 @@ -+package org.purpurmc.purpur.task; ++++ b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java +@@ -0,0 +1,27 @@ ++package org.purpurmc.purpur.network; + -+import com.google.common.io.ByteArrayDataInput; -+import com.google.common.io.ByteArrayDataOutput; -+import com.google.common.io.ByteStreams; -+import io.netty.buffer.Unpooled; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; -+import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; ++import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; ++import org.jetbrains.annotations.NotNull; ++ ++public record ClientboundBeehivePayload(BlockPos pos, int numOfBees) implements CustomPacketPayload { ++ public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ClientboundBeehivePayload::write, ClientboundBeehivePayload::new); ++ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_s2c")); ++ ++ public ClientboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { ++ this(friendlyByteBuf.readBlockPos(), friendlyByteBuf.readInt()); ++ } ++ ++ private void write(FriendlyByteBuf friendlyByteBuf) { ++ friendlyByteBuf.writeBlockPos(this.pos); ++ friendlyByteBuf.writeInt(this.numOfBees); ++ } ++ ++ @Override ++ public @NotNull Type type() { ++ return TYPE; ++ } ++} +diff --git a/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java +new file mode 100644 +index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d7194a54d +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java +@@ -0,0 +1,26 @@ ++package org.purpurmc.purpur.network; ++ ++import net.minecraft.core.BlockPos; ++import net.minecraft.network.FriendlyByteBuf; ++import net.minecraft.network.codec.StreamCodec; ++import net.minecraft.network.protocol.common.custom.CustomPacketPayload; ++import net.minecraft.resources.ResourceLocation; ++import org.jetbrains.annotations.NotNull; ++ ++public record ServerboundBeehivePayload(BlockPos pos) implements CustomPacketPayload { ++ public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ServerboundBeehivePayload::write, ServerboundBeehivePayload::new); ++ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_c2s")); ++ ++ public ServerboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { ++ this(friendlyByteBuf.readBlockPos()); ++ } ++ ++ private void write(FriendlyByteBuf friendlyByteBuf) { ++ friendlyByteBuf.writeBlockPos(this.pos); ++ } ++ ++ @Override ++ public @NotNull Type type() { ++ return TYPE; ++ } ++} +diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +new file mode 100644 +index 0000000000000000000000000000000000000000..e20fa234520c42e4d32a2a634fc0a2938904f983 +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java +@@ -0,0 +1,66 @@ ++package org.purpurmc.purpur.task; ++ ++import io.netty.buffer.Unpooled; ++import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntity; @@ -71,10 +129,10 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f +import org.bukkit.plugin.PluginBase; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jetbrains.annotations.NotNull; ++import org.purpurmc.purpur.network.ClientboundBeehivePayload; ++import org.purpurmc.purpur.network.ServerboundBeehivePayload; + +public class BeehiveTask implements PluginMessageListener { -+ public static final ResourceLocation BEEHIVE_C2S = new ResourceLocation("purpur", "beehive_c2s"); -+ public static final ResourceLocation BEEHIVE_S2C = new ResourceLocation("purpur", "beehive_s2c"); + + private static BeehiveTask instance; + @@ -91,58 +149,35 @@ index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409f + } + + public void register() { -+ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString()); -+ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString(), this); ++ Bukkit.getMessenger().registerOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString()); ++ Bukkit.getMessenger().registerIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString(), this); + } + + public void unregister() { -+ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, BEEHIVE_S2C.toString()); -+ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, BEEHIVE_C2S.toString()); ++ Bukkit.getMessenger().unregisterOutgoingPluginChannel(this.plugin, ClientboundBeehivePayload.TYPE.id().toString()); ++ Bukkit.getMessenger().unregisterIncomingPluginChannel(this.plugin, ServerboundBeehivePayload.TYPE.id().toString()); + } + + @Override -+ public void onPluginMessageReceived(@NotNull String channel, Player player, byte[] bytes) { -+ ByteArrayDataInput in = in(bytes); -+ long packedPos = in.readLong(); -+ BlockPos pos = BlockPos.of(packedPos); ++ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] bytes) { ++ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.copiedBuffer(bytes)); ++ ServerboundBeehivePayload payload = ServerboundBeehivePayload.STREAM_CODEC.decode(byteBuf); + + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + + // targeted block info max range specified in client at net.minecraft.client.gui.hud.DebugHud#render -+ if (!pos.getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20 -+ if (serverPlayer.level().getChunkIfLoaded(pos) == null) return; ++ if (!payload.pos().getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20 ++ if (serverPlayer.level().getChunkIfLoaded(payload.pos()) == null) return; + -+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos); ++ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(payload.pos()); + if (!(blockEntity instanceof BeehiveBlockEntity beehive)) { + return; + } + -+ ByteArrayDataOutput out = out(); -+ -+ out.writeInt(beehive.getOccupantCount()); -+ out.writeLong(packedPos); -+ -+ FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.wrappedBuffer(out.toByteArray())); -+ serverPlayer.connection.send(new ClientboundCustomPayloadPacket(new CustomPacketPayload() { -+ @Override -+ public void write(final FriendlyByteBuf buf) { -+ buf.writeBytes(byteBuf.copy()); -+ } -+ -+ @Override -+ public ResourceLocation id() { -+ return BEEHIVE_S2C; -+ } -+ })); -+ } -+ -+ @SuppressWarnings("UnstableApiUsage") -+ private static ByteArrayDataOutput out() { -+ return ByteStreams.newDataOutput(); -+ } -+ -+ @SuppressWarnings("UnstableApiUsage") -+ private static ByteArrayDataInput in(byte[] bytes) { -+ return ByteStreams.newDataInput(bytes); ++ ClientboundBeehivePayload customPacketPayload = new ClientboundBeehivePayload(payload.pos(), beehive.getOccupantCount()); ++ FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(Unpooled.buffer()); ++ ClientboundBeehivePayload.STREAM_CODEC.encode(friendlyByteBuf, customPacketPayload); ++ byte[] byteArray = new byte[friendlyByteBuf.readableBytes()]; ++ player.sendPluginMessage(this.plugin, customPacketPayload.type().id().toString(), byteArray); + } +} diff --git a/patches/server/0222-Configurable-farmland-trample-height.patch b/patches/server/0223-Configurable-farmland-trample-height.patch similarity index 100% rename from patches/server/0222-Configurable-farmland-trample-height.patch rename to patches/server/0223-Configurable-farmland-trample-height.patch diff --git a/patches/server/0223-Configurable-player-pickup-exp-delay.patch b/patches/server/0224-Configurable-player-pickup-exp-delay.patch similarity index 100% rename from patches/server/0223-Configurable-player-pickup-exp-delay.patch rename to patches/server/0224-Configurable-player-pickup-exp-delay.patch diff --git a/patches/server/0224-Allow-void-trading.patch b/patches/server/0225-Allow-void-trading.patch similarity index 100% rename from patches/server/0224-Allow-void-trading.patch rename to patches/server/0225-Allow-void-trading.patch diff --git a/patches/server/0225-Configurable-phantom-size.patch b/patches/server/0226-Configurable-phantom-size.patch similarity index 100% rename from patches/server/0225-Configurable-phantom-size.patch rename to patches/server/0226-Configurable-phantom-size.patch diff --git a/patches/server/0226-Max-joins-per-second.patch b/patches/server/0227-Max-joins-per-second.patch similarity index 94% rename from patches/server/0226-Max-joins-per-second.patch rename to patches/server/0227-Max-joins-per-second.patch index f7b4227e2..614606510 100644 --- a/patches/server/0226-Max-joins-per-second.patch +++ b/patches/server/0227-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a34c44ba770ded446b7969a31d3d05016717c13b..f0c3566e6b03c88c0cb53a90d44627d0967d13eb 100644 +index e50954e35116ea60b68ae00191771f8d9f78b45d..64fc2ae0b1f086390614f03dc15aff4037d57d68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -435,8 +435,10 @@ public class PurpurConfig { +@@ -440,8 +440,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0227-Configurable-minimum-demand-for-trades.patch b/patches/server/0228-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0227-Configurable-minimum-demand-for-trades.patch rename to patches/server/0228-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0228-Lobotomize-stuck-villagers.patch b/patches/server/0229-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0228-Lobotomize-stuck-villagers.patch rename to patches/server/0229-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0229-Option-for-villager-display-trade-item.patch b/patches/server/0230-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0229-Option-for-villager-display-trade-item.patch rename to patches/server/0230-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0233-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0232-Anvil-repair-damage-options.patch rename to patches/server/0233-Anvil-repair-damage-options.patch diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch similarity index 98% rename from patches/server/0234-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0235-Add-toggle-for-enchant-level-clamping.patch index 58a27803e..2d498458b 100644 --- a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch @@ -59,7 +59,7 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f0c3566e6b03c88c0cb53a90d44627d0967d13eb..c5dd0979f5bce259b920c47d974f2bf6b805c045 100644 +index 64fc2ae0b1f086390614f03dc15aff4037d57d68..1e28c96f5b142a28be530dfc24d67b99c3803948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -382,6 +382,7 @@ public class PurpurConfig { diff --git a/patches/server/0235-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0236-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0235-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0236-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0238-Stonecutter-damage.patch similarity index 98% rename from patches/server/0237-Stonecutter-damage.patch rename to patches/server/0238-Stonecutter-damage.patch index 4ccb2b5c4..e12eb7a97 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0238-Stonecutter-damage.patch @@ -128,7 +128,7 @@ index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138fac } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c5dd0979f5bce259b920c47d974f2bf6b805c045..4a1d8b2c412a51e4c29e3846ea9c1bde99346010 100644 +index 1e28c96f5b142a28be530dfc24d67b99c3803948..cadb07b2ec32baa5f509b9da3bfd9044cee19ba4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0240-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0239-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0240-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0241-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0240-Skeletons-eat-wither-roses.patch rename to patches/server/0241-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0242-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0241-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0242-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0242-Spark-Profiler.patch b/patches/server/0243-Spark-Profiler.patch similarity index 100% rename from patches/server/0242-Spark-Profiler.patch rename to patches/server/0243-Spark-Profiler.patch diff --git a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 92% rename from patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch index 2b6c82f54..8064cbf52 100644 --- a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4a1d8b2c412a51e4c29e3846ea9c1bde99346010..f500c3b42a9ba346a0e4305c0169159f847e3457 100644 +index cadb07b2ec32baa5f509b9da3bfd9044cee19ba4..801d269a038e68d428b31f12d372fd11ab552d50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -440,9 +440,11 @@ public class PurpurConfig { +@@ -445,9 +445,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0245-Config-to-not-let-coral-die.patch b/patches/server/0246-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0245-Config-to-not-let-coral-die.patch rename to patches/server/0246-Config-to-not-let-coral-die.patch diff --git a/patches/server/0246-Add-local-difficulty-api.patch b/patches/server/0247-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0246-Add-local-difficulty-api.patch rename to patches/server/0247-Add-local-difficulty-api.patch diff --git a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch similarity index 100% rename from patches/server/0247-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0248-Add-toggle-for-RNG-manipulation.patch diff --git a/patches/server/0248-Remove-Timings.patch b/patches/server/0249-Remove-Timings.patch similarity index 98% rename from patches/server/0248-Remove-Timings.patch rename to patches/server/0249-Remove-Timings.patch index 80ba536b6..a7fb74752 100644 --- a/patches/server/0248-Remove-Timings.patch +++ b/patches/server/0249-Remove-Timings.patch @@ -56,10 +56,10 @@ index 57e76b53e5e314c3e6b8856010f7a84188121582..8c134a642ccaf3530022f2e675a858d7 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99586ddfe2 100644 +index 5081a631a94920db0307341261755eac399fea1e..f3c66049ab3fe087fa0fa87c2fca36c3c8b5c572 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1480,7 +1480,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index 0f4fde2097b9db59b6c29935462f305f34747b3b..e30d10a78802040f88693f3cf5de9f99 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1742,21 +1742,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1623,7 +1623,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -242,7 +242,7 @@ index e30d10a78802040f88693f3cf5de9f99586ddfe2..bfd9b99a79c63ae07771efbc837d1807 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1819,17 +1819,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2831,40 +2832,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Date: Mon, 29 Apr 2024 10:19:45 -0700 Subject: [PATCH 119/148] add back MC-3304 fix --- ...n-to-fix-MC-3304-projectile-looting.patch} | 54 +++++++------------ ...Configurable-block-blast-resistance.patch} | 8 +-- ...gurable-block-fall-damage-modifiers.patch} | 4 +- ...uage-API.patch => 0261-Language-API.patch} | 0 ... 0262-Milk-Keeps-Beneficial-Effects.patch} | 0 ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0266-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 0 ...t.patch => 0268-Added-got-ram-event.patch} | 0 ... 0269-Log-skipped-entity-s-position.patch} | 0 ....patch => 0270-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 6 +-- ...ig-to-remove-explosion-radius-clamp.patch} | 0 ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0275-Add-PreExplodeEvents.patch} | 0 ...6-Improve-output-of-plugins-command.patch} | 0 ...atch => 0277-Add-mending-multiplier.patch} | 0 ....patch => 0278-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0279-Stored-Bee-API.patch} | 0 ...patch => 0280-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0281-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 4 +- ...0285-place-end-crystal-on-any-block.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...7-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 0 31 files changed, 32 insertions(+), 50 deletions(-) rename patches/{unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch => server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (60%) rename patches/server/{0258-Configurable-block-blast-resistance.patch => 0259-Configurable-block-blast-resistance.patch} (84%) rename patches/server/{0259-Configurable-block-fall-damage-modifiers.patch => 0260-Configurable-block-fall-damage-modifiers.patch} (97%) rename patches/server/{0260-Language-API.patch => 0261-Language-API.patch} (100%) rename patches/server/{0261-Milk-Keeps-Beneficial-Effects.patch => 0262-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0263-Add-log-suppression-for-LibraryLoader.patch => 0264-Add-log-suppression-for-LibraryLoader.patch} (94%) rename patches/server/{0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0265-Fire-Immunity-API.patch => 0266-Fire-Immunity-API.patch} (100%) rename patches/server/{0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0267-Added-got-ram-event.patch => 0268-Added-got-ram-event.patch} (100%) rename patches/server/{0268-Log-skipped-entity-s-position.patch => 0269-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0269-End-Crystal-Cramming.patch => 0270-End-Crystal-Cramming.patch} (100%) rename patches/server/{0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0271-Add-attribute-clamping-and-armor-limit-config.patch => 0272-Add-attribute-clamping-and-armor-limit-config.patch} (91%) rename patches/server/{0272-Config-to-remove-explosion-radius-clamp.patch => 0273-Config-to-remove-explosion-radius-clamp.patch} (100%) rename patches/server/{0273-bonemealable-sugarcane-cactus-and-netherwart.patch => 0274-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0274-Add-PreExplodeEvents.patch => 0275-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0275-Improve-output-of-plugins-command.patch => 0276-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0276-Add-mending-multiplier.patch => 0277-Add-mending-multiplier.patch} (100%) rename patches/server/{0277-Make-GUI-Great-Again.patch => 0278-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0278-Stored-Bee-API.patch => 0279-Stored-Bee-API.patch} (100%) rename patches/server/{0279-Shears-can-defuse-TNT.patch => 0280-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0280-Explorer-Map-API.patch => 0281-Explorer-Map-API.patch} (100%) rename patches/server/{0281-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0282-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0283-Add-option-for-always-showing-item-in-player-death-m.patch => 0284-Add-option-for-always-showing-item-in-player-death-m.patch} (95%) rename patches/server/{0284-place-end-crystal-on-any-block.patch => 0285-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0285-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0286-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0286-register-minecraft-debug-commands.patch => 0287-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0287-Configurable-villager-search-radius.patch => 0288-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 60% rename from patches/unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 7b8468509..c0c0b9b78 100644 --- a/patches/unapplied-server/0272-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) 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 5d60f038220ef4e7b66834c172cc47c7abfe7da7..a9289c4179a78862361be87aaa83f49d6bf60714 100644 +index 342eaa0e3b053e9b39dc58fa92cd18cac446a844..06f7bc4d8d6679d6625a8d392777722fc97739ba 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -75,6 +75,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -77,6 +77,7 @@ public abstract class AbstractArrow extends Projectile { @Nullable private List piercedAndKilledEntities; public ItemStack pickupItemStack; @@ -16,7 +16,7 @@ index 5d60f038220ef4e7b66834c172cc47c7abfe7da7..a9289c4179a78862361be87aaa83f49d // Spigot Start @Override -@@ -642,6 +643,12 @@ public abstract class AbstractArrow extends Projectile { +@@ -655,6 +656,12 @@ public abstract class AbstractArrow extends Projectile { this.knockback = punch; } @@ -29,34 +29,16 @@ index 5d60f038220ef4e7b66834c172cc47c7abfe7da7..a9289c4179a78862361be87aaa83f49d public int getKnockback() { return this.knockback; } -diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 220513d3fd5645322886522ea4f6b8c55d043b3c..d45a2f49c82d00801578c34e5f5277fc5e82be87 100644 ---- a/src/main/java/net/minecraft/world/item/BowItem.java -+++ b/src/main/java/net/minecraft/world/item/BowItem.java -@@ -64,6 +64,13 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable { - if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.FLAMING_ARROWS, stack) > 0) { - entityarrow.setSecondsOnFire(100); - } -+ // Purpur start -+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MOB_LOOTING, stack); -+ -+ if (lootingLevel > 0) { -+ entityarrow.setLootingLevel(lootingLevel); -+ } -+ // Purpur end - // CraftBukkit start - org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(entityhuman, stack, itemstack1, entityarrow, entityhuman.getUsedItemHand(), f, !flag1); - if (event.isCancelled()) { -diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 05d3a7c077df1b92819655790230cd22028f6893..211d8e59a9b3460b346e5f8cf581df70b05d1b8f 100644 ---- a/src/main/java/net/minecraft/world/item/CrossbowItem.java -+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -291,6 +291,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { - entityarrow.setPierceLevel((byte) i); +diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +index f91ce87491b18f4f4ae6458192d1f320b308102a..aec96d297401b705ca2af97904739afdf1134574 100644 +--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -131,6 +131,14 @@ public abstract class ProjectileWeaponItem extends Item { + entityarrow.setPierceLevel((byte) k); } + // Purpur start -+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MOB_LOOTING, crossbow); ++ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.LOOTING, weaponStack); + + if (lootingLevel > 0) { + entityarrow.setLootingLevel(lootingLevel); @@ -67,15 +49,15 @@ index 05d3a7c077df1b92819655790230cd22028f6893..211d8e59a9b3460b346e5f8cf581df70 } diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 7030d94ba14ecacc1e5cd6d6432b1bcb59c8b646..95f9dd3f8fbf593fd6898335454951868c867a06 100644 +index 85dc79b9b969fa0cbf6964cb26bac139fa55710a..905a020dd7b365d51d5addadbbeb9555d03c5238 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -82,6 +82,14 @@ public class TridentItem extends Item implements Vanishable { +@@ -81,6 +81,14 @@ public class TridentItem extends Item implements ProjectileItem { entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } + // Purpur start -+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MOB_LOOTING, stack); ++ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, stack); + + if (lootingLevel > 0) { + entitythrowntrident.setLootingLevel(lootingLevel); @@ -86,7 +68,7 @@ index 7030d94ba14ecacc1e5cd6d6432b1bcb59c8b646..95f9dd3f8fbf593fd689833545495186 // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java -index 3fb1e558c3510243c94981211f9a0e5e0ef1895b..e5177e5ffcac360f935f2139db4554c6586b551e 100644 +index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696bdd73bf8 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java @@ -57,6 +57,13 @@ public class LootingEnchantFunction extends LootItemConditionalFunction { @@ -104,12 +86,12 @@ index 3fb1e558c3510243c94981211f9a0e5e0ef1895b..e5177e5ffcac360f935f2139db4554c6 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5329ad6493950a561bd46045e35a9bd70ac4405f..88763ca8cc31bda23f8f31d2bc990fb4a85c9955 100644 +index b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd..67fe92fdb068ce3cb45317d250dfeeb30475beb4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -573,4 +573,9 @@ public class PurpurConfig { - private static void fixNetworkSerializedCreativeItems() { - fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative); +@@ -481,4 +481,9 @@ public class PurpurConfig { + String setPattern = getString("settings.username-valid-characters", defaultPattern); + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } + + public static boolean fixProjectileLootingTransfer = false; diff --git a/patches/server/0258-Configurable-block-blast-resistance.patch b/patches/server/0259-Configurable-block-blast-resistance.patch similarity index 84% rename from patches/server/0258-Configurable-block-blast-resistance.patch rename to patches/server/0259-Configurable-block-blast-resistance.patch index 660fcdfa0..045b703bc 100644 --- a/patches/server/0258-Configurable-block-blast-resistance.patch +++ b/patches/server/0259-Configurable-block-blast-resistance.patch @@ -18,12 +18,12 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd..4400f8f8efc424ad4593b972f5b5f16575cd2a0d 100644 +index 67fe92fdb068ce3cb45317d250dfeeb30475beb4..c218b0d4cfce46c5c2f042566d618bf36ee5e1b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -481,4 +481,19 @@ public class PurpurConfig { - String setPattern = getString("settings.username-valid-characters", defaultPattern); - usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); +@@ -486,4 +486,19 @@ public class PurpurConfig { + private static void fixProjectileLootingTransfer() { + fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } + + private static void blastResistanceSettings() { diff --git a/patches/server/0259-Configurable-block-fall-damage-modifiers.patch b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch similarity index 97% rename from patches/server/0259-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0260-Configurable-block-fall-damage-modifiers.patch index 879e78ba7..6e17a0724 100644 --- a/patches/server/0259-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4400f8f8efc424ad4593b972f5b5f16575cd2a0d..4efcea9c35e529a25d408412fcb896f3ed47c5d1 100644 +index c218b0d4cfce46c5c2f042566d618bf36ee5e1b4..1e66458fc3d91426109d920e8d73d157e91dfed5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -496,4 +496,50 @@ public class PurpurConfig { +@@ -501,4 +501,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0260-Language-API.patch b/patches/server/0261-Language-API.patch similarity index 100% rename from patches/server/0260-Language-API.patch rename to patches/server/0261-Language-API.patch diff --git a/patches/server/0261-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch similarity index 100% rename from patches/server/0261-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0262-Milk-Keeps-Beneficial-Effects.patch diff --git a/patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0262-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0263-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch similarity index 94% rename from patches/server/0263-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0264-Add-log-suppression-for-LibraryLoader.patch index f5cc19d83..8cba1853a 100644 --- a/patches/server/0263-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4efcea9c35e529a25d408412fcb896f3ed47c5d1..2d88364e3e721561aa7e132712f3cb1a85a7dd4e 100644 +index 1e66458fc3d91426109d920e8d73d157e91dfed5..6baa4b8a2ab5529e6867de7a9113e020d016aff6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -454,11 +454,14 @@ public class PurpurConfig { diff --git a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0265-Fire-Immunity-API.patch b/patches/server/0266-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0265-Fire-Immunity-API.patch rename to patches/server/0266-Fire-Immunity-API.patch diff --git a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 100% rename from patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch diff --git a/patches/server/0267-Added-got-ram-event.patch b/patches/server/0268-Added-got-ram-event.patch similarity index 100% rename from patches/server/0267-Added-got-ram-event.patch rename to patches/server/0268-Added-got-ram-event.patch diff --git a/patches/server/0268-Log-skipped-entity-s-position.patch b/patches/server/0269-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0268-Log-skipped-entity-s-position.patch rename to patches/server/0269-Log-skipped-entity-s-position.patch diff --git a/patches/server/0269-End-Crystal-Cramming.patch b/patches/server/0270-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0269-End-Crystal-Cramming.patch rename to patches/server/0270-End-Crystal-Cramming.patch diff --git a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0272-Add-attribute-clamping-and-armor-limit-config.patch similarity index 91% rename from patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0272-Add-attribute-clamping-and-armor-limit-config.patch index 80b5d4bc0..414bc9582 100644 --- a/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0272-Add-attribute-clamping-and-armor-limit-config.patch @@ -39,11 +39,11 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2d88364e3e721561aa7e132712f3cb1a85a7dd4e..9f44620932500f963322f992d9c2621888b70be6 100644 +index 6baa4b8a2ab5529e6867de7a9113e020d016aff6..cf2c0642fc09b6f806903a684ccc215b0ad6276f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -485,6 +485,16 @@ public class PurpurConfig { - usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); +@@ -490,6 +490,16 @@ public class PurpurConfig { + fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } + public static boolean clampAttributes = true; diff --git a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0273-Config-to-remove-explosion-radius-clamp.patch similarity index 100% rename from patches/server/0272-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0273-Config-to-remove-explosion-radius-clamp.patch diff --git a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0274-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0274-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0274-Add-PreExplodeEvents.patch b/patches/server/0275-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0274-Add-PreExplodeEvents.patch rename to patches/server/0275-Add-PreExplodeEvents.patch diff --git a/patches/server/0275-Improve-output-of-plugins-command.patch b/patches/server/0276-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0275-Improve-output-of-plugins-command.patch rename to patches/server/0276-Improve-output-of-plugins-command.patch diff --git a/patches/server/0276-Add-mending-multiplier.patch b/patches/server/0277-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0276-Add-mending-multiplier.patch rename to patches/server/0277-Add-mending-multiplier.patch diff --git a/patches/server/0277-Make-GUI-Great-Again.patch b/patches/server/0278-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0277-Make-GUI-Great-Again.patch rename to patches/server/0278-Make-GUI-Great-Again.patch diff --git a/patches/server/0278-Stored-Bee-API.patch b/patches/server/0279-Stored-Bee-API.patch similarity index 100% rename from patches/server/0278-Stored-Bee-API.patch rename to patches/server/0279-Stored-Bee-API.patch diff --git a/patches/server/0279-Shears-can-defuse-TNT.patch b/patches/server/0280-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0279-Shears-can-defuse-TNT.patch rename to patches/server/0280-Shears-can-defuse-TNT.patch diff --git a/patches/server/0280-Explorer-Map-API.patch b/patches/server/0281-Explorer-Map-API.patch similarity index 100% rename from patches/server/0280-Explorer-Map-API.patch rename to patches/server/0281-Explorer-Map-API.patch diff --git a/patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0281-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0282-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 95% rename from patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch index aacc40846..e66c156fb 100644 --- a/patches/server/0283-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,10 +31,10 @@ index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb900 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9f44620932500f963322f992d9c2621888b70be6..65de34005a759ff46f9343ada4404b9637c5ac9d 100644 +index cf2c0642fc09b6f806903a684ccc215b0ad6276f..67a719dc069bc77da38b32ba7d32580c8b7f1207 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -555,4 +555,9 @@ public class PurpurConfig { +@@ -560,4 +560,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/server/0284-place-end-crystal-on-any-block.patch b/patches/server/0285-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0284-place-end-crystal-on-any-block.patch rename to patches/server/0285-place-end-crystal-on-any-block.patch diff --git a/patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0285-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0286-register-minecraft-debug-commands.patch b/patches/server/0287-register-minecraft-debug-commands.patch similarity index 95% rename from patches/server/0286-register-minecraft-debug-commands.patch rename to patches/server/0287-register-minecraft-debug-commands.patch index 087a4d47d..15b540b12 100644 --- a/patches/server/0286-register-minecraft-debug-commands.patch +++ b/patches/server/0287-register-minecraft-debug-commands.patch @@ -32,10 +32,10 @@ index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4 io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 65de34005a759ff46f9343ada4404b9637c5ac9d..37dd3e8708016811f9617d1b9d1af53894cc5d80 100644 +index 67a719dc069bc77da38b32ba7d32580c8b7f1207..df83e258d47fdce819c0f6467e2c0f2d681cb1f9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -560,4 +560,9 @@ public class PurpurConfig { +@@ -565,4 +565,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/server/0287-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch similarity index 100% rename from patches/server/0287-Configurable-villager-search-radius.patch rename to patches/server/0288-Configurable-villager-search-radius.patch From 9902cb675a1e3bfd60b226f3ffa8ce36ec98e4fa Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 15:37:38 -0700 Subject: [PATCH 120/148] move custom nbt allay patch to dropped folder --- .../0263-Allay-respect-item-NBT.patch | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename patches/{unapplied-server => dropped-server}/0263-Allay-respect-item-NBT.patch (100%) diff --git a/patches/unapplied-server/0263-Allay-respect-item-NBT.patch b/patches/dropped-server/0263-Allay-respect-item-NBT.patch similarity index 100% rename from patches/unapplied-server/0263-Allay-respect-item-NBT.patch rename to patches/dropped-server/0263-Allay-respect-item-NBT.patch From 942fc72e5e996fbc6c32b34ee37f5ff48b22d391 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 15:38:05 -0700 Subject: [PATCH 121/148] progress on silk touch spawner patch --- .../0017-Silk-touch-spawners.patch} | 89 +++--- ...> 0018-Add-turtle-egg-block-options.patch} | 6 +- ...settings-suppressing-pointless-logs.patch} | 0 ...> 0020-Disable-outdated-build-check.patch} | 0 ...gs.patch => 0021-Giants-AI-settings.patch} | 6 +- ...> 0022-Zombie-horse-naturally-spawn.patch} | 6 +- ...023-Charged-creeper-naturally-spawn.patch} | 6 +- ...it-naturally-spawn-toast-and-killer.patch} | 6 +- ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0026-Tulips-change-fox-type.patch} | 6 +- ...patch => 0027-Breedable-Polar-Bears.patch} | 6 +- ...atch => 0028-Chickens-can-retaliate.patch} | 6 +- ...ption-to-set-armorstand-step-height.patch} | 2 +- ....patch => 0030-Cat-spawning-options.patch} | 6 +- ...ms.patch => 0031-Cows-eat-mushrooms.patch} | 6 +- ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...patch => 0033-Pigs-give-saddle-back.patch} | 6 +- ...4-Snowman-drop-and-put-back-pumpkin.patch} | 6 +- ...5-Ender-dragon-always-drop-full-exp.patch} | 6 +- ...oisten-from-water-directly-under-it.patch} | 6 +- ...Minecart-settings-and-WASD-controls.patch} | 2 +- ...ble-loot-drops-on-death-by-cramming.patch} | 2 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...ould-check-if-entity-can-use-portal.patch} | 0 ...Skip-events-if-there-s-no-listeners.patch} | 0 ... 0042-Add-permission-for-F3-N-debug.patch} | 0 ...ch => 0043-Configurable-TPS-Catchup.patch} | 0 ...ow-loyalty-on-tridents-to-work-in-t.patch} | 2 +- ...erman-and-creeper-griefing-controls.patch} | 10 +- ...046-Villagers-follow-emerald-blocks.patch} | 10 +- ...ch => 0047-Allow-leashing-villagers.patch} | 10 +- ... => 0048-Implement-infinite-liquids.patch} | 6 +- ...9-Make-lava-flow-speed-configurable.patch} | 4 +- ...dd-player-death-exp-control-options.patch} | 4 +- ...rable-void-damage-height-and-damage.patch} | 2 +- ...=> 0052-Add-canSaveToDisk-to-Entity.patch} | 0 ...spenser-curse-of-binding-protection.patch} | 6 +- ...-for-boats-to-eject-players-on-land.patch} | 2 +- ...-mends-most-damages-equipment-first.patch} | 2 +- ...056-Add-5-second-tps-average-in-tps.patch} | 0 ...h => 0057-Implement-elytra-settings.patch} | 2 +- ...atch => 0058-Item-entity-immunities.patch} | 2 +- ...mand.patch => 0059-Add-ping-command.patch} | 0 ...mand.patch => 0060-Add-demo-command.patch} | 0 ...d.patch => 0061-Add-credits-command.patch} | 0 ...=> 0062-Configurable-jockey-options.patch} | 22 +- ...d-to-crystals-and-crystals-shoot-ph.patch} | 6 +- ...> 0064-Add-phantom-spawning-options.patch} | 6 +- ...065-Implement-bed-explosion-options.patch} | 6 +- ...nt-respawn-anchor-explosion-options.patch} | 4 +- ...Add-allow-water-in-end-world-option.patch} | 0 ...espan.patch => 0068-Entity-lifespan.patch} | 2 +- ...eport-to-spawn-if-outside-world-bor.patch} | 4 +- ...ty.patch => 0070-Squid-EAR-immunity.patch} | 6 +- ...atch => 0071-Phantoms-burn-in-light.patch} | 6 +- ...0072-Configurable-villager-breeding.patch} | 6 +- ... 0073-Redstone-deactivates-spawners.patch} | 4 +- ...ch => 0074-Totems-work-in-inventory.patch} | 4 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 6 +- ...0076-Dispensers-place-anvils-option.patch} | 4 +- ...rs.patch => 0077-Allow-anvil-colors.patch} | 6 +- ...-disable-dolphin-treasure-searching.patch} | 6 +- ...patch => 0079-Short-enderman-height.patch} | 0 ...top-squids-floating-on-top-of-water.patch} | 6 +- ...ng-obsidian-valid-for-portal-frames.patch} | 0 ...ities-can-use-portals-configuration.patch} | 2 +- ...083-LivingEntity-broadcastItemBreak.patch} | 0 ...tomizable-wither-health-and-healing.patch} | 6 +- ...gling-special-MobSpawners-per-world.patch} | 2 +- ...patch => 0086-Raid-cooldown-setting.patch} | 2 +- ...-config-options-per-projectile-type.patch} | 9 +- ...able-zombie-aggressiveness-towards-.patch} | 6 +- ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...y.patch => 0090-Flying-squids-Oh-my.patch} | 8 +- ...patch => 0091-Infinity-bow-settings.patch} | 2 +- ...=> 0092-Configurable-daylight-cycle.patch} | 2 +- ...e-and-mending-enchantments-together.patch} | 0 ...4-Furnace-uses-lava-from-underneath.patch} | 4 +- ...ws-should-not-reset-despawn-counter.patch} | 2 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 4 +- ...ustable-breeding-cooldown-to-config.patch} | 2 +- ...-entity-breeding-times-configurable.patch} | 96 +++--- ...es-from-item-forms-of-entities-to-e.patch} | 2 +- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 6 +- ...02-Add-configurable-snowball-damage.patch} | 4 +- ...3-Changeable-Mob-Left-Handed-Chance.patch} | 2 +- ...=> 0104-Add-boat-fall-damage-config.patch} | 2 +- ...0105-Snow-Golem-rate-of-fire-config.patch} | 6 +- ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 6 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 6 +- ...0-Configurable-default-collar-color.patch} | 10 +- ...tch => 0111-Phantom-flames-on-swoop.patch} | 6 +- ...-to-open-even-with-a-solid-block-on.patch} | 4 +- ...SBar.patch => 0113-Implement-TPSBar.patch} | 0 ...h => 0114-Striders-give-saddle-back.patch} | 6 +- ...tch => 0115-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 2 +- ...efing-bypass-to-everything-affected.patch} | 66 ++--- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...119-Add-EntityTeleportHinderedEvent.patch} | 2 +- ... => 0120-Farmland-trampling-changes.patch} | 4 +- ...1-Movement-options-for-armor-stands.patch} | 2 +- ....patch => 0122-Fix-stuck-in-portals.patch} | 4 +- ...ggle-for-water-sensitive-mob-damage.patch} | 256 ++++++++-------- ...4-Config-to-always-tame-in-Creative.patch} | 2 +- ... 0125-End-crystal-explosion-options.patch} | 4 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 10 +- ...atch => 0127-Dont-run-with-scissors.patch} | 2 +- ...nch-Man.patch => 0128-One-Punch-Man.patch} | 4 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 6 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 6 +- ...ig.patch => 0134-Tick-fluids-config.patch} | 2 +- ...35-Config-to-disable-Llama-caravans.patch} | 6 +- ...g-to-make-Creepers-explode-on-death.patch} | 6 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...138-Sneak-to-bulk-process-composter.patch} | 4 +- ...h => 0139-Config-for-skipping-night.patch} | 4 +- ...140-Add-config-for-villager-trading.patch} | 10 +- ...=> 0141-Allow-infinity-on-crossbows.patch} | 0 ...ngs.patch => 0142-Drowning-Settings.patch} | 2 +- ...reak-individual-slabs-when-sneaking.patch} | 4 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 4 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 2 +- ...tion-to-make-doors-require-redstone.patch} | 4 +- ...Config-to-allow-for-unsafe-enchants.patch} | 0 ...0148-Configurable-sponge-absorption.patch} | 4 +- ...ch => 0149-Projectile-offset-config.patch} | 4 +- ...or-powered-rail-activation-distance.patch} | 4 +- ...> 0151-Piglin-portal-spawn-modifier.patch} | 6 +- ...Config-to-change-max-number-of-bees.patch} | 0 ...-Config-for-wither-explosion-radius.patch} | 6 +- ... => 0154-Gamemode-extra-permissions.patch} | 0 ...0155-Configurable-piston-push-limit.patch} | 4 +- ...156-Configurable-broadcast-settings.patch} | 0 ... => 0157-Configurable-mob-blindness.patch} | 2 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 6 +- ... 0160-Iron-golem-calm-anger-options.patch} | 6 +- ...ots.patch => 0161-Breedable-parrots.patch} | 6 +- ...gurable-powered-rail-boost-modifier.patch} | 2 +- ...ge-multiplier-critical-damage-value.patch} | 4 +- ...n-to-disable-dragon-egg-teleporting.patch} | 4 +- ...fig-for-unverified-username-message.patch} | 0 ...-anvil-cumulative-cost-configurable.patch} | 0 ...e-can-work-when-raining-or-at-night.patch} | 6 +- ...68-API-for-any-mob-to-burn-daylight.patch} | 0 ...h => 0169-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 0 ...fter-eating-food-fills-hunger-bar-c.patch} | 4 +- ...ayer-join-full-server-by-permission.patch} | 0 ...> 0174-Add-portal-permission-bypass.patch} | 0 ...5-Shulker-spawn-from-bullet-options.patch} | 6 +- ...ating-glow-berries-adds-glow-effect.patch} | 4 +- ...-Option-to-make-drowned-break-doors.patch} | 6 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0179-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0180-Add-uptime-command.patch} | 0 ...tch => 0181-Tool-actionable-options.patch} | 4 +- ...2-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0183-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 0 ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...tch => 0186-Big-dripleaf-tilt-delay.patch} | 4 +- ...0187-Player-ridable-in-water-option.patch} | 4 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0189-Add-compass-command.patch} | 2 +- ...h => 0190-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 4 +- ...194-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 4 +- ...move-curse-of-binding-with-weakness.patch} | 4 +- ...0197-Conduit-behavior-configuration.patch} | 4 +- ...patch => 0198-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0200-Shulker-change-color-with-dye.patch} | 6 +- ... => 0201-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 2 +- ...-blocks-to-grow-into-trees-naturall.patch} | 6 +- ...-right-click-to-use-exp-for-mending.patch} | 4 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 4 +- ....patch => 0210-UPnP-Port-Forwarding.patch} | 0 ...Campfire-option-for-lit-when-placed.patch} | 4 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...-and-twisting-vines-configurable-ma.patch} | 0 ...=> 0215-Mobs-always-drop-experience.patch} | 274 +++++++++--------- ...ne-API.patch => 0216-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0219-Mob-head-visibility-percent.patch} | 18 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 0 ...onfigurable-farmland-trample-height.patch} | 6 +- ...onfigurable-player-pickup-exp-delay.patch} | 4 +- ...ng.patch => 0226-Allow-void-trading.patch} | 4 +- ...h => 0227-Configurable-phantom-size.patch} | 6 +- ....patch => 0228-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0230-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 2 +- ...=> 0234-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 0 ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0239-Stonecutter-damage.patch} | 4 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...241-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0242-Skeletons-eat-wither-roses.patch} | 6 +- ...43-Enchantment-Table-Persists-Lapis.patch} | 4 +- ...ofiler.patch => 0244-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 0 ...for-sculk-shrieker-can_summon-state.patch} | 4 +- ...=> 0247-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0248-Add-local-difficulty-api.patch} | 0 ...249-Add-toggle-for-RNG-manipulation.patch} | 2 +- ...imings.patch => 0250-Remove-Timings.patch} | 0 ...atch => 0251-Remove-Mojang-Profiler.patch} | 0 ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0253-Add-Bee-API.patch} | 0 ...-API.patch => 0254-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 2 +- ...56-Add-skeleton-bow-accuracy-option.patch} | 6 +- ....patch => 0257-Add-death-screen-API.patch} | 0 ...8-Implement-ram-and-rambar-commands.patch} | 0 ...n-to-fix-MC-3304-projectile-looting.patch} | 0 ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0262-Language-API.patch} | 0 ... 0263-Milk-Keeps-Beneficial-Effects.patch} | 2 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0267-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 2 +- ...t.patch => 0269-Added-got-ram-event.patch} | 0 ... 0270-Log-skipped-entity-s-position.patch} | 0 ....patch => 0271-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- ....patch => 0276-Add-PreExplodeEvents.patch} | 0 ...7-Improve-output-of-plugins-command.patch} | 0 ...atch => 0278-Add-mending-multiplier.patch} | 2 +- ....patch => 0279-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0280-Stored-Bee-API.patch} | 0 ...patch => 0281-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0282-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0286-place-end-crystal-on-any-block.patch} | 6 +- ...able-the-copper-oxidation-proximity.patch} | 2 +- ...8-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 6 +- 273 files changed, 832 insertions(+), 832 deletions(-) rename patches/{unapplied-server/0018-Silk-touch-spawners.patch => server/0017-Silk-touch-spawners.patch} (71%) rename patches/server/{0017-Add-turtle-egg-block-options.patch => 0018-Add-turtle-egg-block-options.patch} (91%) rename patches/server/{0018-Logger-settings-suppressing-pointless-logs.patch => 0019-Logger-settings-suppressing-pointless-logs.patch} (100%) rename patches/server/{0019-Disable-outdated-build-check.patch => 0020-Disable-outdated-build-check.patch} (100%) rename patches/server/{0020-Giants-AI-settings.patch => 0021-Giants-AI-settings.patch} (97%) rename patches/server/{0021-Zombie-horse-naturally-spawn.patch => 0022-Zombie-horse-naturally-spawn.patch} (94%) rename patches/server/{0022-Charged-creeper-naturally-spawn.patch => 0023-Charged-creeper-naturally-spawn.patch} (92%) rename patches/server/{0023-Rabbit-naturally-spawn-toast-and-killer.patch => 0024-Rabbit-naturally-spawn-toast-and-killer.patch} (93%) rename patches/server/{0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0025-Tulips-change-fox-type.patch => 0026-Tulips-change-fox-type.patch} (95%) rename patches/server/{0026-Breedable-Polar-Bears.patch => 0027-Breedable-Polar-Bears.patch} (95%) rename patches/server/{0027-Chickens-can-retaliate.patch => 0028-Chickens-can-retaliate.patch} (94%) rename patches/server/{0028-Add-option-to-set-armorstand-step-height.patch => 0029-Add-option-to-set-armorstand-step-height.patch} (96%) rename patches/server/{0029-Cat-spawning-options.patch => 0030-Cat-spawning-options.patch} (94%) rename patches/server/{0030-Cows-eat-mushrooms.patch => 0031-Cows-eat-mushrooms.patch} (97%) rename patches/server/{0031-Fix-cow-rotation-when-shearing-mooshroom.patch => 0032-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0032-Pigs-give-saddle-back.patch => 0033-Pigs-give-saddle-back.patch} (92%) rename patches/server/{0033-Snowman-drop-and-put-back-pumpkin.patch => 0034-Snowman-drop-and-put-back-pumpkin.patch} (91%) rename patches/server/{0034-Ender-dragon-always-drop-full-exp.patch => 0035-Ender-dragon-always-drop-full-exp.patch} (91%) rename patches/server/{0035-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0036-Allow-soil-to-moisten-from-water-directly-under-it.patch} (85%) rename patches/server/{0036-Minecart-settings-and-WASD-controls.patch => 0037-Minecart-settings-and-WASD-controls.patch} (99%) rename patches/server/{0037-Disable-loot-drops-on-death-by-cramming.patch => 0038-Disable-loot-drops-on-death-by-cramming.patch} (96%) rename patches/server/{0038-Option-to-toggle-milk-curing-bad-omen.patch => 0039-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0039-End-gateway-should-check-if-entity-can-use-portal.patch => 0040-End-gateway-should-check-if-entity-can-use-portal.patch} (100%) rename patches/server/{0040-Skip-events-if-there-s-no-listeners.patch => 0041-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0041-Add-permission-for-F3-N-debug.patch => 0042-Add-permission-for-F3-N-debug.patch} (100%) rename patches/server/{0042-Configurable-TPS-Catchup.patch => 0043-Configurable-TPS-Catchup.patch} (100%) rename patches/server/{0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (96%) rename patches/server/{0044-Add-enderman-and-creeper-griefing-controls.patch => 0045-Add-enderman-and-creeper-griefing-controls.patch} (93%) rename patches/server/{0045-Villagers-follow-emerald-blocks.patch => 0046-Villagers-follow-emerald-blocks.patch} (94%) rename patches/server/{0046-Allow-leashing-villagers.patch => 0047-Allow-leashing-villagers.patch} (94%) rename patches/server/{0047-Implement-infinite-liquids.patch => 0048-Implement-infinite-liquids.patch} (95%) rename patches/server/{0048-Make-lava-flow-speed-configurable.patch => 0049-Make-lava-flow-speed-configurable.patch} (92%) rename patches/server/{0049-Add-player-death-exp-control-options.patch => 0050-Add-player-death-exp-control-options.patch} (95%) rename patches/server/{0050-Configurable-void-damage-height-and-damage.patch => 0051-Configurable-void-damage-height-and-damage.patch} (97%) rename patches/server/{0051-Add-canSaveToDisk-to-Entity.patch => 0052-Add-canSaveToDisk-to-Entity.patch} (100%) rename patches/server/{0052-Dispenser-curse-of-binding-protection.patch => 0053-Dispenser-curse-of-binding-protection.patch} (92%) rename patches/server/{0053-Add-option-for-boats-to-eject-players-on-land.patch => 0054-Add-option-for-boats-to-eject-players-on-land.patch} (95%) rename patches/server/{0054-Mending-mends-most-damages-equipment-first.patch => 0055-Mending-mends-most-damages-equipment-first.patch} (98%) rename patches/server/{0055-Add-5-second-tps-average-in-tps.patch => 0056-Add-5-second-tps-average-in-tps.patch} (100%) rename patches/server/{0056-Implement-elytra-settings.patch => 0057-Implement-elytra-settings.patch} (98%) rename patches/server/{0057-Item-entity-immunities.patch => 0058-Item-entity-immunities.patch} (98%) rename patches/server/{0058-Add-ping-command.patch => 0059-Add-ping-command.patch} (100%) rename patches/server/{0059-Add-demo-command.patch => 0060-Add-demo-command.patch} (100%) rename patches/server/{0060-Add-credits-command.patch => 0061-Add-credits-command.patch} (100%) rename patches/server/{0061-Configurable-jockey-options.patch => 0062-Configurable-jockey-options.patch} (95%) rename patches/server/{0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (98%) rename patches/server/{0063-Add-phantom-spawning-options.patch => 0064-Add-phantom-spawning-options.patch} (96%) rename patches/server/{0064-Implement-bed-explosion-options.patch => 0065-Implement-bed-explosion-options.patch} (93%) rename patches/server/{0065-Implement-respawn-anchor-explosion-options.patch => 0066-Implement-respawn-anchor-explosion-options.patch} (95%) rename patches/server/{0066-Add-allow-water-in-end-world-option.patch => 0067-Add-allow-water-in-end-world-option.patch} (100%) rename patches/server/{0067-Entity-lifespan.patch => 0068-Entity-lifespan.patch} (98%) rename patches/server/{0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (96%) rename patches/server/{0069-Squid-EAR-immunity.patch => 0070-Squid-EAR-immunity.patch} (91%) rename patches/server/{0070-Phantoms-burn-in-light.patch => 0071-Phantoms-burn-in-light.patch} (96%) rename patches/server/{0071-Configurable-villager-breeding.patch => 0072-Configurable-villager-breeding.patch} (91%) rename patches/server/{0072-Redstone-deactivates-spawners.patch => 0073-Redstone-deactivates-spawners.patch} (91%) rename patches/server/{0073-Totems-work-in-inventory.patch => 0074-Totems-work-in-inventory.patch} (95%) rename patches/server/{0074-Add-vindicator-johnny-spawn-chance.patch => 0075-Add-vindicator-johnny-spawn-chance.patch} (91%) rename patches/server/{0075-Dispensers-place-anvils-option.patch => 0076-Dispensers-place-anvils-option.patch} (94%) rename patches/server/{0076-Allow-anvil-colors.patch => 0077-Allow-anvil-colors.patch} (94%) rename patches/server/{0077-Add-option-to-disable-dolphin-treasure-searching.patch => 0078-Add-option-to-disable-dolphin-treasure-searching.patch} (90%) rename patches/server/{0078-Short-enderman-height.patch => 0079-Short-enderman-height.patch} (100%) rename patches/server/{0079-Stop-squids-floating-on-top-of-water.patch => 0080-Stop-squids-floating-on-top-of-water.patch} (94%) rename patches/server/{0080-Crying-obsidian-valid-for-portal-frames.patch => 0081-Crying-obsidian-valid-for-portal-frames.patch} (100%) rename patches/server/{0081-Entities-can-use-portals-configuration.patch => 0082-Entities-can-use-portals-configuration.patch} (97%) rename patches/server/{0082-LivingEntity-broadcastItemBreak.patch => 0083-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/server/{0083-Customizable-wither-health-and-healing.patch => 0084-Customizable-wither-health-and-healing.patch} (92%) rename patches/server/{0084-Allow-toggling-special-MobSpawners-per-world.patch => 0085-Allow-toggling-special-MobSpawners-per-world.patch} (98%) rename patches/server/{0085-Raid-cooldown-setting.patch => 0086-Raid-cooldown-setting.patch} (97%) rename patches/server/{0086-Despawn-rate-config-options-per-projectile-type.patch => 0087-Despawn-rate-config-options-per-projectile-type.patch} (88%) rename patches/server/{0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (96%) rename patches/server/{0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0089-Flying-squids-Oh-my.patch => 0090-Flying-squids-Oh-my.patch} (94%) rename patches/server/{0090-Infinity-bow-settings.patch => 0091-Infinity-bow-settings.patch} (97%) rename patches/server/{0091-Configurable-daylight-cycle.patch => 0092-Configurable-daylight-cycle.patch} (98%) rename patches/server/{0092-Allow-infinite-and-mending-enchantments-together.patch => 0093-Allow-infinite-and-mending-enchantments-together.patch} (100%) rename patches/server/{0093-Furnace-uses-lava-from-underneath.patch => 0094-Furnace-uses-lava-from-underneath.patch} (96%) rename patches/server/{0094-Arrows-should-not-reset-despawn-counter.patch => 0095-Arrows-should-not-reset-despawn-counter.patch} (95%) rename patches/server/{0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (92%) rename patches/server/{0096-Add-adjustable-breeding-cooldown-to-config.patch => 0097-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0097-Make-entity-breeding-times-configurable.patch => 0098-Make-entity-breeding-times-configurable.patch} (94%) rename patches/server/{0098-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0099-Apply-display-names-from-item-forms-of-entities-to-e.patch} (98%) rename patches/server/{0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (91%) rename patches/server/{0101-Add-configurable-snowball-damage.patch => 0102-Add-configurable-snowball-damage.patch} (92%) rename patches/server/{0102-Changeable-Mob-Left-Handed-Chance.patch => 0103-Changeable-Mob-Left-Handed-Chance.patch} (95%) rename patches/server/{0103-Add-boat-fall-damage-config.patch => 0104-Add-boat-fall-damage-config.patch} (97%) rename patches/server/{0104-Snow-Golem-rate-of-fire-config.patch => 0105-Snow-Golem-rate-of-fire-config.patch} (94%) rename patches/server/{0105-EMC-Configurable-disable-give-dropping.patch => 0106-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (94%) rename patches/server/{0108-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0109-Configurable-chance-for-wolves-to-spawn-rabid.patch} (98%) rename patches/server/{0109-Configurable-default-collar-color.patch => 0110-Configurable-default-collar-color.patch} (93%) rename patches/server/{0110-Phantom-flames-on-swoop.patch => 0111-Phantom-flames-on-swoop.patch} (91%) rename patches/server/{0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (91%) rename patches/server/{0112-Implement-TPSBar.patch => 0113-Implement-TPSBar.patch} (100%) rename patches/server/{0113-Striders-give-saddle-back.patch => 0114-Striders-give-saddle-back.patch} (92%) rename patches/server/{0114-PlayerBookTooLargeEvent.patch => 0115-PlayerBookTooLargeEvent.patch} (100%) rename patches/server/{0115-Full-netherite-armor-grants-fire-resistance.patch => 0116-Full-netherite-armor-grants-fire-resistance.patch} (97%) rename patches/server/{0116-Add-mobGriefing-bypass-to-everything-affected.patch => 0117-Add-mobGriefing-bypass-to-everything-affected.patch} (96%) rename patches/server/{0117-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0118-Config-to-allow-Note-Block-sounds-when-blocked.patch} (97%) rename patches/server/{0118-Add-EntityTeleportHinderedEvent.patch => 0119-Add-EntityTeleportHinderedEvent.patch} (99%) rename patches/server/{0119-Farmland-trampling-changes.patch => 0120-Farmland-trampling-changes.patch} (95%) rename patches/server/{0120-Movement-options-for-armor-stands.patch => 0121-Movement-options-for-armor-stands.patch} (98%) rename patches/server/{0121-Fix-stuck-in-portals.patch => 0122-Fix-stuck-in-portals.patch} (95%) rename patches/server/{0122-Toggle-for-water-sensitive-mob-damage.patch => 0123-Toggle-for-water-sensitive-mob-damage.patch} (94%) rename patches/server/{0123-Config-to-always-tame-in-Creative.patch => 0124-Config-to-always-tame-in-Creative.patch} (98%) rename patches/server/{0124-End-crystal-explosion-options.patch => 0125-End-crystal-explosion-options.patch} (97%) rename patches/server/{0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/server/{0126-Dont-run-with-scissors.patch => 0127-Dont-run-with-scissors.patch} (99%) rename patches/server/{0127-One-Punch-Man.patch => 0128-One-Punch-Man.patch} (94%) rename patches/server/{0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/server/{0129-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0130-Config-to-ignore-nearby-mobs-when-sleeping.patch} (93%) rename patches/server/{0130-Add-back-player-spawned-endermite-API.patch => 0131-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0131-Config-Enderman-aggressiveness-towards-Endermites.patch => 0132-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0133-Tick-fluids-config.patch => 0134-Tick-fluids-config.patch} (97%) rename patches/server/{0134-Config-to-disable-Llama-caravans.patch => 0135-Config-to-disable-Llama-caravans.patch} (94%) rename patches/server/{0135-Config-to-make-Creepers-explode-on-death.patch => 0136-Config-to-make-Creepers-explode-on-death.patch} (94%) rename patches/server/{0136-Configurable-ravager-griefable-blocks-list.patch => 0137-Configurable-ravager-griefable-blocks-list.patch} (95%) rename patches/server/{0137-Sneak-to-bulk-process-composter.patch => 0138-Sneak-to-bulk-process-composter.patch} (97%) rename patches/server/{0138-Config-for-skipping-night.patch => 0139-Config-for-skipping-night.patch} (93%) rename patches/server/{0139-Add-config-for-villager-trading.patch => 0140-Add-config-for-villager-trading.patch} (93%) rename patches/server/{0140-Allow-infinity-on-crossbows.patch => 0141-Allow-infinity-on-crossbows.patch} (100%) rename patches/server/{0141-Drowning-Settings.patch => 0142-Drowning-Settings.patch} (97%) rename patches/server/{0142-Break-individual-slabs-when-sneaking.patch => 0143-Break-individual-slabs-when-sneaking.patch} (95%) rename patches/server/{0143-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0144-Config-to-disable-hostile-mob-spawn-on-ice.patch} (94%) rename patches/server/{0144-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0145-Config-to-show-Armor-Stand-arms-on-spawn.patch} (96%) rename patches/server/{0145-Option-to-make-doors-require-redstone.patch => 0146-Option-to-make-doors-require-redstone.patch} (96%) rename patches/server/{0146-Config-to-allow-for-unsafe-enchants.patch => 0147-Config-to-allow-for-unsafe-enchants.patch} (100%) rename patches/server/{0147-Configurable-sponge-absorption.patch => 0148-Configurable-sponge-absorption.patch} (93%) rename patches/server/{0148-Projectile-offset-config.patch => 0149-Projectile-offset-config.patch} (98%) rename patches/server/{0149-Config-for-powered-rail-activation-distance.patch => 0150-Config-for-powered-rail-activation-distance.patch} (91%) rename patches/server/{0150-Piglin-portal-spawn-modifier.patch => 0151-Piglin-portal-spawn-modifier.patch} (93%) rename patches/server/{0151-Config-to-change-max-number-of-bees.patch => 0152-Config-to-change-max-number-of-bees.patch} (100%) rename patches/server/{0152-Config-for-wither-explosion-radius.patch => 0153-Config-for-wither-explosion-radius.patch} (92%) rename patches/server/{0153-Gamemode-extra-permissions.patch => 0154-Gamemode-extra-permissions.patch} (100%) rename patches/server/{0154-Configurable-piston-push-limit.patch => 0155-Configurable-piston-push-limit.patch} (94%) rename patches/server/{0155-Configurable-broadcast-settings.patch => 0156-Configurable-broadcast-settings.patch} (100%) rename patches/server/{0156-Configurable-mob-blindness.patch => 0157-Configurable-mob-blindness.patch} (97%) rename patches/server/{0157-Hide-hidden-players-from-entity-selector.patch => 0158-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0158-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0159-Config-for-health-to-impact-Creeper-explosion-radius.patch} (92%) rename patches/server/{0159-Iron-golem-calm-anger-options.patch => 0160-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0160-Breedable-parrots.patch => 0161-Breedable-parrots.patch} (94%) rename patches/server/{0161-Configurable-powered-rail-boost-modifier.patch => 0162-Configurable-powered-rail-boost-modifier.patch} (96%) rename patches/server/{0162-Add-config-change-multiplier-critical-damage-value.patch => 0163-Add-config-change-multiplier-critical-damage-value.patch} (93%) rename patches/server/{0163-Option-to-disable-dragon-egg-teleporting.patch => 0164-Option-to-disable-dragon-egg-teleporting.patch} (92%) rename patches/server/{0164-Config-for-unverified-username-message.patch => 0165-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0165-Make-anvil-cumulative-cost-configurable.patch => 0166-Make-anvil-cumulative-cost-configurable.patch} (100%) rename patches/server/{0166-Bee-can-work-when-raining-or-at-night.patch => 0167-Bee-can-work-when-raining-or-at-night.patch} (94%) rename patches/server/{0167-API-for-any-mob-to-burn-daylight.patch => 0168-API-for-any-mob-to-burn-daylight.patch} (100%) rename patches/server/{0168-Config-MobEffect-by-world.patch => 0169-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0169-Beacon-Activation-Range-Configurable.patch => 0170-Beacon-Activation-Range-Configurable.patch} (94%) rename patches/server/{0170-Make-lightning-rod-range-configurable.patch => 0171-Make-lightning-rod-range-configurable.patch} (100%) rename patches/server/{0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (96%) rename patches/server/{0172-Allow-player-join-full-server-by-permission.patch => 0173-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0173-Add-portal-permission-bypass.patch => 0174-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0174-Shulker-spawn-from-bullet-options.patch => 0175-Shulker-spawn-from-bullet-options.patch} (96%) rename patches/server/{0175-Eating-glow-berries-adds-glow-effect.patch => 0176-Eating-glow-berries-adds-glow-effect.patch} (95%) rename patches/server/{0176-Option-to-make-drowned-break-doors.patch => 0177-Option-to-make-drowned-break-doors.patch} (94%) rename patches/server/{0177-Configurable-hunger-starvation-damage.patch => 0178-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0178-Enhance-SysoutCatcher.patch => 0179-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0179-Add-uptime-command.patch => 0180-Add-uptime-command.patch} (100%) rename patches/server/{0180-Tool-actionable-options.patch => 0181-Tool-actionable-options.patch} (99%) rename patches/server/{0181-Store-placer-on-Block-when-placed.patch => 0182-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0182-Summoner-API.patch => 0183-Summoner-API.patch} (100%) rename patches/server/{0183-Customizable-sleeping-actionbar-messages.patch => 0184-Customizable-sleeping-actionbar-messages.patch} (100%) rename patches/server/{0184-option-to-disable-shulker-box-items-from-dropping-co.patch => 0185-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0185-Big-dripleaf-tilt-delay.patch => 0186-Big-dripleaf-tilt-delay.patch} (94%) rename patches/server/{0186-Player-ridable-in-water-option.patch => 0187-Player-ridable-in-water-option.patch} (93%) rename patches/server/{0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (92%) rename patches/server/{0188-Add-compass-command.patch => 0189-Add-compass-command.patch} (99%) rename patches/server/{0189-Toggle-for-kinetic-damage.patch => 0190-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0190-Add-Option-for-disable-observer-clocks.patch => 0191-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0191-Customizeable-Zombie-Villager-curing-times.patch => 0192-Customizeable-Zombie-Villager-curing-times.patch} (93%) rename patches/server/{0192-Option-for-sponges-to-work-on-lava-and-mud.patch => 0193-Option-for-sponges-to-work-on-lava-and-mud.patch} (94%) rename patches/server/{0193-Toggle-for-Wither-s-spawn-sound.patch => 0194-Toggle-for-Wither-s-spawn-sound.patch} (91%) rename patches/server/{0194-Cactus-breaks-from-solid-neighbors-config.patch => 0195-Cactus-breaks-from-solid-neighbors-config.patch} (92%) rename patches/server/{0195-Config-to-remove-curse-of-binding-with-weakness.patch => 0196-Config-to-remove-curse-of-binding-with-weakness.patch} (93%) rename patches/server/{0196-Conduit-behavior-configuration.patch => 0197-Conduit-behavior-configuration.patch} (98%) rename patches/server/{0197-Cauldron-fill-chances.patch => 0198-Cauldron-fill-chances.patch} (96%) rename patches/server/{0198-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0199-Config-to-allow-mobs-to-pathfind-over-rails.patch} (96%) rename patches/server/{0199-Shulker-change-color-with-dye.patch => 0200-Shulker-change-color-with-dye.patch} (94%) rename patches/server/{0200-Extended-OfflinePlayer-API.patch => 0201-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0201-Added-the-ability-to-add-combustible-items.patch => 0202-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (97%) rename patches/server/{0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (94%) rename patches/server/{0204-Shift-right-click-to-use-exp-for-mending.patch => 0205-Shift-right-click-to-use-exp-for-mending.patch} (96%) rename patches/server/{0205-Dolphins-naturally-aggressive-to-players-chance.patch => 0206-Dolphins-naturally-aggressive-to-players-chance.patch} (95%) rename patches/server/{0206-Cows-naturally-aggressive-to-players-chance.patch => 0207-Cows-naturally-aggressive-to-players-chance.patch} (96%) rename patches/server/{0207-Option-for-beds-to-explode-on-villager-sleep.patch => 0208-Option-for-beds-to-explode-on-villager-sleep.patch} (92%) rename patches/server/{0208-Halloween-options-and-optimizations.patch => 0209-Halloween-options-and-optimizations.patch} (97%) rename patches/server/{0209-UPnP-Port-Forwarding.patch => 0210-UPnP-Port-Forwarding.patch} (100%) rename patches/server/{0210-Campfire-option-for-lit-when-placed.patch => 0211-Campfire-option-for-lit-when-placed.patch} (94%) rename patches/server/{0211-options-to-extinguish-fire-blocks-with-snowballs.patch => 0212-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0212-Add-option-to-disable-zombie-villagers-cure.patch => 0213-Add-option-to-disable-zombie-villagers-cure.patch} (92%) rename patches/server/{0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0214-Mobs-always-drop-experience.patch => 0215-Mobs-always-drop-experience.patch} (94%) rename patches/server/{0215-Grindstone-API.patch => 0216-Grindstone-API.patch} (100%) rename patches/server/{0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0217-Turtle-eggs-random-tick-crack-chance.patch => 0218-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0218-Mob-head-visibility-percent.patch => 0219-Mob-head-visibility-percent.patch} (91%) rename patches/server/{0219-Configurable-valid-characters-for-usernames.patch => 0220-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0220-Shears-can-have-looting-enchantment.patch => 0221-Shears-can-have-looting-enchantment.patch} (100%) rename patches/server/{0221-Stop-bees-from-dying-after-stinging.patch => 0222-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (100%) rename patches/server/{0223-Configurable-farmland-trample-height.patch => 0224-Configurable-farmland-trample-height.patch} (94%) rename patches/server/{0224-Configurable-player-pickup-exp-delay.patch => 0225-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0225-Allow-void-trading.patch => 0226-Allow-void-trading.patch} (94%) rename patches/server/{0226-Configurable-phantom-size.patch => 0227-Configurable-phantom-size.patch} (93%) rename patches/server/{0227-Max-joins-per-second.patch => 0228-Max-joins-per-second.patch} (100%) rename patches/server/{0228-Configurable-minimum-demand-for-trades.patch => 0229-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0229-Lobotomize-stuck-villagers.patch => 0230-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0230-Option-for-villager-display-trade-item.patch => 0231-Option-for-villager-display-trade-item.patch} (92%) rename patches/server/{0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0232-Config-for-mob-last-hurt-by-player-time.patch => 0233-Config-for-mob-last-hurt-by-player-time.patch} (97%) rename patches/server/{0233-Anvil-repair-damage-options.patch => 0234-Anvil-repair-damage-options.patch} (97%) rename patches/server/{0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0235-Add-toggle-for-enchant-level-clamping.patch => 0236-Add-toggle-for-enchant-level-clamping.patch} (100%) rename patches/server/{0236-Skip-junit-tests-for-purpur-commands.patch => 0237-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0237-Implement-configurable-search-radius-for-villagers-t.patch => 0238-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0238-Stonecutter-damage.patch => 0239-Stonecutter-damage.patch} (98%) rename patches/server/{0239-Configurable-damage-settings-for-magma-blocks.patch => 0240-Configurable-damage-settings-for-magma-blocks.patch} (93%) rename patches/server/{0240-Add-config-for-snow-on-blue-ice.patch => 0241-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0241-Skeletons-eat-wither-roses.patch => 0242-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0242-Enchantment-Table-Persists-Lapis.patch => 0243-Enchantment-Table-Persists-Lapis.patch} (97%) rename patches/server/{0243-Spark-Profiler.patch => 0244-Spark-Profiler.patch} (100%) rename patches/server/{0244-Option-to-disable-kick-for-out-of-order-chat.patch => 0245-Option-to-disable-kick-for-out-of-order-chat.patch} (100%) rename patches/server/{0245-Config-for-sculk-shrieker-can_summon-state.patch => 0246-Config-for-sculk-shrieker-can_summon-state.patch} (92%) rename patches/server/{0246-Config-to-not-let-coral-die.patch => 0247-Config-to-not-let-coral-die.patch} (94%) rename patches/server/{0247-Add-local-difficulty-api.patch => 0248-Add-local-difficulty-api.patch} (100%) rename patches/server/{0248-Add-toggle-for-RNG-manipulation.patch => 0249-Add-toggle-for-RNG-manipulation.patch} (97%) rename patches/server/{0249-Remove-Timings.patch => 0250-Remove-Timings.patch} (100%) rename patches/server/{0250-Remove-Mojang-Profiler.patch => 0251-Remove-Mojang-Profiler.patch} (100%) rename patches/server/{0251-Add-more-logger-output-for-invalid-movement-kicks.patch => 0252-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0252-Add-Bee-API.patch => 0253-Add-Bee-API.patch} (100%) rename patches/server/{0253-Debug-Marker-API.patch => 0254-Debug-Marker-API.patch} (100%) rename patches/server/{0254-mob-spawning-option-to-ignore-creative-players.patch => 0255-mob-spawning-option-to-ignore-creative-players.patch} (96%) rename patches/server/{0255-Add-skeleton-bow-accuracy-option.patch => 0256-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0256-Add-death-screen-API.patch => 0257-Add-death-screen-API.patch} (100%) rename patches/server/{0257-Implement-ram-and-rambar-commands.patch => 0258-Implement-ram-and-rambar-commands.patch} (100%) rename patches/server/{0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (100%) rename patches/server/{0259-Configurable-block-blast-resistance.patch => 0260-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0260-Configurable-block-fall-damage-modifiers.patch => 0261-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0261-Language-API.patch => 0262-Language-API.patch} (100%) rename patches/server/{0262-Milk-Keeps-Beneficial-Effects.patch => 0263-Milk-Keeps-Beneficial-Effects.patch} (97%) rename patches/server/{0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0264-Add-log-suppression-for-LibraryLoader.patch => 0265-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0266-Fire-Immunity-API.patch => 0267-Fire-Immunity-API.patch} (100%) rename patches/server/{0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (96%) rename patches/server/{0268-Added-got-ram-event.patch => 0269-Added-got-ram-event.patch} (100%) rename patches/server/{0269-Log-skipped-entity-s-position.patch => 0270-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0270-End-Crystal-Cramming.patch => 0271-End-Crystal-Cramming.patch} (91%) rename patches/server/{0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0272-Add-attribute-clamping-and-armor-limit-config.patch => 0273-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0273-Config-to-remove-explosion-radius-clamp.patch => 0274-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0274-bonemealable-sugarcane-cactus-and-netherwart.patch => 0275-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0275-Add-PreExplodeEvents.patch => 0276-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0276-Improve-output-of-plugins-command.patch => 0277-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0277-Add-mending-multiplier.patch => 0278-Add-mending-multiplier.patch} (96%) rename patches/server/{0278-Make-GUI-Great-Again.patch => 0279-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0279-Stored-Bee-API.patch => 0280-Stored-Bee-API.patch} (100%) rename patches/server/{0280-Shears-can-defuse-TNT.patch => 0281-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0281-Explorer-Map-API.patch => 0282-Explorer-Map-API.patch} (100%) rename patches/server/{0282-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0283-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (93%) rename patches/server/{0284-Add-option-for-always-showing-item-in-player-death-m.patch => 0285-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0285-place-end-crystal-on-any-block.patch => 0286-place-end-crystal-on-any-block.patch} (92%) rename patches/server/{0286-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0287-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) rename patches/server/{0287-register-minecraft-debug-commands.patch => 0288-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0288-Configurable-villager-search-radius.patch => 0289-Configurable-villager-search-radius.patch} (95%) diff --git a/patches/unapplied-server/0018-Silk-touch-spawners.patch b/patches/server/0017-Silk-touch-spawners.patch similarity index 71% rename from patches/unapplied-server/0018-Silk-touch-spawners.patch rename to patches/server/0017-Silk-touch-spawners.patch index 91b675b66..a00b7e056 100644 --- a/patches/unapplied-server/0018-Silk-touch-spawners.patch +++ b/patches/server/0017-Silk-touch-spawners.patch @@ -18,10 +18,10 @@ index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..06c914983a285c1a4e973f1c55088ad6e561cd20 100644 +index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..bc3c0b7c06d0ed5c4f54cf08c37f7331bb0cc00d 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -@@ -42,6 +42,60 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -42,6 +42,55 @@ public class SpawnerBlock extends BaseEntityBlock { return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick); } @@ -32,43 +32,38 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..06c914983a285c1a4e973f1c55088ad6 + java.util.Optional> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); + + net.minecraft.world.entity.EntityType entityType = type.orElse(null); -+ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType == null ? Component.empty() : entityType.getDescription()); -+ net.minecraft.nbt.CompoundTag display = new net.minecraft.nbt.CompoundTag(); -+ net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); -+ net.minecraft.nbt.CompoundTag blockEntityTag = blockEntity.getUpdateTag(); -+ blockEntityTag.remove("Delay"); // remove this tag to allow stacking duplicate spawners -+ tag.put("BlockEntityTag", blockEntityTag); -+ -+ String name = level.purpurConfig.silkTouchSpawnerName; -+ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { -+ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); -+ if (name.startsWith("")) { -+ displayName = displayName.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false); -+ } -+ display.put("Name", net.minecraft.nbt.StringTag.valueOf(io.papermc.paper.adventure.PaperAdventure.asJsonString(displayName, java.util.Locale.ROOT))); -+ tag.put("display", display); -+ } -+ -+ List lore = level.purpurConfig.silkTouchSpawnerLore; -+ if (lore != null && !lore.isEmpty()) { -+ net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag(); -+ for (String line : lore) { -+ net.kyori.adventure.text.Component lineComponent = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(line, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); -+ if (line.startsWith("")) { -+ lineComponent = lineComponent.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false); -+ } -+ list.add(net.minecraft.nbt.StringTag.valueOf(io.papermc.paper.adventure.PaperAdventure.asJsonString(lineComponent, java.util.Locale.ROOT))); -+ } -+ display.put("Lore", list); -+ tag.put("display", display); -+ } -+ + ItemStack item = new ItemStack(Blocks.SPAWNER.asItem()); + if (entityType != null) { -+ tag.putDouble("HideFlags", ItemStack.TooltipPart.ADDITIONAL.getMask()); // hides the "Interact with Spawn Egg" tooltip -+ item.setTag(tag); -+ } ++ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType.getDescription()); ++ // blockEntityTag.remove("Delay"); // remove this tag to allow stacking duplicate spawners ++ // tag.put("BlockEntityTag", blockEntityTag); + ++ String name = level.purpurConfig.silkTouchSpawnerName; ++ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { ++ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); ++ if (name.startsWith("")) { ++ displayName = displayName.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false); ++ } ++ item.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName)); ++ } ++ ++ List lore = level.purpurConfig.silkTouchSpawnerLore; ++ if (lore != null && !lore.isEmpty()) { ++ ++ List loreComponentList = new java.util.ArrayList<>(); ++ for (String line : lore) { ++ net.kyori.adventure.text.Component lineComponent = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(line, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); ++ if (line.startsWith("")) { ++ lineComponent = lineComponent.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false); ++ } ++ loreComponentList.add(io.papermc.paper.adventure.PaperAdventure.asVanilla(lineComponent)); ++ } ++ ++ ++ item.set(net.minecraft.core.component.DataComponents.LORE, new net.minecraft.world.item.component.ItemLore(loreComponentList, loreComponentList)); ++ } ++ item.set(net.minecraft.core.component.DataComponents.HIDE_ADDITIONAL_TOOLTIP, net.minecraft.util.Unit.INSTANCE); ++ } + popResource(level, pos, item); + } + super.playerDestroy(level, player, pos, state, blockEntity, stack, includeDrops, dropExp); @@ -82,7 +77,7 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..06c914983a285c1a4e973f1c55088ad6 @Override protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); -@@ -50,6 +104,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -50,6 +99,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack, boolean flag) { @@ -135,18 +130,20 @@ index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..d4bca5b5f3d10c3a04befd8c365f4643 public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java new file mode 100644 -index 0000000000000000000000000000000000000000..d6cc7e434cb2bacc00e4cad9e1f4be7fcf5d0bee +index 0000000000000000000000000000000000000000..1a929cd455e361f4d544de26b5392b62660b31db --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java -@@ -0,0 +1,38 @@ +@@ -0,0 +1,42 @@ +package org.purpurmc.purpur.item; + +import net.minecraft.core.BlockPos; ++import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; ++import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; @@ -164,13 +161,15 @@ index 0000000000000000000000000000000000000000..d6cc7e434cb2bacc00e4cad9e1f4be7f + boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state); + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) { + BlockEntity spawner = level.getBlockEntity(pos); -+ if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) { -+ CompoundTag tag = stack.getTag(); -+ if (tag.contains("Purpur.mob_type")) { -+ EntityType.byString(tag.getString("Purpur.mob_type")).ifPresent(type -> ++ if (spawner instanceof SpawnerBlockEntity && stack.has(DataComponents.CUSTOM_DATA)) { ++ CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); ++ if (customData.contains("Purpur.mob_type")) { ++ CompoundTag unsafe = customData.getUnsafe(); ++ ++ EntityType.byString(unsafe.getString("Purpur.mob_type")).ifPresent(type -> + ((SpawnerBlockEntity) spawner).getSpawner().setEntityId(type, level, level.random, pos)); -+ } else if (tag.contains("BlockEntityTag")) { -+ spawner.load(tag.getCompound("BlockEntityTag")); ++ } else if (stack.has(DataComponents.BLOCK_ENTITY_DATA)) { ++ spawner.applyComponentsFromItemStack(stack); + } + } + } diff --git a/patches/server/0017-Add-turtle-egg-block-options.patch b/patches/server/0018-Add-turtle-egg-block-options.patch similarity index 91% rename from patches/server/0017-Add-turtle-egg-block-options.patch rename to patches/server/0018-Add-turtle-egg-block-options.patch index 36642e86a..efb936f2b 100644 --- a/patches/server/0017-Add-turtle-egg-block-options.patch +++ b/patches/server/0018-Add-turtle-egg-block-options.patch @@ -36,11 +36,11 @@ index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..66061f3f70161c8b95cd5f6a148ad6a008f3190d 100644 +index d4bca5b5f3d10c3a04befd8c365f46433491f299..ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -108,6 +108,15 @@ public class PurpurWorldConfig { - idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); +@@ -140,6 +140,15 @@ public class PurpurWorldConfig { + }); } + public boolean turtleEggsBreakFromExpOrbs = false; diff --git a/patches/server/0018-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0019-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/server/0018-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0019-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/server/0019-Disable-outdated-build-check.patch b/patches/server/0020-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0019-Disable-outdated-build-check.patch rename to patches/server/0020-Disable-outdated-build-check.patch diff --git a/patches/server/0020-Giants-AI-settings.patch b/patches/server/0021-Giants-AI-settings.patch similarity index 97% rename from patches/server/0020-Giants-AI-settings.patch rename to patches/server/0021-Giants-AI-settings.patch index 74299bb00..1f14b308e 100644 --- a/patches/server/0020-Giants-AI-settings.patch +++ b/patches/server/0021-Giants-AI-settings.patch @@ -106,10 +106,10 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..3c1217d36522b1fd3d1a099d3a12d990 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 66061f3f70161c8b95cd5f6a148ad6a008f3190d..9ec335f41361a39ff6bfdc93c53d242383dad594 100644 +index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e19ca58c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -522,6 +522,10 @@ public class PurpurWorldConfig { +@@ -554,6 +554,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -120,7 +120,7 @@ index 66061f3f70161c8b95cd5f6a148ad6a008f3190d..9ec335f41361a39ff6bfdc93c53d2423 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -538,6 +542,10 @@ public class PurpurWorldConfig { +@@ -570,6 +574,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0021-Zombie-horse-naturally-spawn.patch b/patches/server/0022-Zombie-horse-naturally-spawn.patch similarity index 94% rename from patches/server/0021-Zombie-horse-naturally-spawn.patch rename to patches/server/0022-Zombie-horse-naturally-spawn.patch index 8d9ac230e..8ff2f18f1 100644 --- a/patches/server/0021-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0022-Zombie-horse-naturally-spawn.patch @@ -30,10 +30,10 @@ index fc791a66d299905798c2c1ca542467e4c7933caf..b02d9db8442b209a9df27e417be71b11 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ec335f41361a39ff6bfdc93c53d242383dad594..d4dd472dcc85910046a1a01dfed207113359d53a 100644 +index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523f89af57f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1487,6 +1487,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -41,7 +41,7 @@ index 9ec335f41361a39ff6bfdc93c53d242383dad594..d4dd472dcc85910046a1a01dfed20711 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -1471,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1503,6 +1504,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0022-Charged-creeper-naturally-spawn.patch b/patches/server/0023-Charged-creeper-naturally-spawn.patch similarity index 92% rename from patches/server/0022-Charged-creeper-naturally-spawn.patch rename to patches/server/0023-Charged-creeper-naturally-spawn.patch index 854efa8c2..3796f4ab6 100644 --- a/patches/server/0022-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0023-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..84114356ea4c06998572c03f2e2a75b4 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4dd472dcc85910046a1a01dfed207113359d53a..67045185b1a82c3ac68aacefc2b4b6c6c2e1bfff 100644 +index 41822b9b050f4267cc0151ea85682523f89af57f..e033ef722d9b6336f1cbc6bdf404f35c34b45db9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -313,6 +313,7 @@ public class PurpurWorldConfig { +@@ -345,6 +345,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = true; public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index d4dd472dcc85910046a1a01dfed207113359d53a..67045185b1a82c3ac68aacefc2b4b6c6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -323,6 +324,7 @@ public class PurpurWorldConfig { +@@ -355,6 +356,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0023-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 93% rename from patches/server/0023-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch index fcdeca1e0..da9dd0eab 100644 --- a/patches/server/0023-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch @@ -33,10 +33,10 @@ index 9eb1158213064ddb37ae76e445b5861b963a1f55..4abcde662ed78b16632ee575f695ee43 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67045185b1a82c3ac68aacefc2b4b6c6c2e1bfff..d9c4914076c47cc37af36e1d084b62bd176562e4 100644 +index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1910cc8af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -956,6 +956,8 @@ public class PurpurWorldConfig { +@@ -988,6 +988,8 @@ public class PurpurWorldConfig { public boolean rabbitRidableInWater = true; public boolean rabbitControllable = true; public double rabbitMaxHealth = 3.0D; @@ -45,7 +45,7 @@ index 67045185b1a82c3ac68aacefc2b4b6c6c2e1bfff..d9c4914076c47cc37af36e1d084b62bd private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -966,6 +968,8 @@ public class PurpurWorldConfig { +@@ -998,6 +1000,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0024-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0025-Tulips-change-fox-type.patch b/patches/server/0026-Tulips-change-fox-type.patch similarity index 95% rename from patches/server/0025-Tulips-change-fox-type.patch rename to patches/server/0026-Tulips-change-fox-type.patch index fa360d4f3..50f08714b 100644 --- a/patches/server/0025-Tulips-change-fox-type.patch +++ b/patches/server/0026-Tulips-change-fox-type.patch @@ -67,10 +67,10 @@ index 8666d82775570b812d5bdd80336c8e14db6ddf47..d2be8c1c23f291e98b9a31a63ba5fa7d // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9c4914076c47cc37af36e1d084b62bd176562e4..164f59cc8426088945528999ed3e347cfeee37f5 100644 +index a96aa7f127467a6ea8025c09f4e336f1910cc8af..d084d5ef20b2fb4d3b5479cb51003fb82a0358fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -477,6 +477,7 @@ public class PurpurWorldConfig { +@@ -509,6 +509,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = true; public boolean foxControllable = true; public double foxMaxHealth = 10.0D; @@ -78,7 +78,7 @@ index d9c4914076c47cc37af36e1d084b62bd176562e4..164f59cc8426088945528999ed3e347c private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -487,6 +488,7 @@ public class PurpurWorldConfig { +@@ -519,6 +520,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0026-Breedable-Polar-Bears.patch b/patches/server/0027-Breedable-Polar-Bears.patch similarity index 95% rename from patches/server/0026-Breedable-Polar-Bears.patch rename to patches/server/0027-Breedable-Polar-Bears.patch index 262716fab..952012279 100644 --- a/patches/server/0026-Breedable-Polar-Bears.patch +++ b/patches/server/0027-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 00afde0ec4811992aac306a42d473026b7e7e468..067bb175c457d6de089f18826dfce6c3 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 164f59cc8426088945528999ed3e347cfeee37f5..084750aa09798e8d67642b5ac1cff339ec15c022 100644 +index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562e724361a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -928,6 +928,8 @@ public class PurpurWorldConfig { +@@ -960,6 +960,8 @@ public class PurpurWorldConfig { public boolean polarBearRidableInWater = true; public boolean polarBearControllable = true; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index 164f59cc8426088945528999ed3e347cfeee37f5..084750aa09798e8d67642b5ac1cff339 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -938,6 +940,9 @@ public class PurpurWorldConfig { +@@ -970,6 +972,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0027-Chickens-can-retaliate.patch b/patches/server/0028-Chickens-can-retaliate.patch similarity index 94% rename from patches/server/0027-Chickens-can-retaliate.patch rename to patches/server/0028-Chickens-can-retaliate.patch index 2f434f43d..b7479c92c 100644 --- a/patches/server/0027-Chickens-can-retaliate.patch +++ b/patches/server/0028-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index a7c76e1d89f54f0dc3b27a8a8db168ea4570bf60..14210dac8a4fa8caaf69ec830f83d155 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 084750aa09798e8d67642b5ac1cff339ec15c022..b67c2719a311c720b04343ff88d8170a495bca29 100644 +index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f930922ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -267,6 +267,7 @@ public class PurpurWorldConfig { +@@ -299,6 +299,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index 084750aa09798e8d67642b5ac1cff339ec15c022..b67c2719a311c720b04343ff88d8170a private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -277,6 +278,7 @@ public class PurpurWorldConfig { +@@ -309,6 +310,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0028-Add-option-to-set-armorstand-step-height.patch b/patches/server/0029-Add-option-to-set-armorstand-step-height.patch similarity index 96% rename from patches/server/0028-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0029-Add-option-to-set-armorstand-step-height.patch index 7f12d2d00..cb9752a8c 100644 --- a/patches/server/0028-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0029-Add-option-to-set-armorstand-step-height.patch @@ -38,7 +38,7 @@ index c2bd2e303f956d390319f6bbbe9a6492ebec5154..5abbc0caf90cafc1a06dfff158c158b1 if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b67c2719a311c720b04343ff88d8170a495bca29..d5fb5919b0571e4327a9976dda78ef8510fc5d05 100644 +index 4cd6d9309ed81956d59063fe4d229c6f930922ed..6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0029-Cat-spawning-options.patch b/patches/server/0030-Cat-spawning-options.patch similarity index 94% rename from patches/server/0029-Cat-spawning-options.patch rename to patches/server/0030-Cat-spawning-options.patch index 9ebeec89a..862db1dc6 100644 --- a/patches/server/0029-Cat-spawning-options.patch +++ b/patches/server/0030-Cat-spawning-options.patch @@ -46,10 +46,10 @@ index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5fb5919b0571e4327a9976dda78ef8510fc5d05..73b86b6a367cb37b180b4806671c19dccd90950a 100644 +index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -240,6 +240,9 @@ public class PurpurWorldConfig { +@@ -272,6 +272,9 @@ public class PurpurWorldConfig { public boolean catRidableInWater = true; public boolean catControllable = true; public double catMaxHealth = 10.0D; @@ -59,7 +59,7 @@ index d5fb5919b0571e4327a9976dda78ef8510fc5d05..73b86b6a367cb37b180b4806671c19dc private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -250,6 +253,9 @@ public class PurpurWorldConfig { +@@ -282,6 +285,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0030-Cows-eat-mushrooms.patch b/patches/server/0031-Cows-eat-mushrooms.patch similarity index 97% rename from patches/server/0030-Cows-eat-mushrooms.patch rename to patches/server/0031-Cows-eat-mushrooms.patch index 270530355..4b9bf527b 100644 --- a/patches/server/0030-Cows-eat-mushrooms.patch +++ b/patches/server/0031-Cows-eat-mushrooms.patch @@ -115,10 +115,10 @@ index bee1a275f242866206dc461461b7962e04289ddc..bda0d933ccbee613aa7fb31534351a0d + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 73b86b6a367cb37b180b4806671c19dccd90950a..0b19c023f020438418e41b6c2803399d967348dc 100644 +index c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa..ab5960b9104d362852ee3d6ba151cf78dd58a0ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -310,6 +310,7 @@ public class PurpurWorldConfig { +@@ -342,6 +342,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = true; public boolean cowControllable = true; public double cowMaxHealth = 10.0D; @@ -126,7 +126,7 @@ index 73b86b6a367cb37b180b4806671c19dccd90950a..0b19c023f020438418e41b6c2803399d private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -320,6 +321,7 @@ public class PurpurWorldConfig { +@@ -352,6 +353,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0031-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0031-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0032-Pigs-give-saddle-back.patch b/patches/server/0033-Pigs-give-saddle-back.patch similarity index 92% rename from patches/server/0032-Pigs-give-saddle-back.patch rename to patches/server/0033-Pigs-give-saddle-back.patch index 061e33bbd..0eb376a50 100644 --- a/patches/server/0032-Pigs-give-saddle-back.patch +++ b/patches/server/0033-Pigs-give-saddle-back.patch @@ -27,10 +27,10 @@ index a365573c5c5e640f165701bc79f7c605674c5709..4f84406304114abbaff9f96a5df6a486 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b19c023f020438418e41b6c2803399d967348dc..47d0a2413ecd71f823473f781eaf64a55b15fd11 100644 +index ab5960b9104d362852ee3d6ba151cf78dd58a0ee..1c530384c9040236ce525329f37913cdd3e424ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -879,6 +879,7 @@ public class PurpurWorldConfig { +@@ -911,6 +911,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public boolean pigControllable = true; public double pigMaxHealth = 10.0D; @@ -38,7 +38,7 @@ index 0b19c023f020438418e41b6c2803399d967348dc..47d0a2413ecd71f823473f781eaf64a5 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -889,6 +890,7 @@ public class PurpurWorldConfig { +@@ -921,6 +922,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0033-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch similarity index 91% rename from patches/server/0033-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch index 9eeefc6eb..4ac6f1b7e 100644 --- a/patches/server/0033-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch @@ -24,10 +24,10 @@ index a54893d51cc1ce204e59a6ffe8b84228775af4da..0060414b1d5afde56372ce121e9d37a1 return tryRide(player, hand); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 47d0a2413ecd71f823473f781eaf64a55b15fd11..7b1ff6e90ceb57a83fc1816b0e8023769b09de49 100644 +index 1c530384c9040236ce525329f37913cdd3e424ff..acec5455e9c16508ae474e1307e3cc234d17e6ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1144,6 +1144,7 @@ public class PurpurWorldConfig { +@@ -1176,6 +1176,7 @@ public class PurpurWorldConfig { public boolean snowGolemControllable = true; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -35,7 +35,7 @@ index 47d0a2413ecd71f823473f781eaf64a55b15fd11..7b1ff6e90ceb57a83fc1816b0e802376 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1155,6 +1156,7 @@ public class PurpurWorldConfig { +@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0034-Ender-dragon-always-drop-full-exp.patch b/patches/server/0035-Ender-dragon-always-drop-full-exp.patch similarity index 91% rename from patches/server/0034-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0035-Ender-dragon-always-drop-full-exp.patch index 1d91a0a0a..2226fff2e 100644 --- a/patches/server/0034-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0035-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 0a7f87ac09f9ef6ad69974090f0d6f437d232b11..f751444603e4a1a2ef53e7232b5abfff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b1ff6e90ceb57a83fc1816b0e8023769b09de49..19b814ec4c204daf47841efbbccdb432ebe9d3ca 100644 +index acec5455e9c16508ae474e1307e3cc234d17e6ee..a9d6c6713a098ca87d62b43d491bc2d9a8590741 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -423,6 +423,7 @@ public class PurpurWorldConfig { +@@ -455,6 +455,7 @@ public class PurpurWorldConfig { public boolean enderDragonControllable = true; public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index 7b1ff6e90ceb57a83fc1816b0e8023769b09de49..19b814ec4c204daf47841efbbccdb432 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -438,6 +439,7 @@ public class PurpurWorldConfig { +@@ -470,6 +471,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0035-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 85% rename from patches/server/0035-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch index 621f4dce8..184d03b5d 100644 --- a/patches/server/0035-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,11 +18,11 @@ index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 19b814ec4c204daf47841efbbccdb432ebe9d3ca..6b04a22f25060c02a51709057251b2669d9b170f 100644 +index a9d6c6713a098ca87d62b43d491bc2d9a8590741..41b804abeab390a259eb0c8ed72f75ad403471dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -113,6 +113,11 @@ public class PurpurWorldConfig { - idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); +@@ -145,6 +145,11 @@ public class PurpurWorldConfig { + }); } + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0036-Minecart-settings-and-WASD-controls.patch b/patches/server/0037-Minecart-settings-and-WASD-controls.patch similarity index 99% rename from patches/server/0036-Minecart-settings-and-WASD-controls.patch rename to patches/server/0037-Minecart-settings-and-WASD-controls.patch index ac76ddce2..b38b1d122 100644 --- a/patches/server/0036-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0037-Minecart-settings-and-WASD-controls.patch @@ -149,7 +149,7 @@ index 2034ca2edd3aff61d94416266e75402babd3e741..3c1091f2a729b7d06ba6e21c37f788ed protected ResourceKey drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b04a22f25060c02a51709057251b2669d9b170f..fbcfcb49ca801964ec904fb29171cf8e7fe9f184 100644 +index 41b804abeab390a259eb0c8ed72f75ad403471dd..755d53e04bb0ed678bebc3497476e252dd5a736e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0037-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch similarity index 96% rename from patches/server/0037-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch index a6a1844ff..996296e66 100644 --- a/patches/server/0037-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch @@ -25,7 +25,7 @@ index a3ee2af337acef86a15b12c9e6d8cd8452980a87..7b210484fd10e6e994c66afb45f8a28f // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fbcfcb49ca801964ec904fb29171cf8e7fe9f184..112966aab8baa01e727d01724db4d752395f7609 100644 +index 755d53e04bb0ed678bebc3497476e252dd5a736e..b7bf1a6e59e33d13887ae3d98f37658f52030e37 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0038-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0038-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch index 32b057f17..90595d0c8 100644 --- a/patches/server/0038-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch @@ -19,7 +19,7 @@ index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042 return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 112966aab8baa01e727d01724db4d752395f7609..c96caceb66932a731bbd702f0b8f5eb829855dc1 100644 +index b7bf1a6e59e33d13887ae3d98f37658f52030e37..40493cbb1b14f16549b95aa439e4c25c04a0627c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0039-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0039-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0040-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0040-Skip-events-if-there-s-no-listeners.patch b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0040-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0041-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0041-Add-permission-for-F3-N-debug.patch b/patches/server/0042-Add-permission-for-F3-N-debug.patch similarity index 100% rename from patches/server/0041-Add-permission-for-F3-N-debug.patch rename to patches/server/0042-Add-permission-for-F3-N-debug.patch diff --git a/patches/server/0042-Configurable-TPS-Catchup.patch b/patches/server/0043-Configurable-TPS-Catchup.patch similarity index 100% rename from patches/server/0042-Configurable-TPS-Catchup.patch rename to patches/server/0043-Configurable-TPS-Catchup.patch diff --git a/patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch similarity index 96% rename from patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch rename to patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index fbfcc7735..d357ceeda 100644 --- a/patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,7 +18,7 @@ index 3ff06cc6ad35567bcb1f29115db63c11a8e79dbb..f7dd785bdb0dbd0706b367b48235215f if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c96caceb66932a731bbd702f0b8f5eb829855dc1..e1c7a3ff87a3ecc0cb90acd0502a627be22982fc 100644 +index 40493cbb1b14f16549b95aa439e4c25c04a0627c..a5ec746fc30af0093430bb7a7f6848081220ec57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,9 +97,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch similarity index 93% rename from patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch rename to patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch index d79789f82..d66f9a8f4 100644 --- a/patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index 3abfc4f449552ec60a1f7c4e3faa9fd0ebfdc300..89275ac02fcfab963b520efae6135d6f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1c7a3ff87a3ecc0cb90acd0502a627be22982fc..5c12dd12ea462137fd95a5e161742c54c097868a 100644 +index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c04316fec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -405,6 +405,7 @@ public class PurpurWorldConfig { +@@ -437,6 +437,7 @@ public class PurpurWorldConfig { public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index e1c7a3ff87a3ecc0cb90acd0502a627be22982fc..5c12dd12ea462137fd95a5e161742c54 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -416,6 +417,7 @@ public class PurpurWorldConfig { +@@ -448,6 +449,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index e1c7a3ff87a3ecc0cb90acd0502a627be22982fc..5c12dd12ea462137fd95a5e161742c54 } public boolean dolphinRidable = false; -@@ -522,6 +524,7 @@ public class PurpurWorldConfig { +@@ -554,6 +556,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = true; public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index e1c7a3ff87a3ecc0cb90acd0502a627be22982fc..5c12dd12ea462137fd95a5e161742c54 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -532,6 +535,7 @@ public class PurpurWorldConfig { +@@ -564,6 +567,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0045-Villagers-follow-emerald-blocks.patch b/patches/server/0046-Villagers-follow-emerald-blocks.patch similarity index 94% rename from patches/server/0045-Villagers-follow-emerald-blocks.patch rename to patches/server/0046-Villagers-follow-emerald-blocks.patch index e6a6d4347..ca38dbc6b 100644 --- a/patches/server/0045-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0046-Villagers-follow-emerald-blocks.patch @@ -54,10 +54,10 @@ index ac3cca0db4478841f91d966bd49ca4e5b5e91229..30f13bc35a96950f05b065b5c7783083 this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c12dd12ea462137fd95a5e161742c54c097868a..90e8dd9c38f123e37826ac587d70ed3f4c1e43e0 100644 +index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb42481c041e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1403,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1435,7 @@ public class PurpurWorldConfig { public boolean villagerRidableInWater = true; public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; @@ -65,7 +65,7 @@ index 5c12dd12ea462137fd95a5e161742c54c097868a..90e8dd9c38f123e37826ac587d70ed3f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1413,6 +1414,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); @@ -73,7 +73,7 @@ index 5c12dd12ea462137fd95a5e161742c54c097868a..90e8dd9c38f123e37826ac587d70ed3f } public boolean vindicatorRidable = false; -@@ -1435,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1469,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = true; public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index 5c12dd12ea462137fd95a5e161742c54c097868a..90e8dd9c38f123e37826ac587d70ed3f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1445,6 +1448,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1480,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0046-Allow-leashing-villagers.patch b/patches/server/0047-Allow-leashing-villagers.patch similarity index 94% rename from patches/server/0046-Allow-leashing-villagers.patch rename to patches/server/0047-Allow-leashing-villagers.patch index 4dd25724e..33f1f3212 100644 --- a/patches/server/0046-Allow-leashing-villagers.patch +++ b/patches/server/0047-Allow-leashing-villagers.patch @@ -49,10 +49,10 @@ index 30f13bc35a96950f05b065b5c77830834e5792d1..9d5eaaf1869a3ecb61947ab0c09af558 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 90e8dd9c38f123e37826ac587d70ed3f4c1e43e0..62c8414d89d83fdaedcbbb783b84047364ef4b43 100644 +index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346af890ae0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1404,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1436,6 +1436,7 @@ public class PurpurWorldConfig { public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index 90e8dd9c38f123e37826ac587d70ed3f4c1e43e0..62c8414d89d83fdaedcbbb783b840473 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1415,6 +1416,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1448,7 @@ public class PurpurWorldConfig { } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index 90e8dd9c38f123e37826ac587d70ed3f4c1e43e0..62c8414d89d83fdaedcbbb783b840473 } public boolean vindicatorRidable = false; -@@ -1438,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1472,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index 90e8dd9c38f123e37826ac587d70ed3f4c1e43e0..62c8414d89d83fdaedcbbb783b840473 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1449,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1484,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0047-Implement-infinite-liquids.patch b/patches/server/0048-Implement-infinite-liquids.patch similarity index 95% rename from patches/server/0047-Implement-infinite-liquids.patch rename to patches/server/0048-Implement-infinite-liquids.patch index 0e33f8952..e52ee6bdf 100644 --- a/patches/server/0047-Implement-infinite-liquids.patch +++ b/patches/server/0048-Implement-infinite-liquids.patch @@ -67,10 +67,10 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62c8414d89d83fdaedcbbb783b84047364ef4b43..bbf7a39f35e14117ce96f1df59d400edb75c1816 100644 +index c07064174a0ef81a9bbe628251ee1346af890ae0..5e9ce4502f5219b941ffc6f341c95d39755af664 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -189,6 +189,11 @@ public class PurpurWorldConfig { +@@ -221,6 +221,11 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } @@ -82,7 +82,7 @@ index 62c8414d89d83fdaedcbbb783b84047364ef4b43..bbf7a39f35e14117ce96f1df59d400ed public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; -@@ -198,6 +203,11 @@ public class PurpurWorldConfig { +@@ -230,6 +235,11 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } diff --git a/patches/server/0048-Make-lava-flow-speed-configurable.patch b/patches/server/0049-Make-lava-flow-speed-configurable.patch similarity index 92% rename from patches/server/0048-Make-lava-flow-speed-configurable.patch rename to patches/server/0049-Make-lava-flow-speed-configurable.patch index 4c08d6686..ba688f13d 100644 --- a/patches/server/0048-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0049-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bbf7a39f35e14117ce96f1df59d400edb75c1816..917cbc020f8c6d25df6d809c6fea0242d424f2e9 100644 +index 5e9ce4502f5219b941ffc6f341c95d39755af664..09c131e3b5282d1ac1230ddc2677f2a49449dc48 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -190,8 +190,12 @@ public class PurpurWorldConfig { +@@ -222,8 +222,12 @@ public class PurpurWorldConfig { } public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0049-Add-player-death-exp-control-options.patch b/patches/server/0050-Add-player-death-exp-control-options.patch similarity index 95% rename from patches/server/0049-Add-player-death-exp-control-options.patch rename to patches/server/0050-Add-player-death-exp-control-options.patch index de28460f0..ae4a16619 100644 --- a/patches/server/0049-Add-player-death-exp-control-options.patch +++ b/patches/server/0050-Add-player-death-exp-control-options.patch @@ -32,7 +32,7 @@ index d5383e9cbbee2f9d4223319ae38abed41a13cfb3..a838f339dd0085660164b0eb1597e0a1 return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 917cbc020f8c6d25df6d809c6fea0242d424f2e9..9efb2bf7614f160fd9871dcfbe764c5c5913c728 100644 +index 09c131e3b5282d1ac1230ddc2677f2a49449dc48..66e12893bb9d8984a8cd2916834c5e86058f47bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -171,6 +171,8 @@ public class PurpurWorldConfig { @@ -52,4 +52,4 @@ index 917cbc020f8c6d25df6d809c6fea0242d424f2e9..9efb2bf7614f160fd9871dcfbe764c5c + playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); } - public boolean farmlandGetsMoistFromBelow = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0050-Configurable-void-damage-height-and-damage.patch b/patches/server/0051-Configurable-void-damage-height-and-damage.patch similarity index 97% rename from patches/server/0050-Configurable-void-damage-height-and-damage.patch rename to patches/server/0051-Configurable-void-damage-height-and-damage.patch index 0d02f425e..8adbee6ec 100644 --- a/patches/server/0050-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0051-Configurable-void-damage-height-and-damage.patch @@ -31,7 +31,7 @@ index 7b210484fd10e6e994c66afb45f8a28ffb5812f1..ed8833ed95584cdf9be2b931915277c0 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9efb2bf7614f160fd9871dcfbe764c5c5913c728..8e5fdabb6931b11fd0fe4859be651ad3d34425b0 100644 +index 66e12893bb9d8984a8cd2916834c5e86058f47bb..03c35e455b405517114ffc043732359c112e343f 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/server/0051-Add-canSaveToDisk-to-Entity.patch b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch similarity index 100% rename from patches/server/0051-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0052-Add-canSaveToDisk-to-Entity.patch diff --git a/patches/server/0052-Dispenser-curse-of-binding-protection.patch b/patches/server/0053-Dispenser-curse-of-binding-protection.patch similarity index 92% rename from patches/server/0052-Dispenser-curse-of-binding-protection.patch rename to patches/server/0053-Dispenser-curse-of-binding-protection.patch index d328b8ed7..9ceca7396 100644 --- a/patches/server/0052-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0053-Dispenser-curse-of-binding-protection.patch @@ -43,11 +43,11 @@ index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103 // 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 8e5fdabb6931b11fd0fe4859be651ad3d34425b0..88f775c79f946d73984cbd89cc6273c04271c676 100644 +index 03c35e455b405517114ffc043732359c112e343f..27c1f09be7d664073263a02a8854ff1e8c6f9ab1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -192,6 +192,11 @@ public class PurpurWorldConfig { - playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); +@@ -224,6 +224,11 @@ public class PurpurWorldConfig { + }); } + public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch similarity index 95% rename from patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch index d5489a040..dfbc74be0 100644 --- a/patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch @@ -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 88f775c79f946d73984cbd89cc6273c04271c676..b9adcd0772674ba2d2f0d523b1adad57055b6e2a 100644 +index 27c1f09be7d664073263a02a8854ff1e8c6f9ab1..76c1cfc35b598eab2ca27656feeb17f79dde7e00 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/server/0054-Mending-mends-most-damages-equipment-first.patch b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch similarity index 98% rename from patches/server/0054-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0055-Mending-mends-most-damages-equipment-first.patch index fe5e0e660..e79a10187 100644 --- a/patches/server/0054-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch @@ -73,7 +73,7 @@ index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d8251 public static java.util.Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, stack -> true); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b9adcd0772674ba2d2f0d523b1adad57055b6e2a..956072d6feefd5cefa2c1c666972557d2f212331 100644 +index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 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/server/0055-Add-5-second-tps-average-in-tps.patch b/patches/server/0056-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0055-Add-5-second-tps-average-in-tps.patch rename to patches/server/0056-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0056-Implement-elytra-settings.patch b/patches/server/0057-Implement-elytra-settings.patch similarity index 98% rename from patches/server/0056-Implement-elytra-settings.patch rename to patches/server/0057-Implement-elytra-settings.patch index 3bf9c49e0..e2c58c260 100644 --- a/patches/server/0056-Implement-elytra-settings.patch +++ b/patches/server/0057-Implement-elytra-settings.patch @@ -91,7 +91,7 @@ index 47de500fddb0716d142f8f5876a82a95afaa06fa..b094f4ec513194e10442156d8f7f2205 entityhuman.startAutoSpinAttack(20); if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 956072d6feefd5cefa2c1c666972557d2f212331..0d5563dd3c61e4ed28ba4b1a1725501de1e9e3c3 100644 +index 6705d722e1abe678a5cb90503904dc7888bf55ee..88aabe09118cbbad3add3cee44e237580294f685 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/server/0057-Item-entity-immunities.patch b/patches/server/0058-Item-entity-immunities.patch similarity index 98% rename from patches/server/0057-Item-entity-immunities.patch rename to patches/server/0058-Item-entity-immunities.patch index 20c9d3c5f..c45cb2d67 100644 --- a/patches/server/0057-Item-entity-immunities.patch +++ b/patches/server/0058-Item-entity-immunities.patch @@ -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 0d5563dd3c61e4ed28ba4b1a1725501de1e9e3c3..40edab1e1c83b02de14af76ea4949bbcede84f6f 100644 +index 88aabe09118cbbad3add3cee44e237580294f685..62074152a0a494bbde4c39074942425a8b850ffd 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/server/0058-Add-ping-command.patch b/patches/server/0059-Add-ping-command.patch similarity index 100% rename from patches/server/0058-Add-ping-command.patch rename to patches/server/0059-Add-ping-command.patch diff --git a/patches/server/0059-Add-demo-command.patch b/patches/server/0060-Add-demo-command.patch similarity index 100% rename from patches/server/0059-Add-demo-command.patch rename to patches/server/0060-Add-demo-command.patch diff --git a/patches/server/0060-Add-credits-command.patch b/patches/server/0061-Add-credits-command.patch similarity index 100% rename from patches/server/0060-Add-credits-command.patch rename to patches/server/0061-Add-credits-command.patch diff --git a/patches/server/0061-Configurable-jockey-options.patch b/patches/server/0062-Configurable-jockey-options.patch similarity index 95% rename from patches/server/0061-Configurable-jockey-options.patch rename to patches/server/0062-Configurable-jockey-options.patch index 4bea52e17..8b8ec6285 100644 --- a/patches/server/0061-Configurable-jockey-options.patch +++ b/patches/server/0062-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ 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 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a5ca13a0f 100644 +index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef853e00ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -556,6 +556,9 @@ public class PurpurWorldConfig { +@@ -588,6 +588,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -567,6 +570,9 @@ public class PurpurWorldConfig { +@@ -599,6 +602,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a } public boolean elderGuardianRidable = false; -@@ -815,6 +821,9 @@ public class PurpurWorldConfig { +@@ -847,6 +853,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -826,6 +835,9 @@ public class PurpurWorldConfig { +@@ -858,6 +867,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a } public boolean illusionerRidable = false; -@@ -1642,6 +1654,9 @@ public class PurpurWorldConfig { +@@ -1674,6 +1686,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1653,6 +1668,9 @@ public class PurpurWorldConfig { +@@ -1685,6 +1700,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 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a } public boolean zombieHorseRidable = false; -@@ -1689,6 +1707,9 @@ public class PurpurWorldConfig { +@@ -1721,6 +1739,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1700,6 +1721,9 @@ public class PurpurWorldConfig { +@@ -1732,6 +1753,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 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a } public boolean zombifiedPiglinRidable = false; -@@ -1707,6 +1731,9 @@ public class PurpurWorldConfig { +@@ -1739,6 +1763,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index 40edab1e1c83b02de14af76ea4949bbcede84f6f..0d016b2c3aa623c2cfa48ab5faa7481a private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1718,5 +1745,8 @@ public class PurpurWorldConfig { +@@ -1750,5 +1777,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 98% rename from patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index d58cf2d6b..b8b783a89 100644 --- a/patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -256,10 +256,10 @@ 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 0d016b2c3aa623c2cfa48ab5faa7481a5ca13a0f..cbc5cf3b5a2d2b0ccb6b7ba9ee509a35e9f8ae63 100644 +index 7fabef36d3f9a5294a62ed956010d7ef853e00ab..e1652079b92a5c951b5191997803e9d486892c61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1033,6 +1033,9 @@ public class PurpurWorldConfig { +@@ -1065,6 +1065,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index 0d016b2c3aa623c2cfa48ab5faa7481a5ca13a0f..cbc5cf3b5a2d2b0ccb6b7ba9ee509a35 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1054,6 +1057,9 @@ public class PurpurWorldConfig { +@@ -1086,6 +1089,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0063-Add-phantom-spawning-options.patch b/patches/server/0064-Add-phantom-spawning-options.patch similarity index 96% rename from patches/server/0063-Add-phantom-spawning-options.patch rename to patches/server/0064-Add-phantom-spawning-options.patch index 207759689..3bd99a5d7 100644 --- a/patches/server/0063-Add-phantom-spawning-options.patch +++ b/patches/server/0064-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ 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 cbc5cf3b5a2d2b0ccb6b7ba9ee509a35e9f8ae63..ba65dc9930376f014164ca95b607c23b092e2573 100644 +index e1652079b92a5c951b5191997803e9d486892c61..10de2140aa89f75e7f67b38f6c1286f4330d127b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1036,6 +1036,12 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index cbc5cf3b5a2d2b0ccb6b7ba9ee509a35e9f8ae63..ba65dc9930376f014164ca95b607c23b private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1060,6 +1066,12 @@ public class PurpurWorldConfig { +@@ -1092,6 +1098,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0064-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch similarity index 93% rename from patches/server/0064-Implement-bed-explosion-options.patch rename to patches/server/0065-Implement-bed-explosion-options.patch index 89efb6afe..2ff47c399 100644 --- a/patches/server/0064-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -27,11 +27,11 @@ index e9f8949267208b93f0c56c36ada38274ed4280f5..9084e11df829fb24489773d15435a3a3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba65dc9930376f014164ca95b607c23b092e2573..b1d307815d6090ed32e0178bee8ed720ecb022ce 100644 +index 10de2140aa89f75e7f67b38f6c1286f4330d127b..95f016b7c127129b71e266a3daefd55502fdb299 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -252,6 +252,27 @@ public class PurpurWorldConfig { - playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); +@@ -284,6 +284,27 @@ public class PurpurWorldConfig { + }); } + public boolean bedExplode = true; diff --git a/patches/server/0065-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch similarity index 95% rename from patches/server/0065-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0066-Implement-respawn-anchor-explosion-options.patch index aca026954..1cf02a3c0 100644 --- a/patches/server/0065-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 4e2fad1f234356ada6f29445038e43b9a8406cf9..6f3f53940431afc7a22b262d9d34bc0a 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 b1d307815d6090ed32e0178bee8ed720ecb022ce..60e9354c77a2cd2e684252a6d67710822b555743 100644 +index 95f016b7c127129b71e266a3daefd55502fdb299..55ae989ae13ae9c0730f6f8df5f7eba52a560b1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -292,6 +292,27 @@ public class PurpurWorldConfig { +@@ -324,6 +324,27 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0066-Add-allow-water-in-end-world-option.patch b/patches/server/0067-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/server/0066-Add-allow-water-in-end-world-option.patch rename to patches/server/0067-Add-allow-water-in-end-world-option.patch diff --git a/patches/server/0067-Entity-lifespan.patch b/patches/server/0068-Entity-lifespan.patch similarity index 98% rename from patches/server/0067-Entity-lifespan.patch rename to patches/server/0068-Entity-lifespan.patch index d304d3b75..5e9facec0 100644 --- a/patches/server/0067-Entity-lifespan.patch +++ b/patches/server/0068-Entity-lifespan.patch @@ -94,7 +94,7 @@ index c4392a997061aa4939e5ad7dcacf5e39cbecc55a..e7251ac940b49564c83b4b603e49c399 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60e9354c77a2cd2e684252a6d67710822b555743..d5026545ae9126e979103cf7b701867a4d21d9bf 100644 +index 55ae989ae13ae9c0730f6f8df5f7eba52a560b1f..9ba3a90e1af9c733949c52988c56c05af46356e8 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/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 96% rename from patches/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index e0226a01d..21154237b 100644 --- a/patches/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -48,7 +48,7 @@ index 9a2725e3f61a7d37943518cc760b17859a0938bb..9a912752b12730a8fb09f5a6ab5a8638 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5026545ae9126e979103cf7b701867a4d21d9bf..7822c9d78f49a9e1c2ce42cf689d7afe0e4d7b69 100644 +index 9ba3a90e1af9c733949c52988c56c05af46356e8..98e6faaeeaf8a983f9d730591a9d85c314c112d3 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 { @@ -66,4 +66,4 @@ index d5026545ae9126e979103cf7b701867a4d21d9bf..7822c9d78f49a9e1c2ce42cf689d7afe + teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); } - public boolean bedExplode = true; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0069-Squid-EAR-immunity.patch b/patches/server/0070-Squid-EAR-immunity.patch similarity index 91% rename from patches/server/0069-Squid-EAR-immunity.patch rename to patches/server/0070-Squid-EAR-immunity.patch index edd1010b4..6e6183b7a 100644 --- a/patches/server/0069-Squid-EAR-immunity.patch +++ b/patches/server/0070-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7822c9d78f49a9e1c2ce42cf689d7afe0e4d7b69..fb36eac6390e31e9611f94174668d29a89c6f5d9 100644 +index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630629ec132 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1421,6 +1421,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1453,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 7822c9d78f49a9e1c2ce42cf689d7afe0e4d7b69..fb36eac6390e31e9611f94174668d29a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1430,6 +1431,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1463,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0070-Phantoms-burn-in-light.patch b/patches/server/0071-Phantoms-burn-in-light.patch similarity index 96% rename from patches/server/0070-Phantoms-burn-in-light.patch rename to patches/server/0071-Phantoms-burn-in-light.patch index 01bae219a..d35474462 100644 --- a/patches/server/0070-Phantoms-burn-in-light.patch +++ b/patches/server/0071-Phantoms-burn-in-light.patch @@ -51,10 +51,10 @@ 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 fb36eac6390e31e9611f94174668d29a89c6f5d9..cfa0faec3609126b1f76f4840e813efda52192d1 100644 +index 27d279d76fd3632fd023edded3b10630629ec132..dcd9f80eb69e34b514f57158568e4cb59e9860ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1091,6 +1091,9 @@ public class PurpurWorldConfig { +@@ -1123,6 +1123,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index fb36eac6390e31e9611f94174668d29a89c6f5d9..cfa0faec3609126b1f76f4840e813efd private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1121,6 +1124,9 @@ public class PurpurWorldConfig { +@@ -1153,6 +1156,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0071-Configurable-villager-breeding.patch b/patches/server/0072-Configurable-villager-breeding.patch similarity index 91% rename from patches/server/0071-Configurable-villager-breeding.patch rename to patches/server/0072-Configurable-villager-breeding.patch index f6f8f1a68..71c318976 100644 --- a/patches/server/0071-Configurable-villager-breeding.patch +++ b/patches/server/0072-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ 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 cfa0faec3609126b1f76f4840e813efda52192d1..aa429a369a5fa7225b4dcadfae79e665f69b3365 100644 +index dcd9f80eb69e34b514f57158568e4cb59e9860ec..df4f384032f398fc9852e753dee820ffa33e10bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1579,6 +1579,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index cfa0faec3609126b1f76f4840e813efda52192d1..aa429a369a5fa7225b4dcadfae79e665 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1591,6 +1592,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1624,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0072-Redstone-deactivates-spawners.patch b/patches/server/0073-Redstone-deactivates-spawners.patch similarity index 91% rename from patches/server/0072-Redstone-deactivates-spawners.patch rename to patches/server/0073-Redstone-deactivates-spawners.patch index 2a96b9869..41653f9a7 100644 --- a/patches/server/0072-Redstone-deactivates-spawners.patch +++ b/patches/server/0073-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa429a369a5fa7225b4dcadfae79e665f69b3365..008b01f578441f35397b39bdb2e4dd6a4b0e7948 100644 +index df4f384032f398fc9852e753dee820ffa33e10bb..85d2030c58fb97be82c97a042bc5d73e76274268 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -320,6 +320,11 @@ public class PurpurWorldConfig { +@@ -352,6 +352,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0073-Totems-work-in-inventory.patch b/patches/server/0074-Totems-work-in-inventory.patch similarity index 95% rename from patches/server/0073-Totems-work-in-inventory.patch rename to patches/server/0074-Totems-work-in-inventory.patch index c9e33d02a..1babbff8a 100644 --- a/patches/server/0073-Totems-work-in-inventory.patch +++ b/patches/server/0074-Totems-work-in-inventory.patch @@ -28,7 +28,7 @@ index 9a912752b12730a8fb09f5a6ab5a8638b555e3e3..2ea60043f3bbf6cce77799f6c74ffe1f 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 008b01f578441f35397b39bdb2e4dd6a4b0e7948..58d9ce9b8fb97d947c265b6ffdd5e864a1aad012 100644 +index 85d2030c58fb97be82c97a042bc5d73e76274268..be916fe3a8bc8996be8b0835e3bd8f7920c15055 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 { @@ -46,4 +46,4 @@ index 008b01f578441f35397b39bdb2e4dd6a4b0e7948..58d9ce9b8fb97d947c265b6ffdd5e864 + totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } - public boolean bedExplode = true; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0074-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch similarity index 91% rename from patches/server/0074-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0075-Add-vindicator-johnny-spawn-chance.patch index 929db38c4..34abb4304 100644 --- a/patches/server/0074-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,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 58d9ce9b8fb97d947c265b6ffdd5e864a1aad012..17ff9373ecc58d1d197c97c490ce6c6cdb5a62c3 100644 +index be916fe3a8bc8996be8b0835e3bd8f7920c15055..7b584d5c8460e90dfea250591e4ca36cb1db004a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1606,6 +1606,7 @@ public class PurpurWorldConfig { +@@ -1638,6 +1638,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index 58d9ce9b8fb97d947c265b6ffdd5e864a1aad012..17ff9373ecc58d1d197c97c490ce6c6c private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1616,6 +1617,7 @@ public class PurpurWorldConfig { +@@ -1648,6 +1649,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0075-Dispensers-place-anvils-option.patch b/patches/server/0076-Dispensers-place-anvils-option.patch similarity index 94% rename from patches/server/0075-Dispensers-place-anvils-option.patch rename to patches/server/0076-Dispensers-place-anvils-option.patch index e7ddd7e89..0dbf632e9 100644 --- a/patches/server/0075-Dispensers-place-anvils-option.patch +++ b/patches/server/0076-Dispensers-place-anvils-option.patch @@ -32,10 +32,10 @@ index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..68236139e3571791b891dbbef6e3ee20 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17ff9373ecc58d1d197c97c490ce6c6cdb5a62c3..7a5b2c4ac1a4ab952fd23474ddf4f37926fc3ff5 100644 +index 7b584d5c8460e90dfea250591e4ca36cb1db004a..00c4cda4ca21195c4fbfeb47f92e197be18aa4c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -283,8 +283,10 @@ public class PurpurWorldConfig { +@@ -315,8 +315,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0076-Allow-anvil-colors.patch b/patches/server/0077-Allow-anvil-colors.patch similarity index 94% rename from patches/server/0076-Allow-anvil-colors.patch rename to patches/server/0077-Allow-anvil-colors.patch index b309a5b2a..cdcf19f9a 100644 --- a/patches/server/0076-Allow-anvil-colors.patch +++ b/patches/server/0077-Allow-anvil-colors.patch @@ -64,11 +64,11 @@ 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 7a5b2c4ac1a4ab952fd23474ddf4f37926fc3ff5..a846066d44340a588fe532b2e19dc6de19ff8f07 100644 +index 00c4cda4ca21195c4fbfeb47f92e197be18aa4c6..4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -261,6 +261,13 @@ public class PurpurWorldConfig { - totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); +@@ -293,6 +293,13 @@ public class PurpurWorldConfig { + }); } + public boolean anvilAllowColors = false; diff --git a/patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 90% rename from patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch index bf6aa83e6..23dbd04de 100644 --- a/patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a846066d44340a588fe532b2e19dc6de19ff8f07..a371280fffdf9d9bc35a412aacf8c9e6220aa5eb 100644 +index 4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9..b9faaf71e0cd5918b072d068bbc2096aa2805616 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -578,6 +578,7 @@ public class PurpurWorldConfig { +@@ -610,6 +610,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index a846066d44340a588fe532b2e19dc6de19ff8f07..a371280fffdf9d9bc35a412aacf8c9e6 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -590,6 +591,7 @@ public class PurpurWorldConfig { +@@ -622,6 +623,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0078-Short-enderman-height.patch b/patches/server/0079-Short-enderman-height.patch similarity index 100% rename from patches/server/0078-Short-enderman-height.patch rename to patches/server/0079-Short-enderman-height.patch diff --git a/patches/server/0079-Stop-squids-floating-on-top-of-water.patch b/patches/server/0080-Stop-squids-floating-on-top-of-water.patch similarity index 94% rename from patches/server/0079-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0080-Stop-squids-floating-on-top-of-water.patch index 8c6fcc8e9..0ce118bf6 100644 --- a/patches/server/0079-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0080-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ 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 a371280fffdf9d9bc35a412aacf8c9e6220aa5eb..3bd08df44e11ded9bf70a3e66cfa2b3a324a38db 100644 +index b9faaf71e0cd5918b072d068bbc2096aa2805616..56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1446,6 +1446,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1478,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index a371280fffdf9d9bc35a412aacf8c9e6220aa5eb..3bd08df44e11ded9bf70a3e66cfa2b3a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1456,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1489,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0081-Entities-can-use-portals-configuration.patch b/patches/server/0082-Entities-can-use-portals-configuration.patch similarity index 97% rename from patches/server/0081-Entities-can-use-portals-configuration.patch rename to patches/server/0082-Entities-can-use-portals-configuration.patch index 5eb7e6a28..571526817 100644 --- a/patches/server/0081-Entities-can-use-portals-configuration.patch +++ b/patches/server/0082-Entities-can-use-portals-configuration.patch @@ -27,7 +27,7 @@ index 9a3796a69dd8745a498be5f2bb06c50355af44ce..a93ae9de698ce97e8603deb1075e6dc5 public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bd08df44e11ded9bf70a3e66cfa2b3a324a38db..7c241acf936147cdff652548a66fa9c2664894c4 100644 +index 56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c..1f25407aafba71762a482f0b1982302fed14387f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,6 +98,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0082-LivingEntity-broadcastItemBreak.patch b/patches/server/0083-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0082-LivingEntity-broadcastItemBreak.patch rename to patches/server/0083-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0083-Customizable-wither-health-and-healing.patch b/patches/server/0084-Customizable-wither-health-and-healing.patch similarity index 92% rename from patches/server/0083-Customizable-wither-health-and-healing.patch rename to patches/server/0084-Customizable-wither-health-and-healing.patch index 9cd3b13f7..0ce62c319 100644 --- a/patches/server/0083-Customizable-wither-health-and-healing.patch +++ b/patches/server/0084-Customizable-wither-health-and-healing.patch @@ -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 7c241acf936147cdff652548a66fa9c2664894c4..ff10f3166f1ac4a7ef978080162865b6c336ba13 100644 +index 1f25407aafba71762a482f0b1982302fed14387f..beea39d7cdbca783de7248a5c40ea2c7ab02e5b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1685,6 +1685,8 @@ public class PurpurWorldConfig { +@@ -1717,6 +1717,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 7c241acf936147cdff652548a66fa9c2664894c4..ff10f3166f1ac4a7ef978080162865b6 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1700,6 +1702,8 @@ public class PurpurWorldConfig { +@@ -1732,6 +1734,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch similarity index 98% rename from patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch index c2f472afc..a123bfffa 100644 --- a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch @@ -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 ff10f3166f1ac4a7ef978080162865b6c336ba13..226e6055a712b81ae5831257786d496768ccea56 100644 +index beea39d7cdbca783de7248a5c40ea2c7ab02e5b5..ce5db64c233bac3800a715e66aada4740bdad95b 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 { diff --git a/patches/server/0085-Raid-cooldown-setting.patch b/patches/server/0086-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0085-Raid-cooldown-setting.patch rename to patches/server/0086-Raid-cooldown-setting.patch index 56febeda8..439cbff14 100644 --- a/patches/server/0085-Raid-cooldown-setting.patch +++ b/patches/server/0086-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ 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 226e6055a712b81ae5831257786d496768ccea56..d1802b8a5c1bd300bba6989c8bfa6c78accc041a 100644 +index ce5db64c233bac3800a715e66aada4740bdad95b..9654023afbb0569d5d814368b93b74dedda905a4 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 { diff --git a/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch similarity index 88% rename from patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch index b41e71c73..b197ba556 100644 --- a/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0087-Despawn-rate-config-options-per-projectile-type.patch @@ -7,11 +7,11 @@ 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 d1802b8a5c1bd300bba6989c8bfa6c78accc041a..42d342ff59ca98cc4b79195f2aeb430a89c6ba9b 100644 +index 9654023afbb0569d5d814368b93b74dedda905a4..8a577d78d63adc799de71f96b45320372c346552 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -286,6 +286,39 @@ public class PurpurWorldConfig { - totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); +@@ -318,6 +318,40 @@ public class PurpurWorldConfig { + }); } + private static boolean projectileDespawnRateSettingsMigrated = false; @@ -30,7 +30,7 @@ index d1802b8a5c1bd300bba6989c8bfa6c78accc041a..42d342ff59ca98cc4b79195f2aeb430a + migrateProjectileDespawnRateSettings(EntityType.SMALL_FIREBALL); + migrateProjectileDespawnRateSettings(EntityType.SNOWBALL); + migrateProjectileDespawnRateSettings(EntityType.WITHER_SKULL); -+ //PufferfishConfig.save(); ++ //PufferfishConfig.save(); // TODO: Pufferfish + set("gameplay-mechanics.projectile-despawn-rates", null); + // pufferfish's entity_timeout is a global config + // we only want to migrate values from the @@ -39,6 +39,7 @@ index d1802b8a5c1bd300bba6989c8bfa6c78accc041a..42d342ff59ca98cc4b79195f2aeb430a + } + } + private void migrateProjectileDespawnRateSettings(EntityType type) { ++ // TODO: Pufferfish + //String pufferName = "entity_timeouts." + type.id.toUpperCase(Locale.ROOT); + //int value = getInt("gameplay-mechanics.projectile-despawn-rates." + type.id, -1); + //if (value != -1 && PufferfishConfig.getRawInt(pufferName, -1) == -1) { diff --git a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 60a229425..af48746e7 100644 --- a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -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 42d342ff59ca98cc4b79195f2aeb430a89c6ba9b..ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9 100644 +index 8a577d78d63adc799de71f96b45320372c346552..69c433dd27be4a67052d73620c80d48ed6566034 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1818,6 +1818,7 @@ public class PurpurWorldConfig { +@@ -1851,6 +1851,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 42d342ff59ca98cc4b79195f2aeb430a89c6ba9b..ba6ac7cc8d41710e1cdf9e130cc9ed17 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1832,6 +1833,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1866,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0088-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0089-Flying-squids-Oh-my.patch b/patches/server/0090-Flying-squids-Oh-my.patch similarity index 94% rename from patches/server/0089-Flying-squids-Oh-my.patch rename to patches/server/0090-Flying-squids-Oh-my.patch index 748f4d805..b0907f34a 100644 --- a/patches/server/0089-Flying-squids-Oh-my.patch +++ b/patches/server/0090-Flying-squids-Oh-my.patch @@ -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 ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9..e6aa3036b089b509a6187e9909c353eb129369b9 100644 +index 69c433dd27be4a67052d73620c80d48ed6566034..636f1a2962ee48a42a644b241569f08e7d57097c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -870,10 +870,12 @@ public class PurpurWorldConfig { +@@ -903,10 +903,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9..e6aa3036b089b509a6187e9909c353eb } public boolean goatRidable = false; -@@ -1505,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1538,6 +1540,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index ba6ac7cc8d41710e1cdf9e130cc9ed170e6ab2b9..e6aa3036b089b509a6187e9909c353eb private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1516,6 +1519,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1552,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0090-Infinity-bow-settings.patch b/patches/server/0091-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0090-Infinity-bow-settings.patch rename to patches/server/0091-Infinity-bow-settings.patch index 46571573d..69e964faf 100644 --- a/patches/server/0090-Infinity-bow-settings.patch +++ b/patches/server/0091-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..4ae6b98b6a0d41e949b055f0678200a6 } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e6aa3036b089b509a6187e9909c353eb129369b9..4b88a659aeff786bcca0e8bd068fa6dadf63d17e 100644 +index 636f1a2962ee48a42a644b241569f08e7d57097c..b66182a7b52d16aac78b61cd9c077236a2abbe33 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0091-Configurable-daylight-cycle.patch b/patches/server/0092-Configurable-daylight-cycle.patch similarity index 98% rename from patches/server/0091-Configurable-daylight-cycle.patch rename to patches/server/0092-Configurable-daylight-cycle.patch index 776d42e7b..c0d9a51e8 100644 --- a/patches/server/0091-Configurable-daylight-cycle.patch +++ b/patches/server/0092-Configurable-daylight-cycle.patch @@ -88,7 +88,7 @@ index 1c74802577e056b9023dcc2cbec5885d02fe2c92..aef5157d183b69903fd215a5ce30c070 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b88a659aeff786bcca0e8bd068fa6dadf63d17e..910a88e731b64a20d88d0137e6ecb975180be71e 100644 +index b66182a7b52d16aac78b61cd9c077236a2abbe33..d2ab4fe9ccb19f837a41bddddf29cfcc96fc3f96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -122,6 +122,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0092-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/server/0092-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0093-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/server/0093-Furnace-uses-lava-from-underneath.patch b/patches/server/0094-Furnace-uses-lava-from-underneath.patch similarity index 96% rename from patches/server/0093-Furnace-uses-lava-from-underneath.patch rename to patches/server/0094-Furnace-uses-lava-from-underneath.patch index cb8e67b25..e5d2aa6fe 100644 --- a/patches/server/0093-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0094-Furnace-uses-lava-from-underneath.patch @@ -47,10 +47,10 @@ index a99fe191c429bb528209dd0f31b509acf9cccbb5..ce2c424068001eec16032361baa206f6 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder 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 910a88e731b64a20d88d0137e6ecb975180be71e..6bf609f2fe54ace1a9f8126cbc2b1ec2e4131c18 100644 +index d2ab4fe9ccb19f837a41bddddf29cfcc96fc3f96..163d2cfaeaa301c34f04ed13d8ff881ecb868224 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -377,6 +377,17 @@ public class PurpurWorldConfig { +@@ -410,6 +410,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0094-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0095-Arrows-should-not-reset-despawn-counter.patch index 3b1af187f..6fe03557a 100644 --- a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0095-Arrows-should-not-reset-despawn-counter.patch @@ -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 6bf609f2fe54ace1a9f8126cbc2b1ec2e4131c18..693b9ea8dcc05c07d5d3e79eab582015079ea69d 100644 +index 163d2cfaeaa301c34f04ed13d8ff881ecb868224..5a49ea28eb227c6d550f3d7e589fb1e98fa2d285 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/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0096-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index c8131c15f..a10dc92f4 100644 --- a/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0096-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 693b9ea8dcc05c07d5d3e79eab582015079ea69d..e3df00971e9510614bbad71cdb506653209d0820 100644 +index 5a49ea28eb227c6d550f3d7e589fb1e98fa2d285..543c7679cf1ac50ff103be3366421d4faa542319 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -378,8 +378,10 @@ public class PurpurWorldConfig { +@@ -411,8 +411,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch index 31fa5dc74..50177cb6b 100644 --- a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0097-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 2e44e9ea9558ebc1456d9bbf53561988e33ce845..edd9762e2475aa8828930ada59eb331a 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 e3df00971e9510614bbad71cdb506653209d0820..febcde8f02354c9621b3ded08af1363c549c4cfc 100644 +index 543c7679cf1ac50ff103be3366421d4faa542319..37292c309b465fce3b601a3ff8400e58c5a74308 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,6 +115,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Make-entity-breeding-times-configurable.patch b/patches/server/0098-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0097-Make-entity-breeding-times-configurable.patch rename to patches/server/0098-Make-entity-breeding-times-configurable.patch index f77cce220..a6b0bf3d5 100644 --- a/patches/server/0097-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0098-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 3bfc073fb142e3446044a42c33be6c30587cc3c4..a770ae0e13c4dad296dfb8f33259408e public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3dcd330df7 100644 +index 37292c309b465fce3b601a3ff8400e58c5a74308..8ba5fc8813ef1cb34f7df801f6d7b2ed42b1c052 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -469,10 +469,12 @@ public class PurpurWorldConfig { +@@ -502,10 +502,12 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; @@ -554,7 +554,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean batRidable = false; -@@ -512,6 +514,7 @@ public class PurpurWorldConfig { +@@ -545,6 +547,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -562,7 +562,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -523,6 +526,7 @@ public class PurpurWorldConfig { +@@ -556,6 +559,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -570,7 +570,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean blazeRidable = false; -@@ -550,6 +554,7 @@ public class PurpurWorldConfig { +@@ -583,6 +587,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -578,7 +578,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -558,6 +563,7 @@ public class PurpurWorldConfig { +@@ -591,6 +596,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -586,7 +586,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean catRidable = false; -@@ -567,6 +573,7 @@ public class PurpurWorldConfig { +@@ -600,6 +606,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -594,7 +594,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -580,6 +587,7 @@ public class PurpurWorldConfig { +@@ -613,6 +620,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -602,7 +602,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean caveSpiderRidable = false; -@@ -603,6 +611,7 @@ public class PurpurWorldConfig { +@@ -636,6 +644,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -610,7 +610,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -614,6 +623,7 @@ public class PurpurWorldConfig { +@@ -647,6 +656,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -618,7 +618,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean codRidable = false; -@@ -635,6 +645,7 @@ public class PurpurWorldConfig { +@@ -668,6 +678,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -626,7 +626,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -646,6 +657,7 @@ public class PurpurWorldConfig { +@@ -679,6 +690,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -634,7 +634,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean creeperRidable = false; -@@ -697,6 +709,7 @@ public class PurpurWorldConfig { +@@ -730,6 +742,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -642,7 +642,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -712,6 +725,7 @@ public class PurpurWorldConfig { +@@ -745,6 +758,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -650,7 +650,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean drownedRidable = false; -@@ -831,6 +845,7 @@ public class PurpurWorldConfig { +@@ -864,6 +878,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -658,7 +658,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -842,17 +857,20 @@ public class PurpurWorldConfig { +@@ -875,17 +890,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -679,7 +679,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean ghastRidable = false; -@@ -920,11 +938,13 @@ public class PurpurWorldConfig { +@@ -953,11 +971,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = true; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -693,7 +693,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean guardianRidable = false; -@@ -945,6 +965,7 @@ public class PurpurWorldConfig { +@@ -978,6 +998,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -701,7 +701,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -955,6 +976,7 @@ public class PurpurWorldConfig { +@@ -988,6 +1009,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -709,7 +709,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean horseRidableInWater = false; -@@ -964,6 +986,7 @@ public class PurpurWorldConfig { +@@ -997,6 +1019,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -717,7 +717,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -979,6 +1002,7 @@ public class PurpurWorldConfig { +@@ -1012,6 +1035,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -725,7 +725,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean huskRidable = false; -@@ -1056,6 +1080,7 @@ public class PurpurWorldConfig { +@@ -1089,6 +1113,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -733,7 +733,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1073,6 +1098,7 @@ public class PurpurWorldConfig { +@@ -1106,6 +1131,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -741,7 +741,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean magmaCubeRidable = false; -@@ -1101,6 +1127,7 @@ public class PurpurWorldConfig { +@@ -1134,6 +1160,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = true; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -749,7 +749,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1111,6 +1138,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1171,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -757,7 +757,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean muleRidableInWater = false; -@@ -1120,6 +1148,7 @@ public class PurpurWorldConfig { +@@ -1153,6 +1181,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -765,7 +765,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1135,12 +1164,14 @@ public class PurpurWorldConfig { +@@ -1168,12 +1197,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -780,7 +780,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1151,12 +1182,14 @@ public class PurpurWorldConfig { +@@ -1184,12 +1215,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -795,7 +795,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1167,6 +1200,7 @@ public class PurpurWorldConfig { +@@ -1200,6 +1233,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -803,7 +803,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean parrotRidable = false; -@@ -1250,6 +1284,7 @@ public class PurpurWorldConfig { +@@ -1283,6 +1317,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -811,7 +811,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1261,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1294,6 +1329,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -819,7 +819,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean piglinRidable = false; -@@ -1317,6 +1353,7 @@ public class PurpurWorldConfig { +@@ -1350,6 +1386,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -827,7 +827,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1330,6 +1367,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1400,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -835,7 +835,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean pufferfishRidable = false; -@@ -1352,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1423,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -843,7 +843,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1364,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1436,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -851,7 +851,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean ravagerRidable = false; -@@ -1400,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1433,6 +1473,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -859,7 +859,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1410,6 +1451,7 @@ public class PurpurWorldConfig { +@@ -1443,6 +1484,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -867,7 +867,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean shulkerRidable = false; -@@ -1533,11 +1575,13 @@ public class PurpurWorldConfig { +@@ -1566,11 +1608,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -881,7 +881,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean squidRidable = false; -@@ -1596,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1673,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -889,7 +889,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1606,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1639,6 +1684,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -897,7 +897,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean tadpoleRidable = false; -@@ -1626,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1659,6 +1705,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -905,7 +905,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1643,6 +1690,7 @@ public class PurpurWorldConfig { +@@ -1676,6 +1723,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -913,7 +913,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean tropicalFishRidable = false; -@@ -1663,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1696,6 +1744,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -921,7 +921,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1673,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1706,6 +1755,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -929,7 +929,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean vexRidable = false; -@@ -1700,6 +1750,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1783,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -937,7 +937,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1713,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1797,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -945,7 +945,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d } public boolean vindicatorRidable = false; -@@ -1824,6 +1876,7 @@ public class PurpurWorldConfig { +@@ -1857,6 +1909,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -953,7 +953,7 @@ index febcde8f02354c9621b3ded08af1363c549c4cfc..b34df3578dbf8d3aa7ac75598d1a1f3d private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1834,6 +1887,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1920,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 98% rename from patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch index ba1ee76bc..f746e667a 100644 --- a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0099-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index 530167ce8e5bb72a418f8ec61411e38a5892fd72..35dc7546793dba34bf6debad3f214f61 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b34df3578dbf8d3aa7ac75598d1a1f3dcd330df7..d362bc34ec171d55abc5fe7699bb31917c19e4f0 100644 +index 8ba5fc8813ef1cb34f7df801f6d7b2ed42b1c052..1f5cfaf07e0fd86a530b57fd0198ade2b1d0d999 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 0750ce961..aef93925b 100644 --- a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0100-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d362bc34ec171d55abc5fe7699bb31917c19e4f0..e00eda1d7767fdd01b9ef90a8b2d56350b05b92e 100644 +index 1f5cfaf07e0fd86a530b57fd0198ade2b1d0d999..548ad445ed73c5009c93cadb0ee8e39acdbd737c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 91% rename from patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index d1456f40f..c83b3b0e5 100644 --- a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0101-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index cb307a9419399e33a895376a584456f084691965..052a0c168268b7e788953063f54c3769 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e00eda1d7767fdd01b9ef90a8b2d56350b05b92e..8a35a9ad7a81308237a3c69ea9a1330a0e8b7548 100644 +index 548ad445ed73c5009c93cadb0ee8e39acdbd737c..2afd56fd352f7a0bd2028a2b9b238f3d1d8fe14a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -801,6 +801,7 @@ public class PurpurWorldConfig { +@@ -834,6 +834,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index e00eda1d7767fdd01b9ef90a8b2d56350b05b92e..8a35a9ad7a81308237a3c69ea9a1330a private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -812,6 +813,7 @@ public class PurpurWorldConfig { +@@ -845,6 +846,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0101-Add-configurable-snowball-damage.patch b/patches/server/0102-Add-configurable-snowball-damage.patch similarity index 92% rename from patches/server/0101-Add-configurable-snowball-damage.patch rename to patches/server/0102-Add-configurable-snowball-damage.patch index 2abf89257..226d4c521 100644 --- a/patches/server/0101-Add-configurable-snowball-damage.patch +++ b/patches/server/0102-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a35a9ad7a81308237a3c69ea9a1330a0e8b7548..a63c53c5d0309237337f3ef927b0eec8e7a6fbb5 100644 +index 2afd56fd352f7a0bd2028a2b9b238f3d1d8fe14a..f87abb5d0572b8d51c91dd90638e7a728c49a69a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -350,6 +350,11 @@ public class PurpurWorldConfig { +@@ -383,6 +383,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch similarity index 95% rename from patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch index 8eb17c4e5..1fd4f031c 100644 --- a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0103-Changeable-Mob-Left-Handed-Chance.patch @@ -18,7 +18,7 @@ index e7251ac940b49564c83b4b603e49c3990fc85db1..34d00acc43d2541307aa90a77a3c5d19 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a63c53c5d0309237337f3ef927b0eec8e7a6fbb5..c1fb70e037639828ef9209b78dcb0869496093db 100644 +index f87abb5d0572b8d51c91dd90638e7a728c49a69a..4ac5d5469312b5f9e0203551baa085317189553b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -156,8 +156,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-Add-boat-fall-damage-config.patch b/patches/server/0104-Add-boat-fall-damage-config.patch similarity index 97% rename from patches/server/0103-Add-boat-fall-damage-config.patch rename to patches/server/0104-Add-boat-fall-damage-config.patch index 73b88d5a5..6282219c2 100644 --- a/patches/server/0103-Add-boat-fall-damage-config.patch +++ b/patches/server/0104-Add-boat-fall-damage-config.patch @@ -27,7 +27,7 @@ index 03b206289d103a36d19dcf3154f10ad98f976ba2..fe250c154aed8b10e33c6b916cabedb0 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c1fb70e037639828ef9209b78dcb0869496093db..75ec9a5e012ba7bccfbd980a9b38a78239f2ec85 100644 +index 4ac5d5469312b5f9e0203551baa085317189553b..8a0a018ff9119afe4ada2f30f98b260a523f2e70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0104-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0105-Snow-Golem-rate-of-fire-config.patch index d912b82d1..2c258fc94 100644 --- a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0105-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75ec9a5e012ba7bccfbd980a9b38a78239f2ec85..c08e2bd031aff2baa0ec5588b0c035f38949ca88 100644 +index 8a0a018ff9119afe4ada2f30f98b260a523f2e70..51d9cdfce0cdcf2daa882fdcc75123c925396d10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1574,6 +1574,10 @@ public class PurpurWorldConfig { +@@ -1607,6 +1607,10 @@ public class PurpurWorldConfig { public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 75ec9a5e012ba7bccfbd980a9b38a78239f2ec85..c08e2bd031aff2baa0ec5588b0c035f3 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1586,6 +1590,10 @@ public class PurpurWorldConfig { +@@ -1619,6 +1623,10 @@ public class PurpurWorldConfig { } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0105-EMC-Configurable-disable-give-dropping.patch b/patches/server/0106-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0105-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0106-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index f3ea47ce2..527b784f4 100644 --- a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0107-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 1316f4475802e17039800cc6128e1b065328beb7..d02e2d1aceac651e06a3a3698b7ac64d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c08e2bd031aff2baa0ec5588b0c035f38949ca88..c6eeb701abd00f7a7772eac8ef5ed438228b3bb7 100644 +index 51d9cdfce0cdcf2daa882fdcc75123c925396d10..f20f4622871b840ba18a78bb0806028ba706f74e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1776,6 +1776,8 @@ public class PurpurWorldConfig { +@@ -1809,6 +1809,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index c08e2bd031aff2baa0ec5588b0c035f38949ca88..c6eeb701abd00f7a7772eac8ef5ed438 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1790,6 +1792,8 @@ public class PurpurWorldConfig { +@@ -1823,6 +1825,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 105b98b42..2f898ce18 100644 --- a/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0108-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 75c34d9fcc4b33d30b18f1ce4c8749a068744abc..6be751e2d434982a35bbbece4f4fc463 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6eeb701abd00f7a7772eac8ef5ed438228b3bb7..a46f31d3e57b961af5b31534ff214399f4f33e83 100644 +index f20f4622871b840ba18a78bb0806028ba706f74e..d621f330f954a12635d8c87c5ff66dae7448a856 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2022,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2055,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index c6eeb701abd00f7a7772eac8ef5ed438228b3bb7..a46f31d3e57b961af5b31534ff214399 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2036,5 +2037,6 @@ public class PurpurWorldConfig { +@@ -2069,5 +2070,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch index cc73b95d7..b20a45261 100644 --- a/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0109-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -191,10 +191,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a46f31d3e57b961af5b31534ff214399f4f33e83..9e9f874bcb0573f65afbe5137f1b223337cdf40d 100644 +index d621f330f954a12635d8c87c5ff66dae7448a856..fc0a733df7f0e851681bed1b22bfa6836812272a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1905,6 +1905,8 @@ public class PurpurWorldConfig { +@@ -1938,6 +1938,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -203,7 +203,7 @@ index a46f31d3e57b961af5b31534ff214399f4f33e83..9e9f874bcb0573f65afbe5137f1b2233 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1916,6 +1918,8 @@ public class PurpurWorldConfig { +@@ -1949,6 +1951,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0109-Configurable-default-collar-color.patch b/patches/server/0110-Configurable-default-collar-color.patch similarity index 93% rename from patches/server/0109-Configurable-default-collar-color.patch rename to patches/server/0110-Configurable-default-collar-color.patch index b77b75628..784a1651c 100644 --- a/patches/server/0109-Configurable-default-collar-color.patch +++ b/patches/server/0110-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index 5c74febb5ff6632a35f856717a6c44df38c1d329..0364c0ded7842a86043c9c925bb123aa protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e9f874bcb0573f65afbe5137f1b223337cdf40d..5120330969bb220162da27762a6a7e202d64c120 100644 +index fc0a733df7f0e851681bed1b22bfa6836812272a..d73268340e5201181f42084fbe47883a22d062cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -589,6 +589,7 @@ public class PurpurWorldConfig { +@@ -622,6 +622,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index 9e9f874bcb0573f65afbe5137f1b223337cdf40d..5120330969bb220162da27762a6a7e20 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -603,6 +604,11 @@ public class PurpurWorldConfig { +@@ -636,6 +637,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index 9e9f874bcb0573f65afbe5137f1b223337cdf40d..5120330969bb220162da27762a6a7e20 } public boolean caveSpiderRidable = false; -@@ -1905,6 +1911,7 @@ public class PurpurWorldConfig { +@@ -1938,6 +1944,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 9e9f874bcb0573f65afbe5137f1b223337cdf40d..5120330969bb220162da27762a6a7e20 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1918,6 +1925,11 @@ public class PurpurWorldConfig { +@@ -1951,6 +1958,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0110-Phantom-flames-on-swoop.patch b/patches/server/0111-Phantom-flames-on-swoop.patch similarity index 91% rename from patches/server/0110-Phantom-flames-on-swoop.patch rename to patches/server/0111-Phantom-flames-on-swoop.patch index 386b9dfd8..2c374a8b6 100644 --- a/patches/server/0110-Phantom-flames-on-swoop.patch +++ b/patches/server/0111-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 1ddccb9fa438682c2ebad7c071c7a4f8dd00b463..c15d75472d4d92baeb87a147832e17e3 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5120330969bb220162da27762a6a7e202d64c120..8253c912bad1de3a1c1413689833a1b6a8e5869c 100644 +index d73268340e5201181f42084fbe47883a22d062cc..4fbd94117f356388a40d1a7f7faf75b08e6b7dbe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1267,6 +1267,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1300,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 5120330969bb220162da27762a6a7e202d64c120..8253c912bad1de3a1c1413689833a1b6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1300,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1334,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 91% rename from patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 33889eece..d988e5ffb 100644 --- a/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0112-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 491474b66856fccb038ee436968c9a5d3e4bf75c..a66499c9bd9af9da5d261a3c1aa23b1d return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8253c912bad1de3a1c1413689833a1b6a8e5869c..81693a10dccd1559f4b6a4dc18780533716e710c 100644 +index 4fbd94117f356388a40d1a7f7faf75b08e6b7dbe..50bf456b7e87a77e50b938488abde4cf577d1228 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -387,6 +387,11 @@ public class PurpurWorldConfig { +@@ -420,6 +420,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0112-Implement-TPSBar.patch b/patches/server/0113-Implement-TPSBar.patch similarity index 100% rename from patches/server/0112-Implement-TPSBar.patch rename to patches/server/0113-Implement-TPSBar.patch diff --git a/patches/server/0113-Striders-give-saddle-back.patch b/patches/server/0114-Striders-give-saddle-back.patch similarity index 92% rename from patches/server/0113-Striders-give-saddle-back.patch rename to patches/server/0114-Striders-give-saddle-back.patch index aa7af7e7c..2455ebac4 100644 --- a/patches/server/0113-Striders-give-saddle-back.patch +++ b/patches/server/0114-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 5f1166ccd64509a70323e2713f3ab58674d83105..741eedcd9e0e29b57d2b3caf5aef1aef if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81693a10dccd1559f4b6a4dc18780533716e710c..a7a5e0565507460f0fee94f0ea867b5dfe11e276 100644 +index 50bf456b7e87a77e50b938488abde4cf577d1228..3f83dee1fc6a847d8f56cc230a6de1223d4f3964 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1679,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1712,6 +1712,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 81693a10dccd1559f4b6a4dc18780533716e710c..a7a5e0565507460f0fee94f0ea867b5d private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1690,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1723,6 +1724,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0114-PlayerBookTooLargeEvent.patch b/patches/server/0115-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/server/0114-PlayerBookTooLargeEvent.patch rename to patches/server/0115-PlayerBookTooLargeEvent.patch diff --git a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch similarity index 97% rename from patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch index 02360f6c8..dc945aff1 100644 --- a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0116-Full-netherite-armor-grants-fire-resistance.patch @@ -26,7 +26,7 @@ index a838f339dd0085660164b0eb1597e0a14e4de6f4..e7f45fe435f679afb4fabe657922d735 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7a5e0565507460f0fee94f0ea867b5dfe11e276..558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c 100644 +index 3f83dee1fc6a847d8f56cc230a6de1223d4f3964..66c4906cb9c3da6f111b96f0ad6be17772764125 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -295,6 +295,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 96% rename from patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch index a2156b806..019668575 100644 --- a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch @@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e6034a276 100644 +index 66c4906cb9c3da6f111b96f0ad6be17772764125..51002cc2901b432123dfc6b3c130e26b3c3486a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,8 +115,11 @@ public class PurpurWorldConfig { @@ -402,7 +402,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e 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); -@@ -412,9 +418,11 @@ public class PurpurWorldConfig { +@@ -445,9 +451,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -414,7 +414,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -439,6 +447,11 @@ public class PurpurWorldConfig { +@@ -472,6 +480,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -426,7 +426,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -468,10 +481,12 @@ public class PurpurWorldConfig { +@@ -501,10 +514,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -439,7 +439,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public int waterInfiniteRequiredSources = 2; -@@ -705,6 +720,7 @@ public class PurpurWorldConfig { +@@ -738,6 +753,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -447,7 +447,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -717,6 +733,7 @@ public class PurpurWorldConfig { +@@ -750,6 +766,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -455,7 +455,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean dolphinRidable = false; -@@ -811,6 +828,7 @@ public class PurpurWorldConfig { +@@ -844,6 +861,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -463,7 +463,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -827,6 +845,7 @@ public class PurpurWorldConfig { +@@ -860,6 +878,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -471,7 +471,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean endermanRidable = false; -@@ -835,6 +854,7 @@ public class PurpurWorldConfig { +@@ -868,6 +887,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -479,7 +479,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -847,6 +867,7 @@ public class PurpurWorldConfig { +@@ -880,6 +900,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -487,7 +487,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean endermiteRidable = false; -@@ -869,6 +890,7 @@ public class PurpurWorldConfig { +@@ -902,6 +923,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = true; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -495,7 +495,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -879,6 +901,7 @@ public class PurpurWorldConfig { +@@ -912,6 +934,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -503,7 +503,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean foxRidable = false; -@@ -887,6 +910,7 @@ public class PurpurWorldConfig { +@@ -920,6 +943,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -511,7 +511,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -899,6 +923,7 @@ public class PurpurWorldConfig { +@@ -932,6 +956,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -519,7 +519,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean frogRidable = false; -@@ -1346,6 +1371,7 @@ public class PurpurWorldConfig { +@@ -1379,6 +1404,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -527,7 +527,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1356,6 +1382,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1415,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -535,7 +535,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean piglinBruteRidable = false; -@@ -1378,6 +1405,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1438,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -543,7 +543,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1388,6 +1416,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1449,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -551,7 +551,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean polarBearRidable = false; -@@ -1434,6 +1463,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1496,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -559,7 +559,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1447,12 +1477,14 @@ public class PurpurWorldConfig { +@@ -1480,12 +1510,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -574,7 +574,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1463,6 +1495,7 @@ public class PurpurWorldConfig { +@@ -1496,6 +1528,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -582,7 +582,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean salmonRidable = false; -@@ -1484,6 +1517,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1550,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -590,7 +590,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1495,6 +1529,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1562,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -598,7 +598,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean shulkerRidable = false; -@@ -1517,6 +1552,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1585,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -606,7 +606,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1527,6 +1563,7 @@ public class PurpurWorldConfig { +@@ -1560,6 +1596,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -614,7 +614,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean skeletonRidable = false; -@@ -1604,6 +1641,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1674,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -622,7 +622,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1620,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1653,6 +1691,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -630,7 +630,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean snifferRidable = false; -@@ -1806,6 +1845,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1878,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -638,7 +638,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1822,6 +1862,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1895,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -646,7 +646,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean vindicatorRidable = false; -@@ -1894,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1927,6 +1968,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -654,7 +654,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1911,6 +1953,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +1986,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -662,7 +662,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e } public boolean witherSkeletonRidable = false; -@@ -1982,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -2015,6 +2058,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -670,7 +670,7 @@ index 558f1b54c2b4a06e2bbf10e47c22ae9beeebf14c..4c1c68e0a758c99a694f8299e511562e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1997,6 +2041,7 @@ public class PurpurWorldConfig { +@@ -2030,6 +2074,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 97% rename from patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch index 05192560b..fe5cc46f7 100644 --- a/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0118-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c1c68e0a758c99a694f8299e511562e6034a276..eee986e5ab2214c2f9db594cc65d62cb8f61cef0 100644 +index 51002cc2901b432123dfc6b3c130e26b3c3486a3..30a95d4b18964c6b25beb4dbec84f03effc2145b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0118-Add-EntityTeleportHinderedEvent.patch b/patches/server/0119-Add-EntityTeleportHinderedEvent.patch similarity index 99% rename from patches/server/0118-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0119-Add-EntityTeleportHinderedEvent.patch index 2e396d5da..19f49ec38 100644 --- a/patches/server/0118-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0119-Add-EntityTeleportHinderedEvent.patch @@ -104,7 +104,7 @@ index 33f229c13b3b77f967d81e9d4453e6afa9157fd9..485c742874defe0a8cf1e7db09406b03 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eee986e5ab2214c2f9db594cc65d62cb8f61cef0..325ea4700422862213602bba1a0546887b45f3c9 100644 +index 30a95d4b18964c6b25beb4dbec84f03effc2145b..bed0ee3cac8d2acda872f5f3fcbd2b75a6ca3a0d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0119-Farmland-trampling-changes.patch b/patches/server/0120-Farmland-trampling-changes.patch similarity index 95% rename from patches/server/0119-Farmland-trampling-changes.patch rename to patches/server/0120-Farmland-trampling-changes.patch index 5f1e91cde..e48e6ca91 100644 --- a/patches/server/0119-Farmland-trampling-changes.patch +++ b/patches/server/0120-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 325ea4700422862213602bba1a0546887b45f3c9..a5e2f5d66da7a42311a22cdc6233964a27a0eddf 100644 +index bed0ee3cac8d2acda872f5f3fcbd2b75a6ca3a0d..91f204f313ee4b5a1f16416670e855d4e7177e51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,10 +425,16 @@ public class PurpurWorldConfig { +@@ -458,10 +458,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0120-Movement-options-for-armor-stands.patch b/patches/server/0121-Movement-options-for-armor-stands.patch similarity index 98% rename from patches/server/0120-Movement-options-for-armor-stands.patch rename to patches/server/0121-Movement-options-for-armor-stands.patch index c2ddf5592..2e06519b9 100644 --- a/patches/server/0120-Movement-options-for-armor-stands.patch +++ b/patches/server/0121-Movement-options-for-armor-stands.patch @@ -66,7 +66,7 @@ index 8b25bb80a913cd002cdaeadf076d811172f10488..89f600edda9a1c5d1b132355fefb7eae + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5e2f5d66da7a42311a22cdc6233964a27a0eddf..5b888502203ecfba12147da827c95ac2f24037b1 100644 +index 91f204f313ee4b5a1f16416670e855d4e7177e51..c0f62102bb2147d08666013c5ca5360a5bcf8e8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-Fix-stuck-in-portals.patch b/patches/server/0122-Fix-stuck-in-portals.patch similarity index 95% rename from patches/server/0121-Fix-stuck-in-portals.patch rename to patches/server/0122-Fix-stuck-in-portals.patch index 705472d25..79213b490 100644 --- a/patches/server/0121-Fix-stuck-in-portals.patch +++ b/patches/server/0122-Fix-stuck-in-portals.patch @@ -37,7 +37,7 @@ index 2f8b5646222b86fa7ef908c9796d28e034702ec7..1ec1f023d7eee5714c94dbb6c842444f this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b888502203ecfba12147da827c95ac2f24037b1..b31b47741c49e132ae9a93ee8f048dbf14fac440 100644 +index c0f62102bb2147d08666013c5ca5360a5bcf8e8b..780a13db057456e49690d90c368284752bafde3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -333,6 +333,7 @@ public class PurpurWorldConfig { @@ -55,4 +55,4 @@ index 5b888502203ecfba12147da827c95ac2f24037b1..b31b47741c49e132ae9a93ee8f048dbf + playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch similarity index 94% rename from patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch index efb27443d..ef3c9f46f 100644 --- a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0123-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 9d5eaaf1869a3ecb61947ab0c09af558fa1cd283..c192f4cc5fd9cb0cf40083c4297f649a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f596e9110 100644 +index 780a13db057456e49690d90c368284752bafde3f..7e520532aec1dc38da84dce2dc8679d977a030ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -536,11 +536,13 @@ public class PurpurWorldConfig { +@@ -569,11 +569,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1216,7 +1216,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean batRidable = false; -@@ -555,6 +557,7 @@ public class PurpurWorldConfig { +@@ -588,6 +590,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1224,7 +1224,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -573,6 +576,7 @@ public class PurpurWorldConfig { +@@ -606,6 +609,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1232,7 +1232,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean beeRidable = false; -@@ -581,6 +585,7 @@ public class PurpurWorldConfig { +@@ -614,6 +618,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1240,7 +1240,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -593,6 +598,7 @@ public class PurpurWorldConfig { +@@ -626,6 +631,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1248,7 +1248,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean blazeRidable = false; -@@ -600,6 +606,7 @@ public class PurpurWorldConfig { +@@ -633,6 +639,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1256,7 +1256,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -611,6 +618,7 @@ public class PurpurWorldConfig { +@@ -644,6 +651,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1264,7 +1264,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean camelRidableInWater = false; -@@ -641,6 +649,7 @@ public class PurpurWorldConfig { +@@ -674,6 +682,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1272,7 +1272,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -660,12 +669,14 @@ public class PurpurWorldConfig { +@@ -693,12 +702,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1287,7 +1287,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -676,6 +687,7 @@ public class PurpurWorldConfig { +@@ -709,6 +720,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1295,7 +1295,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean chickenRidable = false; -@@ -684,6 +696,7 @@ public class PurpurWorldConfig { +@@ -717,6 +729,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1303,7 +1303,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -696,11 +709,13 @@ public class PurpurWorldConfig { +@@ -729,11 +742,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1317,7 +1317,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -710,6 +725,7 @@ public class PurpurWorldConfig { +@@ -743,6 +758,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1325,7 +1325,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean cowRidable = false; -@@ -718,6 +734,7 @@ public class PurpurWorldConfig { +@@ -751,6 +767,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1333,7 +1333,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -730,6 +747,7 @@ public class PurpurWorldConfig { +@@ -763,6 +780,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1341,7 +1341,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean creeperRidable = false; -@@ -739,6 +757,7 @@ public class PurpurWorldConfig { +@@ -772,6 +790,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1349,7 +1349,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -752,6 +771,7 @@ public class PurpurWorldConfig { +@@ -785,6 +804,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1357,7 +1357,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean dolphinRidable = false; -@@ -761,6 +781,7 @@ public class PurpurWorldConfig { +@@ -794,6 +814,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1365,7 +1365,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -774,6 +795,7 @@ public class PurpurWorldConfig { +@@ -807,6 +828,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1373,7 +1373,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean donkeyRidableInWater = false; -@@ -784,6 +806,7 @@ public class PurpurWorldConfig { +@@ -817,6 +839,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1381,7 +1381,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -800,6 +823,7 @@ public class PurpurWorldConfig { +@@ -833,6 +856,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1389,7 +1389,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean drownedRidable = false; -@@ -810,6 +834,7 @@ public class PurpurWorldConfig { +@@ -843,6 +867,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1397,7 +1397,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -824,11 +849,13 @@ public class PurpurWorldConfig { +@@ -857,11 +882,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1411,7 +1411,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -838,6 +865,7 @@ public class PurpurWorldConfig { +@@ -871,6 +898,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1419,7 +1419,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean enderDragonRidable = false; -@@ -847,6 +875,7 @@ public class PurpurWorldConfig { +@@ -880,6 +908,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1427,7 +1427,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -864,6 +893,7 @@ public class PurpurWorldConfig { +@@ -897,6 +926,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1435,7 +1435,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean endermanRidable = false; -@@ -873,6 +903,7 @@ public class PurpurWorldConfig { +@@ -906,6 +936,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1443,7 +1443,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -886,12 +917,14 @@ public class PurpurWorldConfig { +@@ -919,12 +950,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1458,7 +1458,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -902,6 +935,7 @@ public class PurpurWorldConfig { +@@ -935,6 +968,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1466,7 +1466,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean evokerRidable = false; -@@ -909,6 +943,7 @@ public class PurpurWorldConfig { +@@ -942,6 +976,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1474,7 +1474,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -920,6 +955,7 @@ public class PurpurWorldConfig { +@@ -953,6 +988,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1482,7 +1482,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean foxRidable = false; -@@ -929,6 +965,7 @@ public class PurpurWorldConfig { +@@ -962,6 +998,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1490,7 +1490,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -942,6 +979,7 @@ public class PurpurWorldConfig { +@@ -975,6 +1012,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1498,7 +1498,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean frogRidable = false; -@@ -962,6 +1000,7 @@ public class PurpurWorldConfig { +@@ -995,6 +1033,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1506,7 +1506,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -973,6 +1012,7 @@ public class PurpurWorldConfig { +@@ -1006,6 +1045,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1514,7 +1514,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean giantRidable = false; -@@ -985,6 +1025,7 @@ public class PurpurWorldConfig { +@@ -1018,6 +1058,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1522,7 +1522,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1005,17 +1046,20 @@ public class PurpurWorldConfig { +@@ -1038,17 +1079,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1543,7 +1543,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean goatRidable = false; -@@ -1023,17 +1067,20 @@ public class PurpurWorldConfig { +@@ -1056,17 +1100,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1564,7 +1564,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1043,6 +1090,7 @@ public class PurpurWorldConfig { +@@ -1076,6 +1123,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1572,7 +1572,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean hoglinRidable = false; -@@ -1050,6 +1098,7 @@ public class PurpurWorldConfig { +@@ -1083,6 +1131,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1580,7 +1580,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1061,6 +1110,7 @@ public class PurpurWorldConfig { +@@ -1094,6 +1143,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1588,7 +1588,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean horseRidableInWater = false; -@@ -1071,6 +1121,7 @@ public class PurpurWorldConfig { +@@ -1104,6 +1154,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1596,7 +1596,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1087,6 +1138,7 @@ public class PurpurWorldConfig { +@@ -1120,6 +1171,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1604,7 +1604,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean huskRidable = false; -@@ -1097,6 +1149,7 @@ public class PurpurWorldConfig { +@@ -1130,6 +1182,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1612,7 +1612,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1111,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1197,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1620,7 +1620,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean illusionerRidable = false; -@@ -1119,6 +1173,7 @@ public class PurpurWorldConfig { +@@ -1152,6 +1206,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1628,7 +1628,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1135,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1168,6 +1223,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1636,7 +1636,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean ironGolemRidable = false; -@@ -1142,6 +1198,7 @@ public class PurpurWorldConfig { +@@ -1175,6 +1231,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1644,7 +1644,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1153,6 +1210,7 @@ public class PurpurWorldConfig { +@@ -1186,6 +1243,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1652,7 +1652,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean llamaRidable = false; -@@ -1165,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1198,6 +1256,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1660,7 +1660,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1183,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1216,6 +1275,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1668,7 +1668,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean magmaCubeRidable = false; -@@ -1192,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1225,6 +1285,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1676,7 +1676,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1205,6 +1266,7 @@ public class PurpurWorldConfig { +@@ -1238,6 +1299,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1684,7 +1684,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean mooshroomRidable = false; -@@ -1212,6 +1274,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1307,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1692,7 +1692,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1223,6 +1286,7 @@ public class PurpurWorldConfig { +@@ -1256,6 +1319,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1700,7 +1700,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean muleRidableInWater = false; -@@ -1233,6 +1297,7 @@ public class PurpurWorldConfig { +@@ -1266,6 +1330,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1708,7 +1708,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1249,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1347,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1716,7 +1716,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean ocelotRidable = false; -@@ -1256,6 +1322,7 @@ public class PurpurWorldConfig { +@@ -1289,6 +1355,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1724,7 +1724,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1267,6 +1334,7 @@ public class PurpurWorldConfig { +@@ -1300,6 +1367,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1732,7 +1732,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean pandaRidable = false; -@@ -1274,6 +1342,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1375,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1740,7 +1740,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1285,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1318,6 +1387,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1748,7 +1748,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean parrotRidable = false; -@@ -1292,6 +1362,7 @@ public class PurpurWorldConfig { +@@ -1325,6 +1395,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1756,7 +1756,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1303,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1336,6 +1407,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1764,7 +1764,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean phantomRidable = false; -@@ -1329,6 +1401,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1434,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1772,7 +1772,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1363,6 +1436,7 @@ public class PurpurWorldConfig { +@@ -1396,6 +1469,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1780,7 +1780,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean pigRidable = false; -@@ -1371,6 +1445,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1478,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1788,7 +1788,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1383,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1416,6 +1491,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1796,7 +1796,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean piglinRidable = false; -@@ -1390,6 +1466,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1499,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1804,7 +1804,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1401,12 +1478,14 @@ public class PurpurWorldConfig { +@@ -1434,12 +1511,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1819,7 +1819,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1417,6 +1496,7 @@ public class PurpurWorldConfig { +@@ -1450,6 +1529,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1827,7 +1827,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean pillagerRidable = false; -@@ -1424,6 +1504,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1537,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1835,7 +1835,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1435,6 +1516,7 @@ public class PurpurWorldConfig { +@@ -1468,6 +1549,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1843,7 +1843,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean polarBearRidable = false; -@@ -1444,6 +1526,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1559,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1851,7 +1851,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1458,11 +1541,13 @@ public class PurpurWorldConfig { +@@ -1491,11 +1574,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1865,7 +1865,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1472,6 +1557,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1590,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1873,7 +1873,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean rabbitRidable = false; -@@ -1482,6 +1568,7 @@ public class PurpurWorldConfig { +@@ -1515,6 +1601,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1881,7 +1881,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1496,6 +1583,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1616,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1889,7 +1889,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean ravagerRidable = false; -@@ -1503,6 +1591,7 @@ public class PurpurWorldConfig { +@@ -1536,6 +1624,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1897,7 +1897,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1514,11 +1603,13 @@ public class PurpurWorldConfig { +@@ -1547,11 +1636,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1911,7 +1911,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1528,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1652,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1919,7 +1919,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean sheepRidable = false; -@@ -1536,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1661,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1927,7 +1927,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1548,12 +1641,14 @@ public class PurpurWorldConfig { +@@ -1581,12 +1674,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1942,7 +1942,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1564,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1597,6 +1692,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1950,7 +1950,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean silverfishRidable = false; -@@ -1571,6 +1667,7 @@ public class PurpurWorldConfig { +@@ -1604,6 +1700,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1958,7 +1958,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1582,12 +1679,14 @@ public class PurpurWorldConfig { +@@ -1615,12 +1712,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1973,7 +1973,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1598,6 +1697,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1730,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1981,7 +1981,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean skeletonHorseRidable = false; -@@ -1609,6 +1709,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1742,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1989,7 +1989,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1625,6 +1726,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1759,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1997,7 +1997,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean slimeRidable = false; -@@ -1634,6 +1736,7 @@ public class PurpurWorldConfig { +@@ -1667,6 +1769,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2005,7 +2005,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1647,6 +1750,7 @@ public class PurpurWorldConfig { +@@ -1680,6 +1783,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2013,7 +2013,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean snowGolemRidable = false; -@@ -1660,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1693,6 +1797,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2021,7 +2021,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1677,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1710,6 +1815,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2029,7 +2029,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean snifferRidable = false; -@@ -1698,6 +1804,7 @@ public class PurpurWorldConfig { +@@ -1731,6 +1837,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2037,7 +2037,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1710,12 +1817,14 @@ public class PurpurWorldConfig { +@@ -1743,12 +1850,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2052,7 +2052,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1726,12 +1835,14 @@ public class PurpurWorldConfig { +@@ -1759,12 +1868,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2067,7 +2067,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1742,6 +1853,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1886,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2075,7 +2075,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean striderRidable = false; -@@ -1750,6 +1862,7 @@ public class PurpurWorldConfig { +@@ -1783,6 +1895,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2083,7 +2083,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1762,6 +1875,7 @@ public class PurpurWorldConfig { +@@ -1795,6 +1908,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2091,7 +2091,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean tadpoleRidable = false; -@@ -1783,6 +1897,7 @@ public class PurpurWorldConfig { +@@ -1816,6 +1930,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2099,7 +2099,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1801,11 +1916,13 @@ public class PurpurWorldConfig { +@@ -1834,11 +1949,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2113,7 +2113,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1815,6 +1932,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1965,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2121,7 +2121,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean turtleRidable = false; -@@ -1822,6 +1940,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1973,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2129,7 +2129,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1833,6 +1952,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1985,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2137,7 +2137,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean vexRidable = false; -@@ -1840,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1873,6 +1993,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2145,7 +2145,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1851,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1884,6 +2005,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2153,7 +2153,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean villagerRidable = false; -@@ -1864,6 +1986,7 @@ public class PurpurWorldConfig { +@@ -1897,6 +2019,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2161,7 +2161,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1881,6 +2004,7 @@ public class PurpurWorldConfig { +@@ -1914,6 +2037,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2169,7 +2169,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean vindicatorRidable = false; -@@ -1888,6 +2012,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +2045,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2177,7 +2177,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1899,6 +2024,7 @@ public class PurpurWorldConfig { +@@ -1932,6 +2057,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2185,7 +2185,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean wanderingTraderRidable = false; -@@ -1907,6 +2033,7 @@ public class PurpurWorldConfig { +@@ -1940,6 +2066,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2193,7 +2193,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1919,6 +2046,7 @@ public class PurpurWorldConfig { +@@ -1952,6 +2079,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2201,7 +2201,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean wardenRidable = false; -@@ -1934,6 +2062,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +2095,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2209,7 +2209,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1944,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -1977,6 +2106,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2217,7 +2217,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean witherRidable = false; -@@ -1954,6 +2084,7 @@ public class PurpurWorldConfig { +@@ -1987,6 +2117,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2225,7 +2225,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1972,12 +2103,14 @@ public class PurpurWorldConfig { +@@ -2005,12 +2136,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2240,7 +2240,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1988,6 +2121,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2154,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2248,7 +2248,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean wolfRidable = false; -@@ -1998,6 +2132,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2165,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2256,7 +2256,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2016,12 +2151,14 @@ public class PurpurWorldConfig { +@@ -2049,12 +2184,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2271,7 +2271,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2032,6 +2169,7 @@ public class PurpurWorldConfig { +@@ -2065,6 +2202,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2279,7 +2279,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean zombieRidable = false; -@@ -2044,6 +2182,7 @@ public class PurpurWorldConfig { +@@ -2077,6 +2215,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2287,7 +2287,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2060,6 +2199,7 @@ public class PurpurWorldConfig { +@@ -2093,6 +2232,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2295,7 +2295,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean zombieHorseRidable = false; -@@ -2072,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2245,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2303,7 +2303,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2089,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2122,6 +2263,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2311,7 +2311,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean zombieVillagerRidable = false; -@@ -2099,6 +2241,7 @@ public class PurpurWorldConfig { +@@ -2132,6 +2274,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2319,7 +2319,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2113,6 +2256,7 @@ public class PurpurWorldConfig { +@@ -2146,6 +2289,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2327,7 +2327,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f } public boolean zombifiedPiglinRidable = false; -@@ -2124,6 +2268,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2301,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2335,7 +2335,7 @@ index b31b47741c49e132ae9a93ee8f048dbf14fac440..de166b51b0f8d41b5e5da282bf912f8f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2139,5 +2284,6 @@ public class PurpurWorldConfig { +@@ -2172,5 +2317,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0123-Config-to-always-tame-in-Creative.patch b/patches/server/0124-Config-to-always-tame-in-Creative.patch similarity index 98% rename from patches/server/0123-Config-to-always-tame-in-Creative.patch rename to patches/server/0124-Config-to-always-tame-in-Creative.patch index b2ff0cba7..4088c7e41 100644 --- a/patches/server/0123-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0124-Config-to-always-tame-in-Creative.patch @@ -59,7 +59,7 @@ index cfcfa1dfb6d0512124ac226c2dc8274c837c21dd..4a866ba9ac3ce9403d490f48df88ab33 this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de166b51b0f8d41b5e5da282bf912f8f596e9110..0415b122b8efe73d7d2071070bc6169de082090d 100644 +index 7e520532aec1dc38da84dce2dc8679d977a030ea..75c9c93f808b624370a2820a93f625a599093b5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-End-crystal-explosion-options.patch b/patches/server/0125-End-crystal-explosion-options.patch similarity index 97% rename from patches/server/0124-End-crystal-explosion-options.patch rename to patches/server/0125-End-crystal-explosion-options.patch index 0357778ba..bb314bae2 100644 --- a/patches/server/0124-End-crystal-explosion-options.patch +++ b/patches/server/0125-End-crystal-explosion-options.patch @@ -53,10 +53,10 @@ index 2bac39e5ba09e08d23d2a4be37f7fe0da0ce71a6..8c6ce06a1845832c8b0de654657788d2 this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0415b122b8efe73d7d2071070bc6169de082090d..7f7082a36736f78464867867f45e7c697716ec22 100644 +index 75c9c93f808b624370a2820a93f625a599093b5c..9de44dd59e69d709490290cf07b7c75889ac8387 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -432,6 +432,43 @@ public class PurpurWorldConfig { +@@ -465,6 +465,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 92% rename from patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 9e2220802..8e440c4a0 100644 --- a/patches/server/0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0126-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 948e5747d8d280695dd903a29b9c9f9dae9a44c1..6752a0039fac041e9bdd25327cdf20d3 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f7082a36736f78464867867f45e7c697716ec22..3f2bb23999594cc9f7f41f8a7f775c6d5bcded54 100644 +index 9de44dd59e69d709490290cf07b7c75889ac8387..d56aa23ea97e6cd7e1b5824fc46d1b6c0ee23a2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -915,6 +915,7 @@ public class PurpurWorldConfig { +@@ -948,6 +948,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 7f7082a36736f78464867867f45e7c697716ec22..3f2bb23999594cc9f7f41f8a7f775c6d private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -933,6 +934,7 @@ public class PurpurWorldConfig { +@@ -966,6 +967,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index 7f7082a36736f78464867867f45e7c697716ec22..3f2bb23999594cc9f7f41f8a7f775c6d } public boolean endermanRidable = false; -@@ -2124,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2159,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 7f7082a36736f78464867867f45e7c697716ec22..3f2bb23999594cc9f7f41f8a7f775c6d private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2143,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2176,6 +2179,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0126-Dont-run-with-scissors.patch b/patches/server/0127-Dont-run-with-scissors.patch similarity index 99% rename from patches/server/0126-Dont-run-with-scissors.patch rename to patches/server/0127-Dont-run-with-scissors.patch index 2168cdf7f..6df59668d 100644 --- a/patches/server/0126-Dont-run-with-scissors.patch +++ b/patches/server/0127-Dont-run-with-scissors.patch @@ -149,7 +149,7 @@ index 57734b187e3a66d0d244db2f7968256884957ff2..6714c095714c3a34464b9190be964cea public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f2bb23999594cc9f7f41f8a7f775c6d5bcded54..c4a7595f2199167e3e3d1efec60a647960f3099d 100644 +index d56aa23ea97e6cd7e1b5824fc46d1b6c0ee23a2d..3f07fa6eec5efb308d6ec10ddb036c4774031a32 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -197,6 +197,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0127-One-Punch-Man.patch b/patches/server/0128-One-Punch-Man.patch similarity index 94% rename from patches/server/0127-One-Punch-Man.patch rename to patches/server/0128-One-Punch-Man.patch index 7e6cfde80..8c548bd62 100644 --- a/patches/server/0127-One-Punch-Man.patch +++ b/patches/server/0128-One-Punch-Man.patch @@ -31,7 +31,7 @@ index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..0b4384b6898ad591b8b9256b24273594 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4a7595f2199167e3e3d1efec60a647960f3099d..6c5acac4ae04eeab5fde9996b0150d0846e5beed 100644 +index 3f07fa6eec5efb308d6ec10ddb036c4774031a32..5f01c0d1277e1aa910208a3b9308c427b6e22cdb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -344,6 +344,7 @@ public class PurpurWorldConfig { @@ -49,4 +49,4 @@ index c4a7595f2199167e3e3d1efec60a647960f3099d..6c5acac4ae04eeab5fde9996b0150d08 + creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 98% rename from patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index ccc471c27..4248c4ebc 100644 --- a/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0129-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,7 +43,7 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c5acac4ae04eeab5fde9996b0150d0846e5beed..3c105b83599b7959f17661bc2a8c2ffd1116835b 100644 +index 5f01c0d1277e1aa910208a3b9308c427b6e22cdb..a71ce1e255bbb469d3c0a20853450130589af326 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -201,6 +201,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 93% rename from patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch index 359004bef..29cc238c3 100644 --- a/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0130-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -18,7 +18,7 @@ index 146c2e46e0fb9a9358484a054f716d72b9750ed8..c9458551b1da419f484e9dce6b3fba8d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c105b83599b7959f17661bc2a8c2ffd1116835b..5754516ad5fda5950813ede6b057a757a13f8bdb 100644 +index a71ce1e255bbb469d3c0a20853450130589af326..afcde828b7f39affd26cf3a52b744e0b37140694 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -353,6 +353,7 @@ public class PurpurWorldConfig { @@ -36,4 +36,4 @@ index 3c105b83599b7959f17661bc2a8c2ffd1116835b..5754516ad5fda5950813ede6b057a757 + playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0130-Add-back-player-spawned-endermite-API.patch b/patches/server/0131-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0130-Add-back-player-spawned-endermite-API.patch rename to patches/server/0131-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch index 8b84130fc..0ef7d7bfe 100644 --- a/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0132-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 17b044e58d2ed33ed16e60f4fd4f63b2ee3f854d..4821aec304399c64cbcff741334567a0 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5754516ad5fda5950813ede6b057a757a13f8bdb..d022368b53659b27e4bc5058e704f7d254dfbd6f 100644 +index afcde828b7f39affd26cf3a52b744e0b37140694..3736b6a5be1c4eea48416c48822675e394b821f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -965,6 +965,8 @@ public class PurpurWorldConfig { +@@ -998,6 +998,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 5754516ad5fda5950813ede6b057a757a13f8bdb..d022368b53659b27e4bc5058e704f7d2 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -974,11 +976,17 @@ public class PurpurWorldConfig { +@@ -1007,11 +1009,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 93% rename from patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 078a75e2b..3fc172e84 100644 --- a/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0133-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index 4821aec304399c64cbcff741334567a08b840c0a..b361c6b4ca17b9d466555037235a5660 } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d022368b53659b27e4bc5058e704f7d254dfbd6f..ef27f15a07350d8b8c1eabd68bf5f4c5cc7eb6f4 100644 +index 3736b6a5be1c4eea48416c48822675e394b821f1..e3e0a5c0f241e7fe1fdd2be1bd1afe7752628b9e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -967,6 +967,8 @@ public class PurpurWorldConfig { +@@ -1000,6 +1000,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index d022368b53659b27e4bc5058e704f7d254dfbd6f..ef27f15a07350d8b8c1eabd68bf5f4c5 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -987,6 +989,8 @@ public class PurpurWorldConfig { +@@ -1020,6 +1022,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0133-Tick-fluids-config.patch b/patches/server/0134-Tick-fluids-config.patch similarity index 97% rename from patches/server/0133-Tick-fluids-config.patch rename to patches/server/0134-Tick-fluids-config.patch index 55316990d..4a067efd0 100644 --- a/patches/server/0133-Tick-fluids-config.patch +++ b/patches/server/0134-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef27f15a07350d8b8c1eabd68bf5f4c5cc7eb6f4..d0b92b3ee0eb94df5cbb57c567183da0adf7cc5c 100644 +index e3e0a5c0f241e7fe1fdd2be1bd1afe7752628b9e..6756564f9b03bc822485b4199bf46c50069eea65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -129,6 +129,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0134-Config-to-disable-Llama-caravans.patch b/patches/server/0135-Config-to-disable-Llama-caravans.patch similarity index 94% rename from patches/server/0134-Config-to-disable-Llama-caravans.patch rename to patches/server/0135-Config-to-disable-Llama-caravans.patch index 3329a360f..3600b1e45 100644 --- a/patches/server/0134-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0135-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 87ec5bd632353ce364de29c5d56460551b6a4139..12ff4091674f7efb3e324df0df2d798d this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0b92b3ee0eb94df5cbb57c567183da0adf7cc5c..9c610c52a0dab48ff817c01b11ffaefa7f95c9e5 100644 +index 6756564f9b03bc822485b4199bf46c50069eea65..3045fff19b9f9c35ed1b2e14894f6b5aa8442817 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1299,6 +1299,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1332,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index d0b92b3ee0eb94df5cbb57c567183da0adf7cc5c..9c610c52a0dab48ff817c01b11ffaefa private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1318,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1351,6 +1352,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0136-Config-to-make-Creepers-explode-on-death.patch similarity index 94% rename from patches/server/0135-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0136-Config-to-make-Creepers-explode-on-death.patch index 0ffb9e508..f5bdb4084 100644 --- a/patches/server/0135-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0136-Config-to-make-Creepers-explode-on-death.patch @@ -50,10 +50,10 @@ index a9523b156eb88646ef82ee857d5f68360b12a753..af6f2fd2f2f48b8057cfb0462a0e72a8 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c610c52a0dab48ff817c01b11ffaefa7f95c9e5..d73b0498530c91a15f8bd00782127614b0bc7fbb 100644 +index 3045fff19b9f9c35ed1b2e14894f6b5aa8442817..3a730b7d187ba043fc8f3f0ca7412ec44e352fba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -819,6 +819,7 @@ public class PurpurWorldConfig { +@@ -852,6 +852,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 9c610c52a0dab48ff817c01b11ffaefa7f95c9e5..d73b0498530c91a15f8bd00782127614 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -833,6 +834,7 @@ public class PurpurWorldConfig { +@@ -866,6 +867,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0137-Configurable-ravager-griefable-blocks-list.patch similarity index 95% rename from patches/server/0136-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0137-Configurable-ravager-griefable-blocks-list.patch index b52377367..e4e120f7a 100644 --- a/patches/server/0136-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0137-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d73b0498530c91a15f8bd00782127614b0bc7fbb..66690bb2bebf07f6e3300b8444d297d85e105bc5 100644 +index 3a730b7d187ba043fc8f3f0ca7412ec44e352fba..9ec5bae4a4caee44d84dd77b8be6b5c4b4b05b3e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1671,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1704,6 +1704,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index d73b0498530c91a15f8bd00782127614b0bc7fbb..66690bb2bebf07f6e3300b8444d297d8 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1683,6 +1684,23 @@ public class PurpurWorldConfig { +@@ -1716,6 +1717,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0137-Sneak-to-bulk-process-composter.patch b/patches/server/0138-Sneak-to-bulk-process-composter.patch similarity index 97% rename from patches/server/0137-Sneak-to-bulk-process-composter.patch rename to patches/server/0138-Sneak-to-bulk-process-composter.patch index 3c32b4de7..3260a1417 100644 --- a/patches/server/0137-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0138-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 66690bb2bebf07f6e3300b8444d297d85e105bc5..4a3d20cc9998a1cc21d1c5bdf0fbadcc5ad3b6f0 100644 +index 9ec5bae4a4caee44d84dd77b8be6b5c4b4b05b3e..3b9973bbe7e752e906e152f9ddde5e7a1546988b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -447,6 +447,11 @@ public class PurpurWorldConfig { +@@ -480,6 +480,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0138-Config-for-skipping-night.patch b/patches/server/0139-Config-for-skipping-night.patch similarity index 93% rename from patches/server/0138-Config-for-skipping-night.patch rename to patches/server/0139-Config-for-skipping-night.patch index 3c4a45244..a0874bf67 100644 --- a/patches/server/0138-Config-for-skipping-night.patch +++ b/patches/server/0139-Config-for-skipping-night.patch @@ -18,7 +18,7 @@ index aef5157d183b69903fd215a5ce30c0705ba8fa3e..bcdef2c9bb116409445a4ef65c5e407c j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a3d20cc9998a1cc21d1c5bdf0fbadcc5ad3b6f0..7fbfa1412882c5c8142e5f8796d0c15c9481265f 100644 +index 3b9973bbe7e752e906e152f9ddde5e7a1546988b..94f0eea598ee9908dd58efd7f4d5f6841bc9a003 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -356,6 +356,7 @@ public class PurpurWorldConfig { @@ -36,4 +36,4 @@ index 4a3d20cc9998a1cc21d1c5bdf0fbadcc5ad3b6f0..7fbfa1412882c5c8142e5f8796d0c15c + playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0139-Add-config-for-villager-trading.patch b/patches/server/0140-Add-config-for-villager-trading.patch similarity index 93% rename from patches/server/0139-Add-config-for-villager-trading.patch rename to patches/server/0140-Add-config-for-villager-trading.patch index 7c0b10286..2a72a25f9 100644 --- a/patches/server/0139-Add-config-for-villager-trading.patch +++ b/patches/server/0140-Add-config-for-villager-trading.patch @@ -31,10 +31,10 @@ index c192f4cc5fd9cb0cf40083c4297f649ab909649d..0d11200ab580cc306602c29c61f76195 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7fbfa1412882c5c8142e5f8796d0c15c9481265f..ae096579fb96b0a500d45cfcdf39d1b6daca145c 100644 +index 94f0eea598ee9908dd58efd7f4d5f6841bc9a003..9ad20a137f6cf35776e0e9cafe03c0dd475501b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2091,6 +2091,7 @@ public class PurpurWorldConfig { +@@ -2124,6 +2124,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 7fbfa1412882c5c8142e5f8796d0c15c9481265f..ae096579fb96b0a500d45cfcdf39d1b6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2109,6 +2110,7 @@ public class PurpurWorldConfig { +@@ -2142,6 +2143,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 7fbfa1412882c5c8142e5f8796d0c15c9481265f..ae096579fb96b0a500d45cfcdf39d1b6 } public boolean vindicatorRidable = false; -@@ -2138,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2173,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 7fbfa1412882c5c8142e5f8796d0c15c9481265f..ae096579fb96b0a500d45cfcdf39d1b6 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2151,6 +2154,7 @@ public class PurpurWorldConfig { +@@ -2184,6 +2187,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0140-Allow-infinity-on-crossbows.patch b/patches/server/0141-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/server/0140-Allow-infinity-on-crossbows.patch rename to patches/server/0141-Allow-infinity-on-crossbows.patch diff --git a/patches/server/0141-Drowning-Settings.patch b/patches/server/0142-Drowning-Settings.patch similarity index 97% rename from patches/server/0141-Drowning-Settings.patch rename to patches/server/0142-Drowning-Settings.patch index c0248b94a..8147c4eac 100644 --- a/patches/server/0141-Drowning-Settings.patch +++ b/patches/server/0142-Drowning-Settings.patch @@ -40,7 +40,7 @@ index 0b4384b6898ad591b8b9256b2427359474dd9c57..db0537c968a55f05e4c154aa42ebe73e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae096579fb96b0a500d45cfcdf39d1b6daca145c..50ebc72e71e60d8fd9a4b3a96f39a01f5743d593 100644 +index 9ad20a137f6cf35776e0e9cafe03c0dd475501b0..76e26e67ba5bc56af28aae17ccd1da9b609e4947 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -164,6 +164,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0142-Break-individual-slabs-when-sneaking.patch b/patches/server/0143-Break-individual-slabs-when-sneaking.patch similarity index 95% rename from patches/server/0142-Break-individual-slabs-when-sneaking.patch rename to patches/server/0143-Break-individual-slabs-when-sneaking.patch index 2882135c5..c62491c48 100644 --- a/patches/server/0142-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0143-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50ebc72e71e60d8fd9a4b3a96f39a01f5743d593..bf6a208ac3f1deabe62db2c20a39af184dde0ae0 100644 +index 76e26e67ba5bc56af28aae17ccd1da9b609e4947..c84cd3ebe3b95505a832e612c993e106d4cc1067 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -568,6 +568,11 @@ public class PurpurWorldConfig { +@@ -601,6 +601,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 94% rename from patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch index f0b0b6171..16d1fd82b 100644 --- a/patches/server/0143-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0144-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 759839e912c54598b257ad738481364940f88a18..e60e6b3e5ae5a468cfe649ed2222412f return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf6a208ac3f1deabe62db2c20a39af184dde0ae0..a0f2ee8e69ce6c677fb4056b060841b67071bdb0 100644 +index c84cd3ebe3b95505a832e612c993e106d4cc1067..afac6d1da8604a2d6c6b015227db77617914867e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -533,6 +533,13 @@ public class PurpurWorldConfig { +@@ -566,6 +566,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0145-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 96% rename from patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0145-Config-to-show-Armor-Stand-arms-on-spawn.patch index 9c7d1fcda..6908249a2 100644 --- a/patches/server/0144-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0145-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,7 +17,7 @@ index 89f600edda9a1c5d1b132355fefb7eaed77c52f5..6697cd8a632becd72ee132007a61d122 public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0f2ee8e69ce6c677fb4056b060841b67071bdb0..1af84ac3766ccfd377995d96e1a264ce18f81c34 100644 +index afac6d1da8604a2d6c6b015227db77617914867e..4c9479029b659baa53377fde1dd7117d5e1bfc15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0145-Option-to-make-doors-require-redstone.patch b/patches/server/0146-Option-to-make-doors-require-redstone.patch similarity index 96% rename from patches/server/0145-Option-to-make-doors-require-redstone.patch rename to patches/server/0146-Option-to-make-doors-require-redstone.patch index 862d81255..739f0b0e7 100644 --- a/patches/server/0145-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0146-Option-to-make-doors-require-redstone.patch @@ -67,10 +67,10 @@ index 42d43b7a7e3b7c53cc80b8706c130e660f2c72da..96199441202ad929ad0274574704635c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1af84ac3766ccfd377995d96e1a264ce18f81c34..1a38b0691110b73e1a2a964222d23f5f08854bae 100644 +index 4c9479029b659baa53377fde1dd7117d5e1bfc15..3464f0c8d019c4675c2df7c83e0a77cb3eec16e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -472,6 +472,16 @@ public class PurpurWorldConfig { +@@ -505,6 +505,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0146-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0147-Config-to-allow-for-unsafe-enchants.patch similarity index 100% rename from patches/server/0146-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0147-Config-to-allow-for-unsafe-enchants.patch diff --git a/patches/server/0147-Configurable-sponge-absorption.patch b/patches/server/0148-Configurable-sponge-absorption.patch similarity index 93% rename from patches/server/0147-Configurable-sponge-absorption.patch rename to patches/server/0148-Configurable-sponge-absorption.patch index 0307678ef..3c506fc31 100644 --- a/patches/server/0147-Configurable-sponge-absorption.patch +++ b/patches/server/0148-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a38b0691110b73e1a2a964222d23f5f08854bae..684a3525a390101d95cc71d33c3b106b7680fe61 100644 +index 3464f0c8d019c4675c2df7c83e0a77cb3eec16e0..d7cfb2ab82953799d0ff13fcdcb115ca2fa20450 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -597,6 +597,13 @@ public class PurpurWorldConfig { +@@ -630,6 +630,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0148-Projectile-offset-config.patch b/patches/server/0149-Projectile-offset-config.patch similarity index 98% rename from patches/server/0148-Projectile-offset-config.patch rename to patches/server/0149-Projectile-offset-config.patch index f8a73728f..311e8df4e 100644 --- a/patches/server/0148-Projectile-offset-config.patch +++ b/patches/server/0149-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index b094f4ec513194e10442156d8f7f2205da2384ac..85dc79b9b969fa0cbf6964cb26bac139 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 684a3525a390101d95cc71d33c3b106b7680fe61..2346e42a27d836fa8bc06a3865abbfb1e808dd29 100644 +index d7cfb2ab82953799d0ff13fcdcb115ca2fa20450..3550147e9c80964dc1bf4007e4280de4a3b39d78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -422,6 +422,23 @@ public class PurpurWorldConfig { +@@ -455,6 +455,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0149-Config-for-powered-rail-activation-distance.patch b/patches/server/0150-Config-for-powered-rail-activation-distance.patch similarity index 91% rename from patches/server/0149-Config-for-powered-rail-activation-distance.patch rename to patches/server/0150-Config-for-powered-rail-activation-distance.patch index d67c5e679..a92753919 100644 --- a/patches/server/0149-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0150-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2346e42a27d836fa8bc06a3865abbfb1e808dd29..6d6182cb379ed88d609348842e76ecc0e16636a3 100644 +index 3550147e9c80964dc1bf4007e4280de4a3b39d78..57ac8480bc6bb324366bbdd30718eb5df6a7d69b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -583,6 +583,11 @@ public class PurpurWorldConfig { +@@ -616,6 +616,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0150-Piglin-portal-spawn-modifier.patch b/patches/server/0151-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/server/0150-Piglin-portal-spawn-modifier.patch rename to patches/server/0151-Piglin-portal-spawn-modifier.patch index 477f97735..1ef7cd6e3 100644 --- a/patches/server/0150-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0151-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 67060b7446535fc352d221d9fe3928d1d6ffcf54..8d5e841d8cc69bf09a9f1b6248633a72 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d6182cb379ed88d609348842e76ecc0e16636a3..4480958d78edb21b454f0ca1ba06ef6b8f983f18 100644 +index 57ac8480bc6bb324366bbdd30718eb5df6a7d69b..518973f15f10d68039675dfcedfbeb5d2324a989 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1615,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1648,6 +1648,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 6d6182cb379ed88d609348842e76ecc0e16636a3..4480958d78edb21b454f0ca1ba06ef6b private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1627,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1661,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0151-Config-to-change-max-number-of-bees.patch b/patches/server/0152-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0151-Config-to-change-max-number-of-bees.patch rename to patches/server/0152-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0152-Config-for-wither-explosion-radius.patch b/patches/server/0153-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/server/0152-Config-for-wither-explosion-radius.patch rename to patches/server/0153-Config-for-wither-explosion-radius.patch index 40f4cedd6..6b368ede8 100644 --- a/patches/server/0152-Config-for-wither-explosion-radius.patch +++ b/patches/server/0153-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index c753f715710ec4bb8337e035ac5a4c11371a84a0..a60d7f7baab005afc532ecec7aa22c53 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4480958d78edb21b454f0ca1ba06ef6b8f983f18..4b107d63bd8425f89560488852647731c89eb369 100644 +index 518973f15f10d68039675dfcedfbeb5d2324a989..3a298515545972bb06a2f214aa35fb579bbac3de 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2258,6 +2258,7 @@ public class PurpurWorldConfig { +@@ -2291,6 +2291,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 4480958d78edb21b454f0ca1ba06ef6b8f983f18..4b107d63bd8425f89560488852647731 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2278,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2311,6 +2312,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0153-Gamemode-extra-permissions.patch b/patches/server/0154-Gamemode-extra-permissions.patch similarity index 100% rename from patches/server/0153-Gamemode-extra-permissions.patch rename to patches/server/0154-Gamemode-extra-permissions.patch diff --git a/patches/server/0154-Configurable-piston-push-limit.patch b/patches/server/0155-Configurable-piston-push-limit.patch similarity index 94% rename from patches/server/0154-Configurable-piston-push-limit.patch rename to patches/server/0155-Configurable-piston-push-limit.patch index aefbc7e39..4b3ade3fc 100644 --- a/patches/server/0154-Configurable-piston-push-limit.patch +++ b/patches/server/0155-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b107d63bd8425f89560488852647731c89eb369..581b673994ab01b84ddbc80669923190fa4254e2 100644 +index 3a298515545972bb06a2f214aa35fb579bbac3de..046c11b359125851d48f97505b0a823f01635cff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -578,6 +578,11 @@ public class PurpurWorldConfig { +@@ -611,6 +611,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0155-Configurable-broadcast-settings.patch b/patches/server/0156-Configurable-broadcast-settings.patch similarity index 100% rename from patches/server/0155-Configurable-broadcast-settings.patch rename to patches/server/0156-Configurable-broadcast-settings.patch diff --git a/patches/server/0156-Configurable-mob-blindness.patch b/patches/server/0157-Configurable-mob-blindness.patch similarity index 97% rename from patches/server/0156-Configurable-mob-blindness.patch rename to patches/server/0157-Configurable-mob-blindness.patch index e6ab5cad4..d14929a61 100644 --- a/patches/server/0156-Configurable-mob-blindness.patch +++ b/patches/server/0157-Configurable-mob-blindness.patch @@ -28,7 +28,7 @@ index db0537c968a55f05e4c154aa42ebe73ed8ca9caa..b5e63979fca87ac1f97e83ae18dd30df return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 581b673994ab01b84ddbc80669923190fa4254e2..ceb405c67f69e68afbc920a154fb5c2c6e5985b6 100644 +index 046c11b359125851d48f97505b0a823f01635cff..bc6d8925d1124a138af8918146764ed2bc7b9f27 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -132,6 +132,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Hide-hidden-players-from-entity-selector.patch b/patches/server/0158-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0157-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0158-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 92% rename from patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch index 962e0fe3e..48baffaa1 100644 --- a/patches/server/0158-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0159-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index af6f2fd2f2f48b8057cfb0462a0e72a86a1f83e3..039ae2b694800e0bcd9844be85ad29a0 // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ceb405c67f69e68afbc920a154fb5c2c6e5985b6..9a883639b6a012302b46f2d8e35b8813b2fb0a6b 100644 +index bc6d8925d1124a138af8918146764ed2bc7b9f27..77af32b0e98aaf49add6ca97ff00c6024bcc2cfd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -896,6 +896,7 @@ public class PurpurWorldConfig { +@@ -929,6 +929,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index ceb405c67f69e68afbc920a154fb5c2c6e5985b6..9a883639b6a012302b46f2d8e35b8813 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -911,6 +912,7 @@ public class PurpurWorldConfig { +@@ -944,6 +945,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0159-Iron-golem-calm-anger-options.patch b/patches/server/0160-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/server/0159-Iron-golem-calm-anger-options.patch rename to patches/server/0160-Iron-golem-calm-anger-options.patch index be6cbd583..3a31b700a 100644 --- a/patches/server/0159-Iron-golem-calm-anger-options.patch +++ b/patches/server/0160-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 9c86d86a6d89585cfbdace89e66866f496da86cb..fa81b12fc38a20b8ec39155259fb75c1 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a883639b6a012302b46f2d8e35b8813b2fb0a6b..18d4a212e4372352e9600872b953ae842c4ed01c 100644 +index 77af32b0e98aaf49add6ca97ff00c6024bcc2cfd..0e8829422bd7239523c80048be1aa8c3a17480b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1354,6 +1354,8 @@ public class PurpurWorldConfig { +@@ -1387,6 +1387,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 9a883639b6a012302b46f2d8e35b8813b2fb0a6b..18d4a212e4372352e9600872b953ae84 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1366,6 +1368,8 @@ public class PurpurWorldConfig { +@@ -1399,6 +1401,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0160-Breedable-parrots.patch b/patches/server/0161-Breedable-parrots.patch similarity index 94% rename from patches/server/0160-Breedable-parrots.patch rename to patches/server/0161-Breedable-parrots.patch index 58a9814b3..d017c922c 100644 --- a/patches/server/0160-Breedable-parrots.patch +++ b/patches/server/0161-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 490d7f8ac402f50a2f2f90ca032169784a402c0f..65be3dd9bc6994cac828ed45b74a577b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 18d4a212e4372352e9600872b953ae842c4ed01c..db6ab54957c590c707f61b95de01b55bf0fd9ca4 100644 +index 0e8829422bd7239523c80048be1aa8c3a17480b1..77f8952da7ee8476b685e6aef1f8e2441bca068e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1524,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1557,6 +1557,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 18d4a212e4372352e9600872b953ae842c4ed01c..db6ab54957c590c707f61b95de01b55b private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1536,6 +1537,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1570,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0161-Configurable-powered-rail-boost-modifier.patch b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch similarity index 96% rename from patches/server/0161-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0162-Configurable-powered-rail-boost-modifier.patch index 6c67b1459..7339c27fc 100644 --- a/patches/server/0161-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0162-Configurable-powered-rail-boost-modifier.patch @@ -18,7 +18,7 @@ index 97172e9c53c381d451111227feb4d1fa19d38ad8..e7a1ce585c9e552e6f9ce9acd26fdfe5 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db6ab54957c590c707f61b95de01b55bf0fd9ca4..45cbf5d77b6a0776ffc6362db369ddc2821ac3de 100644 +index 77f8952da7ee8476b685e6aef1f8e2441bca068e..c283a8aec6dfea3f9b84d47cf6abf568be2a73da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -275,6 +275,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch similarity index 93% rename from patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch index d9228bcbd..e5afd6c6a 100644 --- a/patches/server/0162-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0163-Add-config-change-multiplier-critical-damage-value.patch @@ -18,7 +18,7 @@ index e7f45fe435f679afb4fabe657922d7354183c6fb..f45794bf2b418f94961681bac8b0f39f f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45cbf5d77b6a0776ffc6362db369ddc2821ac3de..4508699964ef7e388d8874cd3a227a6d08e8e8ad 100644 +index c283a8aec6dfea3f9b84d47cf6abf568be2a73da..a7d95013005c895676dbe8cc10f12dbcf689b29c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -372,6 +372,7 @@ public class PurpurWorldConfig { @@ -36,4 +36,4 @@ index 45cbf5d77b6a0776ffc6362db369ddc2821ac3de..4508699964ef7e388d8874cd3a227a6d + playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch similarity index 92% rename from patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch index caf0a5390..591f3c374 100644 --- a/patches/server/0163-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0164-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4508699964ef7e388d8874cd3a227a6d08e8e8ad..251776c4c1c4ad9d4128a14b3a489ad81b2f7e02 100644 +index a7d95013005c895676dbe8cc10f12dbcf689b29c..9c9fea719a90e49147b6c2ae342a1437ea8b9be3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -505,6 +505,11 @@ public class PurpurWorldConfig { +@@ -538,6 +538,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0164-Config-for-unverified-username-message.patch b/patches/server/0165-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0164-Config-for-unverified-username-message.patch rename to patches/server/0165-Config-for-unverified-username-message.patch diff --git a/patches/server/0165-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0165-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0166-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0166-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch similarity index 94% rename from patches/server/0166-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0167-Bee-can-work-when-raining-or-at-night.patch index 5673e90d1..e5f375fc3 100644 --- a/patches/server/0166-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0167-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 251776c4c1c4ad9d4128a14b3a489ad81b2f7e02..870443b9214fc1221b4105c67b58002e6f0a505f 100644 +index 9c9fea719a90e49147b6c2ae342a1437ea8b9be3..b3d24e076aef331f26ed5035f2015680f4a5c732 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -732,6 +732,8 @@ public class PurpurWorldConfig { +@@ -765,6 +765,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 251776c4c1c4ad9d4128a14b3a489ad81b2f7e02..870443b9214fc1221b4105c67b58002e private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -745,6 +747,8 @@ public class PurpurWorldConfig { +@@ -778,6 +780,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0167-API-for-any-mob-to-burn-daylight.patch b/patches/server/0168-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from patches/server/0167-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0168-API-for-any-mob-to-burn-daylight.patch diff --git a/patches/server/0168-Config-MobEffect-by-world.patch b/patches/server/0169-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0168-Config-MobEffect-by-world.patch rename to patches/server/0169-Config-MobEffect-by-world.patch index 3fade3a5c..5b850adcc 100644 --- a/patches/server/0168-Config-MobEffect-by-world.patch +++ b/patches/server/0169-Config-MobEffect-by-world.patch @@ -72,7 +72,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 870443b9214fc1221b4105c67b58002e6f0a505f..7725eca13f7a4ca3f07054090fff66a50ef8ba30 100644 +index b3d24e076aef331f26ed5035f2015680f4a5c732..e22dc10989d83642c4714aef97fbbd4a82d68c11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -331,6 +331,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0169-Beacon-Activation-Range-Configurable.patch b/patches/server/0170-Beacon-Activation-Range-Configurable.patch similarity index 94% rename from patches/server/0169-Beacon-Activation-Range-Configurable.patch rename to patches/server/0170-Beacon-Activation-Range-Configurable.patch index 17f392847..c6e34d5a2 100644 --- a/patches/server/0169-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0170-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index dd1fe8357ccf084880a7f3d4d9e499bde672c787..37ce2605c8803d8d87770bf6a95a83aa } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7725eca13f7a4ca3f07054090fff66a50ef8ba30..25bd2cac6fc8d09fc0a1902868ca6cbd77a214c7 100644 +index e22dc10989d83642c4714aef97fbbd4a82d68c11..c27e8ad0e401499105ed3db2ef7b73a6fda8fb37 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -472,6 +472,17 @@ public class PurpurWorldConfig { +@@ -505,6 +505,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0170-Make-lightning-rod-range-configurable.patch b/patches/server/0171-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0170-Make-lightning-rod-range-configurable.patch rename to patches/server/0171-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 96% rename from patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 798db8d40..2fe9cc01b 100644 --- a/patches/server/0171-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,7 +54,7 @@ index b89860d451d92ddda64b7e4144542b7fc5fd86f0..08a6cca64ddd49826a0bbddd7711187c public void eat(ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25bd2cac6fc8d09fc0a1902868ca6cbd77a214c7..dcfd7934da0962f83dcb0f63d471402dd7340389 100644 +index c27e8ad0e401499105ed3db2ef7b73a6fda8fb37..1c2aec3ddbe6d9dd0ae9ce4d074092ed0555d711 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -388,6 +388,8 @@ public class PurpurWorldConfig { @@ -74,4 +74,4 @@ index 25bd2cac6fc8d09fc0a1902868ca6cbd77a214c7..dcfd7934da0962f83dcb0f63d471402d + playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0172-Allow-player-join-full-server-by-permission.patch b/patches/server/0173-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0172-Allow-player-join-full-server-by-permission.patch rename to patches/server/0173-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0173-Add-portal-permission-bypass.patch b/patches/server/0174-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0173-Add-portal-permission-bypass.patch rename to patches/server/0174-Add-portal-permission-bypass.patch diff --git a/patches/server/0174-Shulker-spawn-from-bullet-options.patch b/patches/server/0175-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0174-Shulker-spawn-from-bullet-options.patch rename to patches/server/0175-Shulker-spawn-from-bullet-options.patch index 0c748698c..7776673b5 100644 --- a/patches/server/0174-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0175-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 2202798612cad53aff28c499b8909a7292a37ad5..5ed2b7d15686fc9aa6dc7c03c337433c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dcfd7934da0962f83dcb0f63d471402dd7340389..882cc1117196c70d64887bcc1f04c2977270009f 100644 +index 1c2aec3ddbe6d9dd0ae9ce4d074092ed0555d711..444ae36042e5d5bf2bd3ba7348882304825b5f06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1875,6 +1875,11 @@ public class PurpurWorldConfig { +@@ -1908,6 +1908,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index dcfd7934da0962f83dcb0f63d471402dd7340389..882cc1117196c70d64887bcc1f04c297 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1886,6 +1891,11 @@ public class PurpurWorldConfig { +@@ -1919,6 +1924,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0175-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch similarity index 95% rename from patches/server/0175-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0176-Eating-glow-berries-adds-glow-effect.patch index ab7574b0e..c5288146e 100644 --- a/patches/server/0175-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index d00b59efb754594cf532f8598f4b6d3b29693232..6c423952cfecc8f1afeac88dfecfe292d81bbf83 100644 +index 6467358f5fdf4cd4f7c1e2cc65c834a9da39596a..42b322879629afb2d2fc64a215f010f5d5ce9e02 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -1909,7 +1909,7 @@ public class Items { @@ -18,7 +18,7 @@ index d00b59efb754594cf532f8598f4b6d3b29693232..6c423952cfecc8f1afeac88dfecfe292 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 882cc1117196c70d64887bcc1f04c2977270009f..0323644442a3263f12b146d29928e7ad09774549 100644 +index 444ae36042e5d5bf2bd3ba7348882304825b5f06..75903da7236f6f57c4978d33cd8ac15a4f7d7a62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -220,6 +220,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Option-to-make-drowned-break-doors.patch b/patches/server/0177-Option-to-make-drowned-break-doors.patch similarity index 94% rename from patches/server/0176-Option-to-make-drowned-break-doors.patch rename to patches/server/0177-Option-to-make-drowned-break-doors.patch index 9dd166c74..48af70fc1 100644 --- a/patches/server/0176-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0177-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index f037d50f26f7532f11a71790448de7a71644b6ca..2547ac49721e2840da2845076d5e62a1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0323644442a3263f12b146d29928e7ad09774549..0ff82c6a0279436675a2f56727e1a57803db17e0 100644 +index 75903da7236f6f57c4978d33cd8ac15a4f7d7a62..b3a999c8ecaaf9e0dae83d0fe10f9f927f592b58 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1021,6 +1021,7 @@ public class PurpurWorldConfig { +@@ -1054,6 +1054,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 0323644442a3263f12b146d29928e7ad09774549..0ff82c6a0279436675a2f56727e1a578 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1036,6 +1037,7 @@ public class PurpurWorldConfig { +@@ -1069,6 +1070,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0177-Configurable-hunger-starvation-damage.patch b/patches/server/0178-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0177-Configurable-hunger-starvation-damage.patch rename to patches/server/0178-Configurable-hunger-starvation-damage.patch index 743d38526..0d9d7df22 100644 --- a/patches/server/0177-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0178-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 08a6cca64ddd49826a0bbddd7711187c73bb4997..dd72d6a79139ff33f26a32b71283ce0b this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ff82c6a0279436675a2f56727e1a57803db17e0..802cde2712dc0d1fec24f7dca46b9765ea406022 100644 +index b3a999c8ecaaf9e0dae83d0fe10f9f927f592b58..a9a2b09b985e3e4eb69d4ae16dfd40f46be936d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2534,4 +2534,9 @@ public class PurpurWorldConfig { +@@ -2567,4 +2567,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0178-Enhance-SysoutCatcher.patch b/patches/server/0179-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0178-Enhance-SysoutCatcher.patch rename to patches/server/0179-Enhance-SysoutCatcher.patch diff --git a/patches/server/0179-Add-uptime-command.patch b/patches/server/0180-Add-uptime-command.patch similarity index 100% rename from patches/server/0179-Add-uptime-command.patch rename to patches/server/0180-Add-uptime-command.patch diff --git a/patches/server/0180-Tool-actionable-options.patch b/patches/server/0181-Tool-actionable-options.patch similarity index 99% rename from patches/server/0180-Tool-actionable-options.patch rename to patches/server/0181-Tool-actionable-options.patch index 5546e694d..869604642 100644 --- a/patches/server/0180-Tool-actionable-options.patch +++ b/patches/server/0181-Tool-actionable-options.patch @@ -153,10 +153,10 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 802cde2712dc0d1fec24f7dca46b9765ea406022..c0bd8bc3a11bfc5120c768cbf3e45efaf52ea6c5 100644 +index a9a2b09b985e3e4eb69d4ae16dfd40f46be936d6..e653a0cf4a4350d0faac21fab7681863fe2c75e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -471,6 +471,280 @@ public class PurpurWorldConfig { +@@ -504,6 +504,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0181-Store-placer-on-Block-when-placed.patch b/patches/server/0182-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0181-Store-placer-on-Block-when-placed.patch rename to patches/server/0182-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0182-Summoner-API.patch b/patches/server/0183-Summoner-API.patch similarity index 100% rename from patches/server/0182-Summoner-API.patch rename to patches/server/0183-Summoner-API.patch diff --git a/patches/server/0183-Customizable-sleeping-actionbar-messages.patch b/patches/server/0184-Customizable-sleeping-actionbar-messages.patch similarity index 100% rename from patches/server/0183-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0184-Customizable-sleeping-actionbar-messages.patch diff --git a/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 96% rename from patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch index 8bab2b5ab..4f3d628a3 100644 --- a/patches/server/0184-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -26,7 +26,7 @@ index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..167a8f6fb2354151d5e16aaa6f268f8a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c0bd8bc3a11bfc5120c768cbf3e45efaf52ea6c5..604155c1c99d9f28e5efb60ee9d25cd8af274359 100644 +index e653a0cf4a4350d0faac21fab7681863fe2c75e0..2a05ee4d6d609fb0ab1837d2add45ffba68603fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -221,6 +221,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0185-Big-dripleaf-tilt-delay.patch b/patches/server/0186-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/server/0185-Big-dripleaf-tilt-delay.patch rename to patches/server/0186-Big-dripleaf-tilt-delay.patch index e73ba4d8a..5161c5006 100644 --- a/patches/server/0185-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0186-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 604155c1c99d9f28e5efb60ee9d25cd8af274359..dc5be6e84ef12bba70a94fc2bd8c636ea558e0d3 100644 +index 2a05ee4d6d609fb0ab1837d2add45ffba68603fe..220787aa0d3d144d2fa4296463af3c6b9ed0cf00 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -786,6 +786,22 @@ public class PurpurWorldConfig { +@@ -819,6 +819,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0186-Player-ridable-in-water-option.patch b/patches/server/0187-Player-ridable-in-water-option.patch similarity index 93% rename from patches/server/0186-Player-ridable-in-water-option.patch rename to patches/server/0187-Player-ridable-in-water-option.patch index 673740ce9..db4001c3f 100644 --- a/patches/server/0186-Player-ridable-in-water-option.patch +++ b/patches/server/0187-Player-ridable-in-water-option.patch @@ -23,7 +23,7 @@ index df33ad8ef6394042c2b617606c7c792fe3801632..44ef706008a1477d2073c29f2c9d016b if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc5be6e84ef12bba70a94fc2bd8c636ea558e0d3..b361106d71b0b84dd84e25097fe1c4b3407fd170 100644 +index 220787aa0d3d144d2fa4296463af3c6b9ed0cf00..ee356e3174791f3c54abb8ddbf30694a3e9a87dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -394,6 +394,7 @@ public class PurpurWorldConfig { @@ -41,4 +41,4 @@ index dc5be6e84ef12bba70a94fc2bd8c636ea558e0d3..b361106d71b0b84dd84e25097fe1c4b3 + playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 92% rename from patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 68f618522..645ac77ce 100644 --- a/patches/server/0187-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index b361c6b4ca17b9d466555037235a5660caa5c9bd..21a570d09ad3e19e6c709ff1152db7d2 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b361106d71b0b84dd84e25097fe1c4b3407fd170..6b7d588a2e320a321e7ababe42feae509194291e 100644 +index ee356e3174791f3c54abb8ddbf30694a3e9a87dc..ae67aa6cf66e64d5e7506c0ca7193a9ba8a986ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1392,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1425,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index b361106d71b0b84dd84e25097fe1c4b3407fd170..6b7d588a2e320a321e7ababe42feae50 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1414,6 +1415,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1448,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0188-Add-compass-command.patch b/patches/server/0189-Add-compass-command.patch similarity index 99% rename from patches/server/0188-Add-compass-command.patch rename to patches/server/0189-Add-compass-command.patch index 8023c4d54..2f4edf5e9 100644 --- a/patches/server/0188-Add-compass-command.patch +++ b/patches/server/0189-Add-compass-command.patch @@ -89,7 +89,7 @@ index 45ce203e295d10d522851caefd049995d2d552a2..042fd443c98258240042d3ce1650f36e hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b7d588a2e320a321e7ababe42feae509194291e..f82f7e7082b7df08965fd8921441db1c4d2909b3 100644 +index ae67aa6cf66e64d5e7506c0ca7193a9ba8a986ce..963540e5c3eb6dfbb78b089bba013ef348c8487f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0189-Toggle-for-kinetic-damage.patch b/patches/server/0190-Toggle-for-kinetic-damage.patch similarity index 95% rename from patches/server/0189-Toggle-for-kinetic-damage.patch rename to patches/server/0190-Toggle-for-kinetic-damage.patch index ef02295ff..38fea8cff 100644 --- a/patches/server/0189-Toggle-for-kinetic-damage.patch +++ b/patches/server/0190-Toggle-for-kinetic-damage.patch @@ -17,7 +17,7 @@ index 79b782affc598abcd37a640a523f7bc35d1b3796..28718b44dc2bd98a5144ebcfd8be195a } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f82f7e7082b7df08965fd8921441db1c4d2909b3..510841d88d0c88ed2e33f260152aa90e55a4d2b0 100644 +index 963540e5c3eb6dfbb78b089bba013ef348c8487f..7a2a3243e6d1e22dcbd57674db06bf7cb42abfed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0190-Add-Option-for-disable-observer-clocks.patch b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/server/0190-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0191-Add-Option-for-disable-observer-clocks.patch index 8f674c185..f71d1040c 100644 --- a/patches/server/0190-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 510841d88d0c88ed2e33f260152aa90e55a4d2b0..740ee779f823a560e76357ab981490be5590953c 100644 +index 7a2a3243e6d1e22dcbd57674db06bf7cb42abfed..4513d3e5441e1b68e890836e168c64e9b363f466 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -369,6 +369,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch similarity index 93% rename from patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch index 7002f26ed..af8658aac 100644 --- a/patches/server/0191-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 2ec3a09135f85a5de68e77511f3f213adf08712c..d909138942212ee090ff513b1817414c return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 740ee779f823a560e76357ab981490be5590953c..1f2dc0fae912e07037cc25b8a434d568345c612e 100644 +index 4513d3e5441e1b68e890836e168c64e9b363f466..69753e7dc0fbc59a6e9d84479a5141a740e2fd15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2795,6 +2795,8 @@ public class PurpurWorldConfig { +@@ -2828,6 +2828,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 740ee779f823a560e76357ab981490be5590953c..1f2dc0fae912e07037cc25b8a434d568 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2810,6 +2812,8 @@ public class PurpurWorldConfig { +@@ -2843,6 +2845,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 94% rename from patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch index b9a6be86f..adcf1ca6b 100644 --- a/patches/server/0192-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f2dc0fae912e07037cc25b8a434d568345c612e..3c5c73754a28e2c39e6aee8304f7e78c65f9ff68 100644 +index 69753e7dc0fbc59a6e9d84479a5141a740e2fd15..b69e224dc04758fec2bd0a2631848f4dc5a67b85 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -972,9 +972,13 @@ public class PurpurWorldConfig { +@@ -1005,9 +1005,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch similarity index 91% rename from patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch index c1fb1a8e0..104d0fc9d 100644 --- a/patches/server/0193-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 01d193d2584b62897687bd088fb590de8a4ab279..a030fe21a88a9486cc8367710a96af67 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c5c73754a28e2c39e6aee8304f7e78c65f9ff68..7c1e067957cec8e1ea7fcd20b7893c736ca2dfea 100644 +index b69e224dc04758fec2bd0a2631848f4dc5a67b85..eb64ddde8162833ae522ea88befc2c837a3e6b53 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2640,6 +2640,7 @@ public class PurpurWorldConfig { +@@ -2673,6 +2673,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 3c5c73754a28e2c39e6aee8304f7e78c65f9ff68..7c1e067957cec8e1ea7fcd20b7893c73 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2661,6 +2662,7 @@ public class PurpurWorldConfig { +@@ -2694,6 +2695,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch index b8a80d3fb..5eef83775 100644 --- a/patches/server/0194-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c1e067957cec8e1ea7fcd20b7893c736ca2dfea..3cbcee9438c279266092843932b19f5ceac78735 100644 +index eb64ddde8162833ae522ea88befc2c837a3e6b53..27f34e56820351223707c305f67c5e50aadbbe4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -813,6 +813,11 @@ public class PurpurWorldConfig { +@@ -846,6 +846,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 93% rename from patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch index 01d055a19..154d60583 100644 --- a/patches/server/0195-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,7 +18,7 @@ index 9992599dbe4f4a430e822a44b03c00505abfbfaf..3fea9339420aa38b303ccf6c154aec24 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3cbcee9438c279266092843932b19f5ceac78735..79a16954e686b4c80f8687222c7235a0ee09a7a6 100644 +index 27f34e56820351223707c305f67c5e50aadbbe4f..a673122f46d4e4ad48e8c42e2d50e5ea2870df24 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -404,6 +404,7 @@ public class PurpurWorldConfig { @@ -36,4 +36,4 @@ index 3cbcee9438c279266092843932b19f5ceac78735..79a16954e686b4c80f8687222c7235a0 + playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0196-Conduit-behavior-configuration.patch b/patches/server/0197-Conduit-behavior-configuration.patch similarity index 98% rename from patches/server/0196-Conduit-behavior-configuration.patch rename to patches/server/0197-Conduit-behavior-configuration.patch index 5e990b02f..88f09f8d8 100644 --- a/patches/server/0196-Conduit-behavior-configuration.patch +++ b/patches/server/0197-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 79a16954e686b4c80f8687222c7235a0ee09a7a6..c97d4f18f35b9a8e969707e80ddd51dcaa7c3838 100644 +index a673122f46d4e4ad48e8c42e2d50e5ea2870df24..25c361154866194de70c5d2365c25b4c0148e877 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2861,4 +2861,27 @@ public class PurpurWorldConfig { +@@ -2894,4 +2894,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0197-Cauldron-fill-chances.patch b/patches/server/0198-Cauldron-fill-chances.patch similarity index 96% rename from patches/server/0197-Cauldron-fill-chances.patch rename to patches/server/0198-Cauldron-fill-chances.patch index 8bb045e77..d7f48bf81 100644 --- a/patches/server/0197-Cauldron-fill-chances.patch +++ b/patches/server/0198-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c97d4f18f35b9a8e969707e80ddd51dcaa7c3838..772c5a409c7b9f95e72edca9aa1544d7577a8dc2 100644 +index 25c361154866194de70c5d2365c25b4c0148e877..0227caeb0efa2b9aa1d9e8cb1cb13997ebbb7a1c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2884,4 +2884,15 @@ public class PurpurWorldConfig { +@@ -2917,4 +2917,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 96% rename from patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch index 791833ffc..051804cbb 100644 --- a/patches/server/0198-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 772c5a409c7b9f95e72edca9aa1544d7577a8dc2..4e5b19ae8fa93dfb446004cc8de3bf84942be74a 100644 +index 0227caeb0efa2b9aa1d9e8cb1cb13997ebbb7a1c..c5e32e0e1865cdbd81b9077038717dab4db46f4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -138,6 +138,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0199-Shulker-change-color-with-dye.patch b/patches/server/0200-Shulker-change-color-with-dye.patch similarity index 94% rename from patches/server/0199-Shulker-change-color-with-dye.patch rename to patches/server/0200-Shulker-change-color-with-dye.patch index 7fd15a8a1..9bc5a11f2 100644 --- a/patches/server/0199-Shulker-change-color-with-dye.patch +++ b/patches/server/0200-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index 73063abbd051f1d044a8b2c0530cc8d2a96a6331..687fadf1ef64c5ae7e00c5da15b82245 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e5b19ae8fa93dfb446004cc8de3bf84942be74a..dc11a0b7340f8260fcbb8f6dd5aa2083ffba82ac 100644 +index c5e32e0e1865cdbd81b9077038717dab4db46f4d..aa037b2fb2957be96db3d200294c41e43f6d820f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2202,6 +2202,7 @@ public class PurpurWorldConfig { +@@ -2235,6 +2235,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index 4e5b19ae8fa93dfb446004cc8de3bf84942be74a..dc11a0b7340f8260fcbb8f6dd5aa2083 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2218,6 +2219,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2252,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0200-Extended-OfflinePlayer-API.patch b/patches/server/0201-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0200-Extended-OfflinePlayer-API.patch rename to patches/server/0201-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0201-Added-the-ability-to-add-combustible-items.patch b/patches/server/0202-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0201-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0202-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 97% rename from patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index cf9873527..0d670738a 100644 --- a/patches/server/0202-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,7 +25,7 @@ index 83ec2e31d81d6209953252a3780552c3cf110c68..42db3e64b120b753e98a0fd7e3f56c7d // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc11a0b7340f8260fcbb8f6dd5aa2083ffba82ac..c6ed88cfb476fc1298398e691fe89b560d69d295 100644 +index aa037b2fb2957be96db3d200294c41e43f6d820f..ef65be19cc55c3c473338f02c9687e74b490b358 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 94% rename from patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 49c36602d..5fca4b152 100644 --- a/patches/server/0203-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 260906f493416d98ab574a7262fce5e9b7e40c64..ce639e4a2d87202a10ef4fc73274c4b2 .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6ed88cfb476fc1298398e691fe89b560d69d295..75d86d50736eba0050547635504083b3aefde1e5 100644 +index ef65be19cc55c3c473338f02c9687e74b490b358..49837f5ebccfb0d6fbfefe379f52433b44c5aa79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -773,6 +773,11 @@ public class PurpurWorldConfig { +@@ -806,6 +806,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index c6ed88cfb476fc1298398e691fe89b560d69d295..75d86d50736eba0050547635504083b3 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -910,6 +915,11 @@ public class PurpurWorldConfig { +@@ -943,6 +948,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch similarity index 96% rename from patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch index bdd182473..4a18dec59 100644 --- a/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch @@ -48,7 +48,7 @@ index 939234ccd803f173afe74651a92ff3a1c5b29b85..395ad65503c87250c0e2fa8112208f26 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75d86d50736eba0050547635504083b3aefde1e5..69ac7dfc344dfc01445688de3a0962e6e2fee58a 100644 +index 49837f5ebccfb0d6fbfefe379f52433b44c5aa79..fb785f51d7774d31ed50f71f8048301fc2561ed0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -411,6 +411,7 @@ public class PurpurWorldConfig { @@ -66,4 +66,4 @@ index 75d86d50736eba0050547635504083b3aefde1e5..69ac7dfc344dfc01445688de3a0962e6 + shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch index a1634510d..e75951668 100644 --- a/patches/server/0205-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 38112239035b0c66c429c0762199867e70e0a67a..e539eefb6e6d3172611d1f9185a11380 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 69ac7dfc344dfc01445688de3a0962e6e2fee58a..c967af01e241dd70f5fa33aebe2783487f0e939f 100644 +index fb785f51d7774d31ed50f71f8048301fc2561ed0..b1a941d2747ca93354c9abb67df8419114f27ff7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1300,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1333,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 69ac7dfc344dfc01445688de3a0962e6e2fee58a..c967af01e241dd70f5fa33aebe278348 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1314,6 +1315,7 @@ public class PurpurWorldConfig { +@@ -1347,6 +1348,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch similarity index 96% rename from patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch index 800ec8e56..dd14b76e4 100644 --- a/patches/server/0206-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index 8c908891c6c683332d8877ab3fa084a0849b17a9..541cc6c70178a430ac8e3ab8f6a2250b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c967af01e241dd70f5fa33aebe2783487f0e939f..802d1a588a694071fb08fccfeada44a5c05748ac 100644 +index b1a941d2747ca93354c9abb67df8419114f27ff7..0edff6f99dbea98f0d80f2a48d52d86874430ff5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1249,7 +1249,14 @@ public class PurpurWorldConfig { +@@ -1282,7 +1282,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index c967af01e241dd70f5fa33aebe2783487f0e939f..802d1a588a694071fb08fccfeada44a5 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1262,6 +1269,8 @@ public class PurpurWorldConfig { +@@ -1295,6 +1302,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 92% rename from patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch index d24accb93..8ee26831e 100644 --- a/patches/server/0207-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index a7c85c9efd13145cc061a3a0076b44a7af9812b9..1bace0d549ea4a4b45ac4cd140952498 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 802d1a588a694071fb08fccfeada44a5c05748ac..5f3fda4dc863bcb0e535ef0c55015b728fdead1e 100644 +index 0edff6f99dbea98f0d80f2a48d52d86874430ff5..613dcb1b68169c724dbf63a6327dab5b50dd4a8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -792,6 +792,7 @@ public class PurpurWorldConfig { +@@ -825,6 +825,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 802d1a588a694071fb08fccfeada44a5c05748ac..5f3fda4dc863bcb0e535ef0c55015b72 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -802,6 +803,7 @@ public class PurpurWorldConfig { +@@ -835,6 +836,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0208-Halloween-options-and-optimizations.patch b/patches/server/0209-Halloween-options-and-optimizations.patch similarity index 97% rename from patches/server/0208-Halloween-options-and-optimizations.patch rename to patches/server/0209-Halloween-options-and-optimizations.patch index d6ebcbf6e..b27c2f8a8 100644 --- a/patches/server/0208-Halloween-options-and-optimizations.patch +++ b/patches/server/0209-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index 53f7659aed2378b36f1923a0208c7f86048eb85b..d5a5e51e23328deac09d6990539d8207 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f3fda4dc863bcb0e535ef0c55015b728fdead1e..bfde7e520df0328ab1f7c90f3c028822a7f28355 100644 +index 613dcb1b68169c724dbf63a6327dab5b50dd4a8d..1b7ebd3fe3cefd1ca26957835a93e103641ddb7a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1642,6 +1642,13 @@ public class PurpurWorldConfig { +@@ -1675,6 +1675,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0209-UPnP-Port-Forwarding.patch b/patches/server/0210-UPnP-Port-Forwarding.patch similarity index 100% rename from patches/server/0209-UPnP-Port-Forwarding.patch rename to patches/server/0210-UPnP-Port-Forwarding.patch diff --git a/patches/server/0210-Campfire-option-for-lit-when-placed.patch b/patches/server/0211-Campfire-option-for-lit-when-placed.patch similarity index 94% rename from patches/server/0210-Campfire-option-for-lit-when-placed.patch rename to patches/server/0211-Campfire-option-for-lit-when-placed.patch index 3e033bfe9..9fdd69c02 100644 --- a/patches/server/0210-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0211-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index d6fffb0953494e8667cc456137cac0f5deebfbb6..f7a2244b998aebe354d38eec7aa22fd9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfde7e520df0328ab1f7c90f3c028822a7f28355..e4f0053cf35b419a3f1a37c86b65af50c020c79f 100644 +index 1b7ebd3fe3cefd1ca26957835a93e103641ddb7a..88d300ebbfa907712ddd77c2ca7dd91e04d22f21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -835,6 +835,11 @@ public class PurpurWorldConfig { +@@ -868,6 +868,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 98% rename from patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch index 2f98f6b16..d3e4d711e 100644 --- a/patches/server/0211-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,7 +46,7 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4f0053cf35b419a3f1a37c86b65af50c020c79f..a3f4652dcbfd8547d87868c261d88844d65e797c 100644 +index 88d300ebbfa907712ddd77c2ca7dd91e04d22f21..d005e045f5fc2a9442fb070ebf984f34785ecc9e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -231,6 +231,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch similarity index 92% rename from patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch index 1ee7679cf..7fb8dcede 100644 --- a/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index d909138942212ee090ff513b1817414c93457425..fe43c744cccdc07d5e449ce3ede85f4c if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3f4652dcbfd8547d87868c261d88844d65e797c..bea2cbacd7fbf48af6daff0e904b76ba62e53557 100644 +index d005e045f5fc2a9442fb070ebf984f34785ecc9e..8d4c3c4a06d40841e8446485364393e36e686fdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2861,6 +2861,7 @@ public class PurpurWorldConfig { +@@ -2894,6 +2894,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index a3f4652dcbfd8547d87868c261d88844d65e797c..bea2cbacd7fbf48af6daff0e904b76ba private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2878,6 +2879,7 @@ public class PurpurWorldConfig { +@@ -2911,6 +2912,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0214-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch similarity index 94% rename from patches/server/0214-Mobs-always-drop-experience.patch rename to patches/server/0215-Mobs-always-drop-experience.patch index fb485d4b4..c9e873118 100644 --- a/patches/server/0214-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 0d11200ab580cc306602c29c61f7619565d8261d..62f5e5cfe5745deced2811d14d0c7ebb protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d204305ba35 100644 +index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6e0913991 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1060,12 +1060,14 @@ public class PurpurWorldConfig { +@@ -1093,12 +1093,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean batRidable = false; -@@ -1081,6 +1083,7 @@ public class PurpurWorldConfig { +@@ -1114,6 +1116,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1100,6 +1103,7 @@ public class PurpurWorldConfig { +@@ -1133,6 +1136,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean beeRidable = false; -@@ -1111,6 +1115,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1148,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1126,6 +1131,7 @@ public class PurpurWorldConfig { +@@ -1159,6 +1164,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean blazeRidable = false; -@@ -1134,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1173,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1146,6 +1153,7 @@ public class PurpurWorldConfig { +@@ -1179,6 +1186,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean camelRidableInWater = false; -@@ -1177,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1210,6 +1218,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1197,6 +1206,7 @@ public class PurpurWorldConfig { +@@ -1230,6 +1239,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean caveSpiderRidable = false; -@@ -1204,6 +1214,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1247,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1215,6 +1226,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1259,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean chickenRidable = false; -@@ -1224,6 +1236,7 @@ public class PurpurWorldConfig { +@@ -1257,6 +1269,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1237,12 +1250,14 @@ public class PurpurWorldConfig { +@@ -1270,12 +1283,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1253,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1286,6 +1301,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean cowRidable = false; -@@ -1264,6 +1280,7 @@ public class PurpurWorldConfig { +@@ -1297,6 +1313,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1284,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1334,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean creeperRidable = false; -@@ -1296,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1329,6 +1347,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1312,6 +1331,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1364,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean dolphinRidable = false; -@@ -1323,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1376,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1338,6 +1359,7 @@ public class PurpurWorldConfig { +@@ -1371,6 +1392,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean donkeyRidableInWater = false; -@@ -1349,6 +1371,7 @@ public class PurpurWorldConfig { +@@ -1382,6 +1404,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1366,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1399,6 +1422,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean drownedRidable = false; -@@ -1378,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1435,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1394,12 +1419,14 @@ public class PurpurWorldConfig { +@@ -1427,12 +1452,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1410,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1443,6 +1470,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean enderDragonRidable = false; -@@ -1455,6 +1483,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1516,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1478,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1511,6 +1540,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean endermiteRidable = false; -@@ -1485,6 +1515,7 @@ public class PurpurWorldConfig { +@@ -1518,6 +1548,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1496,6 +1527,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1560,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean evokerRidable = false; -@@ -1504,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1569,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1516,6 +1549,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1582,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean foxRidable = false; -@@ -1526,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1593,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1540,6 +1575,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1608,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean frogRidable = false; -@@ -1561,6 +1597,7 @@ public class PurpurWorldConfig { +@@ -1594,6 +1630,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1573,6 +1610,7 @@ public class PurpurWorldConfig { +@@ -1606,6 +1643,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean giantRidable = false; -@@ -1586,6 +1624,7 @@ public class PurpurWorldConfig { +@@ -1619,6 +1657,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1607,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1679,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean glowSquidRidable = false; -@@ -1614,12 +1654,14 @@ public class PurpurWorldConfig { +@@ -1647,12 +1687,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean goatRidable = false; -@@ -1628,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1661,6 +1703,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1635,12 +1678,14 @@ public class PurpurWorldConfig { +@@ -1668,12 +1711,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1651,6 +1696,7 @@ public class PurpurWorldConfig { +@@ -1684,6 +1729,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean forceHalloweenSeason = false; -@@ -1666,6 +1712,7 @@ public class PurpurWorldConfig { +@@ -1699,6 +1745,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1678,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1758,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean horseRidableInWater = false; -@@ -1689,6 +1737,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1770,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1706,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1739,6 +1788,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean huskRidable = false; -@@ -1717,6 +1767,7 @@ public class PurpurWorldConfig { +@@ -1750,6 +1800,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1732,6 +1783,7 @@ public class PurpurWorldConfig { +@@ -1765,6 +1816,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean illusionerRidable = false; -@@ -1741,6 +1793,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1826,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1758,6 +1811,7 @@ public class PurpurWorldConfig { +@@ -1791,6 +1844,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean ironGolemRidable = false; -@@ -1768,6 +1822,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1855,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1782,6 +1837,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1870,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean llamaRidable = false; -@@ -1796,6 +1852,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1885,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1816,6 +1873,7 @@ public class PurpurWorldConfig { +@@ -1849,6 +1906,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean magmaCubeRidable = false; -@@ -1826,6 +1884,7 @@ public class PurpurWorldConfig { +@@ -1859,6 +1917,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1840,6 +1899,7 @@ public class PurpurWorldConfig { +@@ -1873,6 +1932,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean mooshroomRidable = false; -@@ -1848,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1941,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1860,6 +1921,7 @@ public class PurpurWorldConfig { +@@ -1893,6 +1954,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean muleRidableInWater = false; -@@ -1871,6 +1933,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +1966,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1888,6 +1951,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +1984,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean ocelotRidable = false; -@@ -1896,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1929,6 +1993,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1908,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2006,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean pandaRidable = false; -@@ -1916,6 +1982,7 @@ public class PurpurWorldConfig { +@@ -1949,6 +2015,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1928,6 +1995,7 @@ public class PurpurWorldConfig { +@@ -1961,6 +2028,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean parrotRidable = false; -@@ -1937,6 +2005,7 @@ public class PurpurWorldConfig { +@@ -1970,6 +2038,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1950,6 +2019,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +2052,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean phantomRidable = false; -@@ -1977,6 +2047,7 @@ public class PurpurWorldConfig { +@@ -2010,6 +2080,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2012,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2116,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean pigRidable = false; -@@ -2021,6 +2093,7 @@ public class PurpurWorldConfig { +@@ -2054,6 +2126,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2034,6 +2107,7 @@ public class PurpurWorldConfig { +@@ -2067,6 +2140,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean piglinRidable = false; -@@ -2043,6 +2117,7 @@ public class PurpurWorldConfig { +@@ -2076,6 +2150,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2056,6 +2131,7 @@ public class PurpurWorldConfig { +@@ -2089,6 +2164,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean piglinBruteRidable = false; -@@ -2063,6 +2139,7 @@ public class PurpurWorldConfig { +@@ -2096,6 +2172,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2074,6 +2151,7 @@ public class PurpurWorldConfig { +@@ -2107,6 +2184,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean pillagerRidable = false; -@@ -2082,6 +2160,7 @@ public class PurpurWorldConfig { +@@ -2115,6 +2193,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2094,6 +2173,7 @@ public class PurpurWorldConfig { +@@ -2127,6 +2206,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean polarBearRidable = false; -@@ -2104,6 +2184,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2217,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2119,12 +2200,14 @@ public class PurpurWorldConfig { +@@ -2152,12 +2233,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2135,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2168,6 +2251,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean rabbitRidable = false; -@@ -2146,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2179,6 +2263,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2161,6 +2246,7 @@ public class PurpurWorldConfig { +@@ -2194,6 +2279,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean ravagerRidable = false; -@@ -2170,6 +2256,7 @@ public class PurpurWorldConfig { +@@ -2203,6 +2289,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2199,12 +2286,14 @@ public class PurpurWorldConfig { +@@ -2232,12 +2319,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2215,6 +2304,7 @@ public class PurpurWorldConfig { +@@ -2248,6 +2337,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean sheepRidable = false; -@@ -2224,6 +2314,7 @@ public class PurpurWorldConfig { +@@ -2257,6 +2347,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2237,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2270,6 +2361,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean shulkerRidable = false; -@@ -2250,6 +2342,7 @@ public class PurpurWorldConfig { +@@ -2283,6 +2375,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2267,6 +2360,7 @@ public class PurpurWorldConfig { +@@ -2300,6 +2393,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean silverfishRidable = false; -@@ -2275,6 +2369,7 @@ public class PurpurWorldConfig { +@@ -2308,6 +2402,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2287,6 +2382,7 @@ public class PurpurWorldConfig { +@@ -2320,6 +2415,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean skeletonRidable = false; -@@ -2294,6 +2390,7 @@ public class PurpurWorldConfig { +@@ -2327,6 +2423,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2305,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2338,6 +2435,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean skeletonHorseRidable = false; -@@ -2317,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2448,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2334,6 +2433,7 @@ public class PurpurWorldConfig { +@@ -2367,6 +2466,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean slimeRidable = false; -@@ -2344,6 +2444,7 @@ public class PurpurWorldConfig { +@@ -2377,6 +2477,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2358,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2391,6 +2492,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean snowGolemRidable = false; -@@ -2372,6 +2474,7 @@ public class PurpurWorldConfig { +@@ -2405,6 +2507,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2390,6 +2493,7 @@ public class PurpurWorldConfig { +@@ -2423,6 +2526,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean snifferRidable = false; -@@ -2412,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2549,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2425,6 +2530,7 @@ public class PurpurWorldConfig { +@@ -2458,6 +2563,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean spiderRidable = false; -@@ -2432,6 +2538,7 @@ public class PurpurWorldConfig { +@@ -2465,6 +2571,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2443,6 +2550,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2583,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean strayRidable = false; -@@ -2450,6 +2558,7 @@ public class PurpurWorldConfig { +@@ -2483,6 +2591,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2461,6 +2570,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2603,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean striderRidable = false; -@@ -2470,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2503,6 +2613,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2483,6 +2594,7 @@ public class PurpurWorldConfig { +@@ -2516,6 +2627,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean tadpoleRidable = false; -@@ -2505,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2538,6 +2650,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2524,12 +2637,14 @@ public class PurpurWorldConfig { +@@ -2557,12 +2670,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2540,6 +2655,7 @@ public class PurpurWorldConfig { +@@ -2573,6 +2688,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean turtleRidable = false; -@@ -2548,6 +2664,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2697,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2560,6 +2677,7 @@ public class PurpurWorldConfig { +@@ -2593,6 +2710,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean vexRidable = false; -@@ -2568,6 +2686,7 @@ public class PurpurWorldConfig { +@@ -2601,6 +2719,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2580,6 +2699,7 @@ public class PurpurWorldConfig { +@@ -2613,6 +2732,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean villagerRidable = false; -@@ -2595,6 +2715,7 @@ public class PurpurWorldConfig { +@@ -2628,6 +2748,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2614,6 +2735,7 @@ public class PurpurWorldConfig { +@@ -2647,6 +2768,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean vindicatorRidable = false; -@@ -2622,6 +2744,7 @@ public class PurpurWorldConfig { +@@ -2655,6 +2777,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2634,6 +2757,7 @@ public class PurpurWorldConfig { +@@ -2667,6 +2790,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean wanderingTraderRidable = false; -@@ -2644,6 +2768,7 @@ public class PurpurWorldConfig { +@@ -2677,6 +2801,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2658,6 +2783,7 @@ public class PurpurWorldConfig { +@@ -2691,6 +2816,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean wardenRidable = false; -@@ -2674,6 +2800,7 @@ public class PurpurWorldConfig { +@@ -2707,6 +2833,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2685,6 +2812,7 @@ public class PurpurWorldConfig { +@@ -2718,6 +2845,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean witherRidable = false; -@@ -2699,6 +2827,7 @@ public class PurpurWorldConfig { +@@ -2732,6 +2860,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2721,6 +2850,7 @@ public class PurpurWorldConfig { +@@ -2754,6 +2883,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean witherSkeletonRidable = false; -@@ -2728,6 +2858,7 @@ public class PurpurWorldConfig { +@@ -2761,6 +2891,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2739,6 +2870,7 @@ public class PurpurWorldConfig { +@@ -2772,6 +2903,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean wolfRidable = false; -@@ -2750,6 +2882,7 @@ public class PurpurWorldConfig { +@@ -2783,6 +2915,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2769,6 +2902,7 @@ public class PurpurWorldConfig { +@@ -2802,6 +2935,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean zoglinRidable = false; -@@ -2776,6 +2910,7 @@ public class PurpurWorldConfig { +@@ -2809,6 +2943,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2787,6 +2922,7 @@ public class PurpurWorldConfig { +@@ -2820,6 +2955,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean zombieRidable = false; -@@ -2800,6 +2936,7 @@ public class PurpurWorldConfig { +@@ -2833,6 +2969,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2817,6 +2954,7 @@ public class PurpurWorldConfig { +@@ -2850,6 +2987,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean zombieHorseRidable = false; -@@ -2830,6 +2968,7 @@ public class PurpurWorldConfig { +@@ -2863,6 +3001,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2848,6 +2987,7 @@ public class PurpurWorldConfig { +@@ -2881,6 +3020,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean zombieVillagerRidable = false; -@@ -2862,6 +3002,7 @@ public class PurpurWorldConfig { +@@ -2895,6 +3035,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2880,6 +3021,7 @@ public class PurpurWorldConfig { +@@ -2913,6 +3054,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 } public boolean zombifiedPiglinRidable = false; -@@ -2892,6 +3034,7 @@ public class PurpurWorldConfig { +@@ -2925,6 +3067,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index bea2cbacd7fbf48af6daff0e904b76ba62e53557..b6548af929aee9cb4f323b50de921d20 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2908,6 +3051,7 @@ public class PurpurWorldConfig { +@@ -2941,6 +3084,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0215-Grindstone-API.patch b/patches/server/0216-Grindstone-API.patch similarity index 100% rename from patches/server/0215-Grindstone-API.patch rename to patches/server/0216-Grindstone-API.patch diff --git a/patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 16675d2aa..14c0beabc 100644 --- a/patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6548af929aee9cb4f323b50de921d204305ba35..06c9f6b1eaf2ce84b5857704ed0d582d0f7e8c89 100644 +index b493eb542c3284ce1e748ca8f61312c6e0913991..b82024428de95ba18a21b4294ecc0fc52ad89fee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -505,6 +505,8 @@ public class PurpurWorldConfig { +@@ -538,6 +538,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index b6548af929aee9cb4f323b50de921d204305ba35..06c9f6b1eaf2ce84b5857704ed0d582d private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -772,6 +774,8 @@ public class PurpurWorldConfig { +@@ -805,6 +807,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch index 956b92612..4d99f9fb9 100644 --- a/patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06c9f6b1eaf2ce84b5857704ed0d582d0f7e8c89..7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f 100644 +index b82024428de95ba18a21b4294ecc0fc52ad89fee..f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1027,11 +1027,13 @@ public class PurpurWorldConfig { +@@ -1060,11 +1060,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0218-Mob-head-visibility-percent.patch b/patches/server/0219-Mob-head-visibility-percent.patch similarity index 91% rename from patches/server/0218-Mob-head-visibility-percent.patch rename to patches/server/0219-Mob-head-visibility-percent.patch index c6bf8d240..4dd20025d 100644 --- a/patches/server/0218-Mob-head-visibility-percent.patch +++ b/patches/server/0219-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b85699 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7b6cc281e 100644 +index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46e07b93f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1321,6 +1321,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1338,6 +1339,7 @@ public class PurpurWorldConfig { +@@ -1371,6 +1372,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 } public boolean dolphinRidable = false; -@@ -2124,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2159,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2138,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2174,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 } public boolean piglinBruteRidable = false; -@@ -2397,6 +2401,7 @@ public class PurpurWorldConfig { +@@ -2430,6 +2434,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2409,6 +2414,7 @@ public class PurpurWorldConfig { +@@ -2442,6 +2447,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 } public boolean skeletonHorseRidable = false; -@@ -2943,6 +2949,7 @@ public class PurpurWorldConfig { +@@ -2976,6 +2982,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 7d0319d0da3d09c3d5c58b47ca4e8ab9f47d352f..14182802bed73f6f64940dd1f49b76c7 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2961,6 +2968,7 @@ public class PurpurWorldConfig { +@@ -2994,6 +3001,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0219-Configurable-valid-characters-for-usernames.patch b/patches/server/0220-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0219-Configurable-valid-characters-for-usernames.patch rename to patches/server/0220-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0220-Shears-can-have-looting-enchantment.patch b/patches/server/0221-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0220-Shears-can-have-looting-enchantment.patch rename to patches/server/0221-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0221-Stop-bees-from-dying-after-stinging.patch b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0221-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0222-Stop-bees-from-dying-after-stinging.patch index af73596b0..d65e11b3b 100644 --- a/patches/server/0221-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 14182802bed73f6f64940dd1f49b76c7b6cc281e..b6592dadc81a4f003153980d357eba6f62c9fb63 100644 +index 0c3fec906da62b627f2570f78f2d3d46e07b93f1..252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1122,6 +1122,7 @@ public class PurpurWorldConfig { +@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 14182802bed73f6f64940dd1f49b76c7b6cc281e..b6592dadc81a4f003153980d357eba6f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1138,6 +1139,7 @@ public class PurpurWorldConfig { +@@ -1171,6 +1172,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0222-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0223-Configurable-farmland-trample-height.patch b/patches/server/0224-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0223-Configurable-farmland-trample-height.patch rename to patches/server/0224-Configurable-farmland-trample-height.patch index 563e26fe6..ad933891a 100644 --- a/patches/server/0223-Configurable-farmland-trample-height.patch +++ b/patches/server/0224-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6592dadc81a4f003153980d357eba6f62c9fb63..3c8e1ae5156c382f94c2785b53eb70a074106ed2 100644 +index 252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c..9a920c2bb3efa5754245b76aa13a81ca01028fc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -925,6 +925,7 @@ public class PurpurWorldConfig { +@@ -958,6 +958,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index b6592dadc81a4f003153980d357eba6f62c9fb63..3c8e1ae5156c382f94c2785b53eb70a0 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -932,6 +933,7 @@ public class PurpurWorldConfig { +@@ -965,6 +966,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0224-Configurable-player-pickup-exp-delay.patch b/patches/server/0225-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0224-Configurable-player-pickup-exp-delay.patch rename to patches/server/0225-Configurable-player-pickup-exp-delay.patch index 01628f70e..b09cede36 100644 --- a/patches/server/0224-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0225-Configurable-player-pickup-exp-delay.patch @@ -35,7 +35,7 @@ index 44ef706008a1477d2073c29f2c9d016bf91e15a6..102da46e66ac3a395af98fdb0013587e } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c8e1ae5156c382f94c2785b53eb70a074106ed2..e7012f1763747672543957029100a76abefc0848 100644 +index 9a920c2bb3efa5754245b76aa13a81ca01028fc1..e687752dafb2daa5ecc638171e4e8730e7d877c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -418,6 +418,7 @@ public class PurpurWorldConfig { @@ -53,4 +53,4 @@ index 3c8e1ae5156c382f94c2785b53eb70a074106ed2..e7012f1763747672543957029100a76a + playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0225-Allow-void-trading.patch b/patches/server/0226-Allow-void-trading.patch similarity index 94% rename from patches/server/0225-Allow-void-trading.patch rename to patches/server/0226-Allow-void-trading.patch index de6b581d7..ac513522d 100644 --- a/patches/server/0225-Allow-void-trading.patch +++ b/patches/server/0226-Allow-void-trading.patch @@ -18,7 +18,7 @@ index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb0 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7012f1763747672543957029100a76abefc0848..fee4409841ad82bf8d00864ea285453cfddec849 100644 +index e687752dafb2daa5ecc638171e4e8730e7d877c7..1cce789eedff397dc3c2a1edcd2991bc9925f5cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -419,6 +419,7 @@ public class PurpurWorldConfig { @@ -36,4 +36,4 @@ index e7012f1763747672543957029100a76abefc0848..fee4409841ad82bf8d00864ea285453c + playerVoidTrading = getBoolean("gameplay-mechanics.player.allow-void-trading", playerVoidTrading); } - private static boolean projectileDespawnRateSettingsMigrated = false; + public boolean silkTouchEnabled = false; diff --git a/patches/server/0226-Configurable-phantom-size.patch b/patches/server/0227-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0226-Configurable-phantom-size.patch rename to patches/server/0227-Configurable-phantom-size.patch index 15ecf628c..c963273a3 100644 --- a/patches/server/0226-Configurable-phantom-size.patch +++ b/patches/server/0227-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fee4409841ad82bf8d00864ea285453cfddec849..0bbb872ba5e444cee4f34358a4a7db9e300ca128 100644 +index 1cce789eedff397dc3c2a1edcd2991bc9925f5cb..ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2064,6 +2064,8 @@ public class PurpurWorldConfig { +@@ -2097,6 +2097,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index fee4409841ad82bf8d00864ea285453cfddec849..0bbb872ba5e444cee4f34358a4a7db9e private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2100,6 +2102,13 @@ public class PurpurWorldConfig { +@@ -2133,6 +2135,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0227-Max-joins-per-second.patch b/patches/server/0228-Max-joins-per-second.patch similarity index 100% rename from patches/server/0227-Max-joins-per-second.patch rename to patches/server/0228-Max-joins-per-second.patch diff --git a/patches/server/0228-Configurable-minimum-demand-for-trades.patch b/patches/server/0229-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0228-Configurable-minimum-demand-for-trades.patch rename to patches/server/0229-Configurable-minimum-demand-for-trades.patch index 84725e894..c47c3f1d3 100644 --- a/patches/server/0228-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0229-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0bbb872ba5e444cee4f34358a4a7db9e300ca128..9560a982f4fd33bdab5c6eec860629a8627819c0 100644 +index ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd..95382bac24be84f0232930373e8d6128b76a8554 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2745,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2778,6 +2778,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 0bbb872ba5e444cee4f34358a4a7db9e300ca128..9560a982f4fd33bdab5c6eec860629a8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2765,6 +2766,7 @@ public class PurpurWorldConfig { +@@ -2798,6 +2799,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0229-Lobotomize-stuck-villagers.patch b/patches/server/0230-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0229-Lobotomize-stuck-villagers.patch rename to patches/server/0230-Lobotomize-stuck-villagers.patch index 3963fa121..0582fd7cc 100644 --- a/patches/server/0229-Lobotomize-stuck-villagers.patch +++ b/patches/server/0230-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9560a982f4fd33bdab5c6eec860629a8627819c0..953e8eb3580c337bcfb884ef645459046163b320 100644 +index 95382bac24be84f0232930373e8d6128b76a8554..158d802ce38a9ae6c222cfa9e4a70806bd6eff51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2746,6 +2746,9 @@ public class PurpurWorldConfig { +@@ -2779,6 +2779,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 9560a982f4fd33bdab5c6eec860629a8627819c0..953e8eb3580c337bcfb884ef64545904 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2767,6 +2770,18 @@ public class PurpurWorldConfig { +@@ -2800,6 +2803,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0230-Option-for-villager-display-trade-item.patch b/patches/server/0231-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0230-Option-for-villager-display-trade-item.patch rename to patches/server/0231-Option-for-villager-display-trade-item.patch index e55a4f689..935342875 100644 --- a/patches/server/0230-Option-for-villager-display-trade-item.patch +++ b/patches/server/0231-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 953e8eb3580c337bcfb884ef645459046163b320..adecd8c6530f72ac4013cdce17ca21d7b1e36b69 100644 +index 158d802ce38a9ae6c222cfa9e4a70806bd6eff51..5c2639e142d04fee6c467292b1173917213a537c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2749,6 +2749,7 @@ public class PurpurWorldConfig { +@@ -2782,6 +2782,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 953e8eb3580c337bcfb884ef645459046163b320..adecd8c6530f72ac4013cdce17ca21d7 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2782,6 +2783,7 @@ public class PurpurWorldConfig { +@@ -2815,6 +2816,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 0b4b1507e..9002b9b19 100644 --- a/patches/server/0231-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a22 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adecd8c6530f72ac4013cdce17ca21d7b1e36b69..591c2ac44cd7d921ea0aa7f2703d61c3d8a08921 100644 +index 5c2639e142d04fee6c467292b1173917213a537c..ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1014,8 +1014,10 @@ public class PurpurWorldConfig { +@@ -1047,8 +1047,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch similarity index 97% rename from patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch index f4950c805..7e1716dda 100644 --- a/patches/server/0232-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch @@ -38,7 +38,7 @@ index 1a8a76aa31bd1d1670be6e9cada162c540084cf9..b452ebbe11145987fb5e66b399938984 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 591c2ac44cd7d921ea0aa7f2703d61c3d8a08921..3c04866f1738c5d13d03b5d86515fb75147e5be6 100644 +index ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63..6dd04e6b344f1cfc32f3161832c9012ef5b83ee8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -141,6 +141,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0233-Anvil-repair-damage-options.patch b/patches/server/0234-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0233-Anvil-repair-damage-options.patch rename to patches/server/0234-Anvil-repair-damage-options.patch index 5d3438009..55bf79728 100644 --- a/patches/server/0233-Anvil-repair-damage-options.patch +++ b/patches/server/0234-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c04866f1738c5d13d03b5d86515fb75147e5be6..70560445d1c5eddf7f19153be60cb85f9401f2c8 100644 +index 6dd04e6b344f1cfc32f3161832c9012ef5b83ee8..4b70ba95de6c238f6d085b343e97a4cdc521eaf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -786,9 +786,13 @@ public class PurpurWorldConfig { +@@ -819,9 +819,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 444e8baab..44abee64a 100644 --- a/patches/server/0234-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70560445d1c5eddf7f19153be60cb85f9401f2c8..defaab96d7f9bc7c6dc7578d1a3f40b944ad6a48 100644 +index 4b70ba95de6c238f6d085b343e97a4cdc521eaf7..1c9ecab6a0fe5da259fa1c080374dab8bd446911 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1042,12 +1042,14 @@ public class PurpurWorldConfig { +@@ -1075,12 +1075,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0235-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0235-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0236-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0236-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0237-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0236-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0237-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch index 9489fc6d1..224aaf71a 100644 --- a/patches/server/0237-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index defaab96d7f9bc7c6dc7578d1a3f40b944ad6a48..6fd09799427a6fef8ef1ec75ed5be8ab3fef60a1 100644 +index 1c9ecab6a0fe5da259fa1c080374dab8bd446911..e115fe44b20b1e6231d752770c27c4354f2a942c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2760,6 +2760,8 @@ public class PurpurWorldConfig { +@@ -2793,6 +2793,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index defaab96d7f9bc7c6dc7578d1a3f40b944ad6a48..6fd09799427a6fef8ef1ec75ed5be8ab private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2794,6 +2796,8 @@ public class PurpurWorldConfig { +@@ -2827,6 +2829,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0238-Stonecutter-damage.patch b/patches/server/0239-Stonecutter-damage.patch similarity index 98% rename from patches/server/0238-Stonecutter-damage.patch rename to patches/server/0239-Stonecutter-damage.patch index e12eb7a97..3489e4090 100644 --- a/patches/server/0238-Stonecutter-damage.patch +++ b/patches/server/0239-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 1e28c96f5b142a28be530dfc24d67b99c3803948..cadb07b2ec32baa5f509b9da3bfd9044 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6fd09799427a6fef8ef1ec75ed5be8ab3fef60a1..6a380bf14b21e318c5c834c869510daaf05392a7 100644 +index e115fe44b20b1e6231d752770c27c4354f2a942c..97d7a74c1e6879b2a67c4243b03c35e998773faf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1037,6 +1037,11 @@ public class PurpurWorldConfig { +@@ -1070,6 +1070,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch similarity index 93% rename from patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch index e8e37bb2f..a69aacde4 100644 --- a/patches/server/0239-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30feb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6a380bf14b21e318c5c834c869510daaf05392a7..07d94a6579905cfa54da183588b4b2729a463605 100644 +index 97d7a74c1e6879b2a67c4243b03c35e998773faf..3d06c206b65a1288c72817f82cfa5b9e5ae026ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -983,6 +983,13 @@ public class PurpurWorldConfig { +@@ -1016,6 +1016,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0240-Add-config-for-snow-on-blue-ice.patch b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0240-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0241-Add-config-for-snow-on-blue-ice.patch index a829346e5..75d067b63 100644 --- a/patches/server/0240-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07d94a6579905cfa54da183588b4b2729a463605..b4ffa808f39796e1e5c1e0c649b4027aef9fe1c4 100644 +index 3d06c206b65a1288c72817f82cfa5b9e5ae026ee..dd72530cfa9f1790ebab063e094c255d597dba8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -964,9 +964,11 @@ public class PurpurWorldConfig { +@@ -997,9 +997,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0241-Skeletons-eat-wither-roses.patch b/patches/server/0242-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0241-Skeletons-eat-wither-roses.patch rename to patches/server/0242-Skeletons-eat-wither-roses.patch index 297d9e34e..c3862e7ab 100644 --- a/patches/server/0241-Skeletons-eat-wither-roses.patch +++ b/patches/server/0242-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 1aae461eed332fe31c1449c47d0928f655c740da..9eb6ed001bfc578311300977dda6f3f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b4ffa808f39796e1e5c1e0c649b4027aef9fe1c4..ff4e51d06f375fe8426346db539bfb55dafefb10 100644 +index dd72530cfa9f1790ebab063e094c255d597dba8a..66c9464f6c4241c3a14a4057a216418fd5ab067e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2443,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2476,6 +2476,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index b4ffa808f39796e1e5c1e0c649b4027aef9fe1c4..ff4e51d06f375fe8426346db539bfb55 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2456,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2489,6 +2490,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0242-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0242-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0243-Enchantment-Table-Persists-Lapis.patch index f09901b88..2c69fe2b5 100644 --- a/patches/server/0242-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb92808 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff4e51d06f375fe8426346db539bfb55dafefb10..512a021ad416c467e42ec39c6ac0bd9788c2c365 100644 +index 66c9464f6c4241c3a14a4057a216418fd5ab067e..8ad6437173dd39aa7415709efc8f65404abf7bd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1480,6 +1480,11 @@ public class PurpurWorldConfig { +@@ -1513,6 +1513,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0243-Spark-Profiler.patch b/patches/server/0244-Spark-Profiler.patch similarity index 100% rename from patches/server/0243-Spark-Profiler.patch rename to patches/server/0244-Spark-Profiler.patch diff --git a/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch index afdc6e809..a9326ca70 100644 --- a/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 512a021ad416c467e42ec39c6ac0bd9788c2c365..83e5ef5d91299f97d65dcb3ad76c84c141ff9272 100644 +index 8ad6437173dd39aa7415709efc8f65404abf7bd9..0811baed3de98fa011f191afeedb5cccd1a0ef4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { +@@ -1056,6 +1056,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0246-Config-to-not-let-coral-die.patch b/patches/server/0247-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0246-Config-to-not-let-coral-die.patch rename to patches/server/0247-Config-to-not-let-coral-die.patch index 6fb3df325..dce57f281 100644 --- a/patches/server/0246-Config-to-not-let-coral-die.patch +++ b/patches/server/0247-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83e5ef5d91299f97d65dcb3ad76c84c141ff9272..4e1d5d40484296baa43ec0913ece23afe99683d4 100644 +index 0811baed3de98fa011f191afeedb5cccd1a0ef4b..2e7b471b23694cdce1b8017c14e1f2ca62b90538 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -870,6 +870,11 @@ public class PurpurWorldConfig { +@@ -903,6 +903,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0247-Add-local-difficulty-api.patch b/patches/server/0248-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0247-Add-local-difficulty-api.patch rename to patches/server/0248-Add-local-difficulty-api.patch diff --git a/patches/server/0248-Add-toggle-for-RNG-manipulation.patch b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch similarity index 97% rename from patches/server/0248-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0249-Add-toggle-for-RNG-manipulation.patch index 0d613379e..bc62eb562 100644 --- a/patches/server/0248-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch @@ -33,7 +33,7 @@ index b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e1d5d40484296baa43ec0913ece23afe99683d4..a69f1e56952298bf1155309d3ae1fb995be32ecb 100644 +index 2e7b471b23694cdce1b8017c14e1f2ca62b90538..da2bde5acf5a2e79ad2885f4727844e85de5ca0d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -202,9 +202,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0249-Remove-Timings.patch b/patches/server/0250-Remove-Timings.patch similarity index 100% rename from patches/server/0249-Remove-Timings.patch rename to patches/server/0250-Remove-Timings.patch diff --git a/patches/server/0250-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0250-Remove-Mojang-Profiler.patch rename to patches/server/0251-Remove-Mojang-Profiler.patch diff --git a/patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0252-Add-Bee-API.patch b/patches/server/0253-Add-Bee-API.patch similarity index 100% rename from patches/server/0252-Add-Bee-API.patch rename to patches/server/0253-Add-Bee-API.patch diff --git a/patches/server/0253-Debug-Marker-API.patch b/patches/server/0254-Debug-Marker-API.patch similarity index 100% rename from patches/server/0253-Debug-Marker-API.patch rename to patches/server/0254-Debug-Marker-API.patch diff --git a/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch similarity index 96% rename from patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch index 0b15fe0a4..0c8370562 100644 --- a/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch @@ -18,7 +18,7 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a69f1e56952298bf1155309d3ae1fb995be32ecb..2822dfdf35e4f6b30379350b95a94ebfb7ce7c6d 100644 +index da2bde5acf5a2e79ad2885f4727844e85de5ca0d..d678fbb4ea310b4f833f131618ed5901f1eebd7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -375,6 +375,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Add-skeleton-bow-accuracy-option.patch b/patches/server/0256-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0255-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0256-Add-skeleton-bow-accuracy-option.patch index d6be178a6..2688c8cb2 100644 --- a/patches/server/0255-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0256-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e4592768 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2822dfdf35e4f6b30379350b95a94ebfb7ce7c6d..1fbed95c05e5d8815a815b2e8c33c064446de40a 100644 +index d678fbb4ea310b4f833f131618ed5901f1eebd7e..af8be03143ea89af74ba86b6c0777c13e2eb7121 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2463,6 +2463,8 @@ public class PurpurWorldConfig { +@@ -2496,6 +2496,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 2822dfdf35e4f6b30379350b95a94ebfb7ce7c6d..1fbed95c05e5d8815a815b2e8c33c064 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2477,6 +2479,18 @@ public class PurpurWorldConfig { +@@ -2510,6 +2512,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0256-Add-death-screen-API.patch b/patches/server/0257-Add-death-screen-API.patch similarity index 100% rename from patches/server/0256-Add-death-screen-API.patch rename to patches/server/0257-Add-death-screen-API.patch diff --git a/patches/server/0257-Implement-ram-and-rambar-commands.patch b/patches/server/0258-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0257-Implement-ram-and-rambar-commands.patch rename to patches/server/0258-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 100% rename from patches/server/0258-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/patches/server/0259-Configurable-block-blast-resistance.patch b/patches/server/0260-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0259-Configurable-block-blast-resistance.patch rename to patches/server/0260-Configurable-block-blast-resistance.patch diff --git a/patches/server/0260-Configurable-block-fall-damage-modifiers.patch b/patches/server/0261-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0260-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0261-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0261-Language-API.patch b/patches/server/0262-Language-API.patch similarity index 100% rename from patches/server/0261-Language-API.patch rename to patches/server/0262-Language-API.patch diff --git a/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0263-Milk-Keeps-Beneficial-Effects.patch similarity index 97% rename from patches/server/0262-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0263-Milk-Keeps-Beneficial-Effects.patch index a87c15301..af54814e3 100644 --- a/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0263-Milk-Keeps-Beneficial-Effects.patch @@ -30,7 +30,7 @@ index 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1fbed95c05e5d8815a815b2e8c33c064446de40a..97c9e8097bcaed24acc465aa5162538d38b56814 100644 +index af8be03143ea89af74ba86b6c0777c13e2eb7121..af8819ef2c6edc91e6ba2c11f31b677bf136117e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0265-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0264-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0265-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch index d6297f44b..b8349c464 100644 --- a/patches/server/0265-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97c9e8097bcaed24acc465aa5162538d38b56814..06b72061a8c1c2e0bd085f4fde7511a73fe3fec3 100644 +index af8819ef2c6edc91e6ba2c11f31b677bf136117e..a3da09a662603d90da4e343e400227e317b4bf24 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1370,6 +1370,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1403,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 97c9e8097bcaed24acc465aa5162538d38b56814..06b72061a8c1c2e0bd085f4fde7511a7 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1388,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1422,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0266-Fire-Immunity-API.patch b/patches/server/0267-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0266-Fire-Immunity-API.patch rename to patches/server/0267-Fire-Immunity-API.patch diff --git a/patches/server/0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 96% rename from patches/server/0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 503abfc7d..0253810b8 100644 --- a/patches/server/0267-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,7 +17,7 @@ index 7a27388b5155e7b2478b0daa02cb616829a5d4a2..3aae4fa4176c0bf170f4532ae187e312 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06b72061a8c1c2e0bd085f4fde7511a73fe3fec3..42e6d0177969fc045003b5fa8df2a0223362a1a2 100644 +index a3da09a662603d90da4e343e400227e317b4bf24..f7eba6f2e188ee5504db11feb6b433c46b82f374 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -415,6 +415,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0268-Added-got-ram-event.patch b/patches/server/0269-Added-got-ram-event.patch similarity index 100% rename from patches/server/0268-Added-got-ram-event.patch rename to patches/server/0269-Added-got-ram-event.patch diff --git a/patches/server/0269-Log-skipped-entity-s-position.patch b/patches/server/0270-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0269-Log-skipped-entity-s-position.patch rename to patches/server/0270-Log-skipped-entity-s-position.patch diff --git a/patches/server/0270-End-Crystal-Cramming.patch b/patches/server/0271-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0270-End-Crystal-Cramming.patch rename to patches/server/0271-End-Crystal-Cramming.patch index c6a791e10..01113d3f5 100644 --- a/patches/server/0270-End-Crystal-Cramming.patch +++ b/patches/server/0271-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdb // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42e6d0177969fc045003b5fa8df2a0223362a1a2..d74a3602bdb45594da4deb7d65eee8fe98af5cae 100644 +index f7eba6f2e188ee5504db11feb6b433c46b82f374..1c31adc9bebd8a282719ecc16d60bd45672507fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -913,6 +913,7 @@ public class PurpurWorldConfig { +@@ -946,6 +946,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 42e6d0177969fc045003b5fa8df2a0223362a1a2..d74a3602bdb45594da4deb7d65eee8fe private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -940,6 +941,7 @@ public class PurpurWorldConfig { +@@ -973,6 +974,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index aee8a4fbd..6770c73c8 100644 --- a/patches/server/0271-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index 37ce2605c8803d8d87770bf6a95a83aa975b99fe..39d4e47b1408dd7c0174a6cf8b4ebac6 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d74a3602bdb45594da4deb7d65eee8fe98af5cae..c54bf92fbe8b975aee69819cfdf64ad2cb3065b6 100644 +index 1c31adc9bebd8a282719ecc16d60bd45672507fe..9702ce32484954ec0aa4828315df443c1f518ec2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -812,11 +812,13 @@ public class PurpurWorldConfig { +@@ -845,11 +845,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0272-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0272-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0273-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0273-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0274-Config-to-remove-explosion-radius-clamp.patch index 8b6885d33..8dc99e2b4 100644 --- a/patches/server/0273-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index 6b6340ae8ca3f81f08f9038b63ebc419e003cf6b..ed31528ddfec06e723827a505daeca59 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c54bf92fbe8b975aee69819cfdf64ad2cb3065b6..8b440188e2ea6e75adcb9b9e4919279c3a7f8576 100644 +index 9702ce32484954ec0aa4828315df443c1f518ec2..b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -211,6 +211,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0274-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0274-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch index d1a339124..6911c8b0a 100644 --- a/patches/server/0274-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8b440188e2ea6e75adcb9b9e4919279c3a7f8576..5dd73270a3fe702a660f3689f09d2d08bf9f322f 100644 +index b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd..3ad00e226f40685bc68fdb16712876b37a98f5d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -866,8 +866,20 @@ public class PurpurWorldConfig { +@@ -899,8 +899,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0275-Add-PreExplodeEvents.patch b/patches/server/0276-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0275-Add-PreExplodeEvents.patch rename to patches/server/0276-Add-PreExplodeEvents.patch diff --git a/patches/server/0276-Improve-output-of-plugins-command.patch b/patches/server/0277-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0276-Improve-output-of-plugins-command.patch rename to patches/server/0277-Improve-output-of-plugins-command.patch diff --git a/patches/server/0277-Add-mending-multiplier.patch b/patches/server/0278-Add-mending-multiplier.patch similarity index 96% rename from patches/server/0277-Add-mending-multiplier.patch rename to patches/server/0278-Add-mending-multiplier.patch index a5869e5ee..7e09aacf8 100644 --- a/patches/server/0277-Add-mending-multiplier.patch +++ b/patches/server/0278-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index ce608784e0e35b67dde377436aaf42c956ce0644..f5debc8ddc496cd3e2d8b253511ee5cc public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5dd73270a3fe702a660f3689f09d2d08bf9f322f..60159dbc735621db46cc0b8969b8a627fa7a4e4b 100644 +index 3ad00e226f40685bc68fdb16712876b37a98f5d9..ea64ee3480b12e1c711e55705a2b792c0f473f32 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0278-Make-GUI-Great-Again.patch b/patches/server/0279-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0278-Make-GUI-Great-Again.patch rename to patches/server/0279-Make-GUI-Great-Again.patch diff --git a/patches/server/0279-Stored-Bee-API.patch b/patches/server/0280-Stored-Bee-API.patch similarity index 100% rename from patches/server/0279-Stored-Bee-API.patch rename to patches/server/0280-Stored-Bee-API.patch diff --git a/patches/server/0280-Shears-can-defuse-TNT.patch b/patches/server/0281-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0280-Shears-can-defuse-TNT.patch rename to patches/server/0281-Shears-can-defuse-TNT.patch index b31b31103..cf09e3ed9 100644 --- a/patches/server/0280-Shears-can-defuse-TNT.patch +++ b/patches/server/0281-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60159dbc735621db46cc0b8969b8a627fa7a4e4b..33bdb5aab5080d83bc4bdabcb5c2c1de8678238d 100644 +index ea64ee3480b12e1c711e55705a2b792c0f473f32..71d22e8966e24120dc00f79810251341fd243fc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3234,4 +3234,11 @@ public class PurpurWorldConfig { +@@ -3267,4 +3267,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0281-Explorer-Map-API.patch b/patches/server/0282-Explorer-Map-API.patch similarity index 100% rename from patches/server/0281-Explorer-Map-API.patch rename to patches/server/0282-Explorer-Map-API.patch diff --git a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch index 3b4779b56..cb5cab1f7 100644 --- a/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 33bdb5aab5080d83bc4bdabcb5c2c1de8678238d..691eba61c293384e1fb1aa6f0d4fb52034abc0e4 100644 +index 71d22e8966e24120dc00f79810251341fd243fc1..bb965615c778f38e0de6853b4271e39af436e384 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2049,6 +2049,7 @@ public class PurpurWorldConfig { +@@ -2082,6 +2082,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 33bdb5aab5080d83bc4bdabcb5c2c1de8678238d..691eba61c293384e1fb1aa6f0d4fb520 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2062,6 +2063,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2096,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index be3cf613f..3149bf48c 100644 --- a/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index e25af9af8f87e6762716749c367658bf6bda9e34..b7d5c0b0e3741fcf04c4bac21a82fc41 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 691eba61c293384e1fb1aa6f0d4fb52034abc0e4..2b1d637e2e6641de2b65a23b05d28527c10cb517 100644 +index bb965615c778f38e0de6853b4271e39af436e384..dc85580bd895babb6e10cefe1ab9eee3d3178959 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2218,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index 691eba61c293384e1fb1aa6f0d4fb52034abc0e4..2b1d637e2e6641de2b65a23b05d28527 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2233,6 +2234,7 @@ public class PurpurWorldConfig { +@@ -2266,6 +2267,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0285-place-end-crystal-on-any-block.patch b/patches/server/0286-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0285-place-end-crystal-on-any-block.patch rename to patches/server/0286-place-end-crystal-on-any-block.patch index 368d3d326..4f365c3c2 100644 --- a/patches/server/0285-place-end-crystal-on-any-block.patch +++ b/patches/server/0286-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b1d637e2e6641de2b65a23b05d28527c10cb517..a90decaa9ebe5aecadddb58c68e84a1d2e132235 100644 +index dc85580bd895babb6e10cefe1ab9eee3d3178959..5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -935,6 +935,7 @@ public class PurpurWorldConfig { +@@ -968,6 +968,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 2b1d637e2e6641de2b65a23b05d28527c10cb517..a90decaa9ebe5aecadddb58c68e84a1d private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -963,6 +964,7 @@ public class PurpurWorldConfig { +@@ -996,6 +997,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 96% rename from patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch index be4f11907..107ab9938 100644 --- a/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,7 +18,7 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a90decaa9ebe5aecadddb58c68e84a1d2e132235..083c92fa9e0af35238e919851cf5f0778573e2f5 100644 +index 5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8..7ce389e6100b4e8a14ca712f4815350e317dc3f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -144,6 +144,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-register-minecraft-debug-commands.patch b/patches/server/0288-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0287-register-minecraft-debug-commands.patch rename to patches/server/0288-register-minecraft-debug-commands.patch diff --git a/patches/server/0288-Configurable-villager-search-radius.patch b/patches/server/0289-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0288-Configurable-villager-search-radius.patch rename to patches/server/0289-Configurable-villager-search-radius.patch index ed87a8de6..3d8da0513 100644 --- a/patches/server/0288-Configurable-villager-search-radius.patch +++ b/patches/server/0289-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 083c92fa9e0af35238e919851cf5f0778573e2f5..389ba542e27e35f9f508555797d9f1f98dc4bed1 100644 +index 7ce389e6100b4e8a14ca712f4815350e317dc3f0..8704cc621937beda692bf484cf5ef11b2d7d7e4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2848,6 +2848,8 @@ public class PurpurWorldConfig { +@@ -2881,6 +2881,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 083c92fa9e0af35238e919851cf5f0778573e2f5..389ba542e27e35f9f508555797d9f1f9 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2884,6 +2886,8 @@ public class PurpurWorldConfig { +@@ -2917,6 +2919,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); From 7a08bb73c920940eb27f637ff752c17c2b7a2439 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 15:49:34 -0700 Subject: [PATCH 122/148] Update to 1.20.6 Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8f7ac62 Validate manifest provided mapping namespace (#10612) PaperMC/Paper@fbe3c00 [ci skip] update projects workflow configuration PaperMC/Paper@44ee092 1.20.6 (#10623) PaperMC/Paper@812ccb9 fix spawnChunkRadius gamerule resetting --- README.md | 6 +++--- gradle.properties | 6 +++--- .../0065-Implement-bed-explosion-options.patch | 14 +++++++------- ...mplement-respawn-anchor-explosion-options.patch | 8 ++++---- patches/server/0127-Dont-run-with-scissors.patch | 8 ++++---- patches/server/0239-Stonecutter-damage.patch | 10 +++++----- .../0243-Enchantment-Table-Persists-Lapis.patch | 4 ++-- patches/server/0251-Remove-Mojang-Profiler.patch | 4 ++-- ...-Configurable-block-fall-damage-modifiers.patch | 4 ++-- 9 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 10bd274f5..74d937f47 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## Purpur [![MIT License](https://img.shields.io/github/license/PurpurMC/Purpur?&logo=github)](LICENSE) -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.5&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.6&event=push&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/PurpurMC/Purpur?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx%2BLVQcXZ10dXAVB8APE0clJ0UVK%2FF9SaBHjwXE%2F3t173L0D%2FPUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5%2Fi6h4%2BvdzGe5X3uz9Gj5EwG%2BATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6%2FcS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q%2BUqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId%2FwPGL5JLJVQIjxwIqUCE5fvA%2F%2BN2tmZ8Yd5NCcaDzxbY%2FhoGuXaBRs%2B3vY9tunACBZ%2BBKa%2FkrdWD6k%2FRaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0%2Ffk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO%2Ft3zPN%2Fn4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMVKAA5pS6%2BAAABlElEQVQ4y82PP2gVQRDGf7N3t%2Bvdixpi0N5OELFKJ1iohBciKlgYJLX6YkBbC0sVooVFBAvBPw%2BFZzrJs7DR2iYHRhBsxNI8VLwUx92MRXJGxKCp9AfL7DfDfPutFO3z5wy5DuRlWU2OvLj7hduLYXh0ZSEkOh4SjUKiBK%2BEZP34Gu%2FtbebLE86Qa8BO4FDwyWmAbPjzMWACiNgEMdun6macwfJ6z2qxZYBI6ndAxR%2BRN%2FL1ZGeXlDqFkm%2Fv33nZjHZ0u2OZrw%2F7pBYf16Re8UEJ8VpNE33fP3BxgX%2BOFOOdtjmuGpoPtT51pNcrMZORx4%2FmslQnslAlWahItymZrz%2Bmqc4%2B2z%2B71BjE5uwesEeQsaLY%2FQp42LrfPUqwy2DNO03ZK9hN4Ehj4IDBjzjKCoC5aMDG9q%2BhBz%2BrWCN3KqptBtG89Xx%2BEWB1%2Bszr8OTBFMgkSLKWQAA%2BVCU3%2BK%2BQb%2B0LB4FLGHmrP39LNv3773Ei9IBphLnVduf4VhM4M9JGqGzc%2F5bYnDsrqlcQloaK0adbNfgOUn6NRlZZ46YAAAAASUVORK5CYII%3D)](https://www.codefactor.io/repository/github/PurpurMC/Purpur) [![Join us on Discord](https://discord.com/api/guilds/685683385313919172/widget.png?style=shield)](https://purpurmc.org/discord) @@ -27,7 +27,7 @@ Join us on Discord: ## Downloads Downloads can be obtained from the [downloads page](https://purpurmc.org/downloads/) or the [downloads API](https://api.purpurmc.org). -[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.5&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.20.6&event=push&label=Downloads&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9bxSIVh1YQcYhQnSyIiuimVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE0clJ0UVK/F9SaBHjwXE/3t173L0D/PUyU82OMUDVLCOViAuZ7KrQ9YogwujDEGYkZupzopiE5/i6h4+vdzGe5X3uz9Gj5EwG+ATiWaYbFvEG8dSmpXPeJ46woqQQnxOPGnRB4keuyy6/cS447OeZESOdmieOEAuFNpbbmBUNlXiSOKqoGuX7My4rnLc4q+Uqa96TvzCU01aWuU5zEAksYgkiBMioooQyLMRo1UgxkaL9uId/wPGL5JLJVQIjxwIqUCE5fvA/+N2tmZ8Yd5NCcaDzxbY/hoGuXaBRs+3vY9tunACBZ+BKa/krdWD6k/RaS4seAb3bwMV1S5P3gMsdoP9JlwzJkQI0/fk88H5G35QFwrdA95rbW3Mfpw9AmrpK3gAHh8BIgbLXPd4dbO/t3zPN/n4Ax9dyyerighsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCBMWBjFhOpnxAAACyklEQVQ4y32TXWgdZRCGn8k5Z3e/bzcJRFuoDRqIIPGniaSl1qgXKYhiLUgleFESW1qQ4g94oVKQJmga0ILRBuvfheJFIbY3SmzRFsWgQrTQFlRoKSVXgcMxJiS7++1ukvHiNKGU6FzNDO8MMw8zwn9Yz5c6anKeChxiMk599aq8sZ5Obk3sGNd7G5aZCHJ+Oj8gAwD9I3rSJmyvzLHz+HG5frO+vOaNa3NXiUkKQj9hQ1jQgWrlyCCV6gIdtmBjoJwbPqgL+R08PDQkCUADwD0TerqzxFTJY++vz0l7c0q/F7P5+aNUqyvM2CU2RAV7hsek3XPs3/QHF7/YrSfrDVQrxrErdESNNTYByAp3NmWUTYaGGSuho+QltAGYRdqilChMeKbO4Ijang5+CVJmbcr20PG3n9NiY6ZOvCW9ACMHdDLIeDDIqTWmtAQJV6OMyhOTsqWBQQo/hvP7pFcWeDxwtAQxGqbEq3isI7EOjRy3NyuPPHtOur0UXWMQZXgAX78uP3sJpTBmyHfsGDmotdF+rQWObq/gnSCm9PQ3chnA3qgRgL5jmjXlTM/n7Ny8yJXRY2IA3tur0yaHF8blLoAzj2kaNNBpZvk2iGntuiZBHWLOtXJC3hbzV5SxtDq6yZmzCXOrsRezHNa4YBzlKGN6bQXryD96W+4PU14zGbw/oLMf79EPbAI2g7M9+smP3fqPKVAT81LnFWnzM1y9gYC9gWtwTD6MEsq+Y8Lm7DMZ7cZxt5/T5xd8Fy5SfuC6fA4QZjdd8eEX9eLwAZ1StHKiT1MARStnHtWZH7bpjKIVgKutmipq50O94Mr6+9oKR8ekyy7x5qd9/NmYslynK4WfUjWOqiAFgElZmY+41BTzcrAkW9d9ptO9etgU7I8S3vVyDtkY/JzPwoxXzCJjt6Uy+r/fuGq/3affezkPRSniJ0y2zsqT6+n+BfRHKWgwbKNIAAAAAElFTkSuQmCC)](https://purpurmc.org/downloads/) Downloads API endpoints: * List versions of Minecraft with builds available: @@ -67,7 +67,7 @@ Maven org.purpurmc.purpur purpur-api - 1.20.5-R0.1-SNAPSHOT + 1.20.6-R0.1-SNAPSHOT provided ``` diff --git a/gradle.properties b/gradle.properties index c854ceea7..8c05d797b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.20.5-R0.1-SNAPSHOT +version = 1.20.6-R0.1-SNAPSHOT -mcVersion = 1.20.5 -paperCommit = f9397e108e02ae558493d7bb63b0264af2cc7693 +mcVersion = 1.20.6 +paperCommit = 812ccb96a480cc6518ba5ddde11e12c22691c061 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0065-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch index 2ff47c399..94fa8a84f 100644 --- a/patches/server/0065-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -5,24 +5,24 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index e9f8949267208b93f0c56c36ada38274ed4280f5..9084e11df829fb24489773d15435a3a3570135fe 100644 +index f726c3839ab93cc81fee26bfeb821bead3533b5e..2590eee0ca6a35fad3351dd6112aa596107fbe8f 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -105,7 +105,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = pos.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // Paper - add exploded state -+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Paper - add exploded state // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); ++ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur return InteractionResult.SUCCESS; } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first -@@ -158,7 +158,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -156,7 +156,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = blockposition.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // Paper - add exploded state -+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Paper - add exploded state // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur return InteractionResult.SUCCESS; } } diff --git a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch index 1cf02a3c0..260009f57 100644 --- a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 4e2fad1f234356ada6f29445038e43b9a8406cf9..6f3f53940431afc7a22b262d9d34bc0abf2f0e7a 100644 +index be85535767bc79875c38da78a209d33d4be87c8a..2b840a5516073da46207552688428d86fc99975b 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -150,7 +150,7 @@ public class RespawnAnchorBlock extends Block { +@@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 vec3d = explodedPos.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // Paper - add exploded state -+ if (world.purpurConfig.respawnAnchorExplode)world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect);// Paper - add exploded state // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (world.purpurConfig.respawnAnchorExplode)world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect);// CraftBukkit - add state // Purpur } public static boolean canSetSpawn(Level world) { diff --git a/patches/server/0127-Dont-run-with-scissors.patch b/patches/server/0127-Dont-run-with-scissors.patch index 6df59668d..f47345e01 100644 --- a/patches/server/0127-Dont-run-with-scissors.patch +++ b/patches/server/0127-Dont-run-with-scissors.patch @@ -55,10 +55,10 @@ index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..a375d40ec6365ba8704ba3ece22dd5b2 } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 43b9a7e8ed9043c4d3f8295258a27209ddb4474b..9c18134cb5474a7f3be2337036c7af253ec0b21e 100644 +index ff1df6360cb4d9da8717687344bdea2a44b6fc2a..894668c96ac36e737910a25cf89651236246200c 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -28,6 +28,7 @@ public class DamageSource { +@@ -29,6 +29,7 @@ public class DamageSource { private boolean withSweep = false; private boolean melting = false; private boolean poison = false; @@ -66,7 +66,7 @@ index 43b9a7e8ed9043c4d3f8295258a27209ddb4474b..9c18134cb5474a7f3be2337036c7af25 @Nullable private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API -@@ -58,6 +59,17 @@ public class DamageSource { +@@ -59,6 +60,17 @@ public class DamageSource { return this.poison; } @@ -93,7 +93,7 @@ index 43b9a7e8ed9043c4d3f8295258a27209ddb4474b..9c18134cb5474a7f3be2337036c7af25 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index 8ba60de95845f4d56f299c5f1b2b5163461ba38d..b3d7790fa3e873f2e9b8fa4e4e749ef9c06973b9 100644 +index 349d1683458ec5d641c9823aa7a68dec8820a664..32c0a2df609acc1ecdd5a0a98a997b2f33525621 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -44,11 +44,13 @@ public class DamageSources { diff --git a/patches/server/0239-Stonecutter-damage.patch b/patches/server/0239-Stonecutter-damage.patch index 3489e4090..121a672c9 100644 --- a/patches/server/0239-Stonecutter-damage.patch +++ b/patches/server/0239-Stonecutter-damage.patch @@ -18,10 +18,10 @@ index a375d40ec6365ba8704ba3ece22dd5b2de9857b5..357a79d72a2de02a019595e457fe432b // Purpur end return damageSource.getLocalizedDeathMessage(this.mob); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 9c18134cb5474a7f3be2337036c7af253ec0b21e..b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a 100644 +index 894668c96ac36e737910a25cf89651236246200c..812091bf6efc067b21b9723b8241360d4b4c79e7 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -29,6 +29,7 @@ public class DamageSource { +@@ -30,6 +30,7 @@ public class DamageSource { private boolean melting = false; private boolean poison = false; private boolean scissors = false; // Purpur @@ -29,7 +29,7 @@ index 9c18134cb5474a7f3be2337036c7af253ec0b21e..b6881d7f02ad4e9e45e947eaec54f0c6 @Nullable private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API -@@ -68,6 +69,15 @@ public class DamageSource { +@@ -69,6 +70,15 @@ public class DamageSource { public boolean isScissors() { return this.scissors; } @@ -54,7 +54,7 @@ index 9c18134cb5474a7f3be2337036c7af253ec0b21e..b6881d7f02ad4e9e45e947eaec54f0c6 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index b3d7790fa3e873f2e9b8fa4e4e749ef9c06973b9..e8c0cec909deea5cd9a031856d9d249f85d5e5f7 100644 +index 32c0a2df609acc1ecdd5a0a98a997b2f33525621..f0568c3d731afaf610ac2f45db53148d38338cdf 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -45,12 +45,14 @@ public class DamageSources { @@ -115,7 +115,7 @@ index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138facb06f76f9 100644 +index a49193a023bbd9b65bcd3652dc9c241720500755..6fed586c9a778f7a57e1b4ca2e6f2dbc15c8769d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1130,7 +1130,7 @@ public class CraftEventFactory { diff --git a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch index 2c69fe2b5..834e303f8 100644 --- a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -94,7 +94,7 @@ index 151e856dda3aa262c846ce8793650ee582bfb749..be0ed8a14e5726d5fcea1864302b18fb + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb9280831c0d0fb 100644 +index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380ffff95660 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java @@ -28,6 +28,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable @@ -115,7 +115,7 @@ index c3503eaec5c5ece6e27a52fb703d06ec7c767383..ed7b41604fb201c346c362803bb92808 @Override @@ -47,6 +49,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable if (nbt.contains("CustomName", 8)) { - this.name = io.papermc.paper.util.MCUtil.getBaseComponentFromNbt("CustomName", nbt, registryLookup); // Paper - Catch ParseException + this.name = parseCustomNameSafe(nbt.getString("CustomName"), registryLookup); } + this.lapis = nbt.getInt("Purpur.Lapis"); // Purpur } diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch index 33768f658..48bd9762b 100644 --- a/patches/server/0251-Remove-Mojang-Profiler.patch +++ b/patches/server/0251-Remove-Mojang-Profiler.patch @@ -1812,7 +1812,7 @@ index dcf580d852ede8ea01f5d91944a224ec6eca73e4..4be218129188c1be8736940170a861ad this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index feb470e8036ecfcd838cff05a0dc1d43cc96ae3c..6b6340ae8ca3f81f08f9038b63ebc419e003cf6b 100644 +index dc88014c4d9f172cc54e5d77b488128f9ffbc73d..6379b3b8e633d1a16532b4664e53fa5afa616ab6 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -681,7 +681,7 @@ public class Explosion { @@ -1824,7 +1824,7 @@ index feb470e8036ecfcd838cff05a0dc1d43cc96ae3c..6b6340ae8ca3f81f08f9038b63ebc419 List> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); -@@ -757,7 +757,7 @@ public class Explosion { +@@ -759,7 +759,7 @@ public class Explosion { Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } diff --git a/patches/server/0261-Configurable-block-fall-damage-modifiers.patch b/patches/server/0261-Configurable-block-fall-damage-modifiers.patch index 6e17a0724..de16399e5 100644 --- a/patches/server/0261-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0261-Configurable-block-fall-damage-modifiers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 9084e11df829fb24489773d15435a3a3570135fe..fe37651b9d5a1f786944c39de0c8a438951b4303 100644 +index 2590eee0ca6a35fad3351dd6112aa596107fbe8f..a4bae9631acfc363d22b89fb76965183d9dc79f1 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -182,7 +182,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -180,7 +180,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { From 69403e54d0861477dd60bbd9faf21b34b31cf876 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 29 Apr 2024 19:21:50 -0700 Subject: [PATCH 123/148] make it compile --- patches/api/0043-Add-PreExplodeEvents.patch | 9 ++++----- patches/server/0276-Add-PreExplodeEvents.patch | 8 +++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/patches/api/0043-Add-PreExplodeEvents.patch b/patches/api/0043-Add-PreExplodeEvents.patch index 5ba7e435d..db26aac79 100644 --- a/patches/api/0043-Add-PreExplodeEvents.patch +++ b/patches/api/0043-Add-PreExplodeEvents.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java b/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..32602b398ede24a35ed8a996faa2b23455615a7b +index 0000000000000000000000000000000000000000..8ea97ddceedb7c719e8a50a0dd8f3f0919ca1647 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java -@@ -0,0 +1,54 @@ +@@ -0,0 +1,53 @@ +package org.purpurmc.purpur.event; + +import org.bukkit.block.Block; @@ -18,7 +18,6 @@ index 0000000000000000000000000000000000000000..32602b398ede24a35ed8a996faa2b234 +import org.bukkit.event.HandlerList; +import org.bukkit.event.block.BlockExplodeEvent; +import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; +import java.util.Collections; + +/** @@ -29,8 +28,8 @@ index 0000000000000000000000000000000000000000..32602b398ede24a35ed8a996faa2b234 + private boolean cancelled; + private final float yield; + -+ public PreBlockExplodeEvent(@NotNull final Block what, final float yield, @Nullable BlockState explodedBlockState) { -+ super(what, Collections.emptyList(), yield, explodedBlockState); ++ public PreBlockExplodeEvent(@NotNull final Block what, final float yield, @NotNull BlockState explodedBlockState) { ++ super(what, explodedBlockState, Collections.emptyList(), yield); + this.yield = yield; + this.cancelled = false; + } diff --git a/patches/server/0276-Add-PreExplodeEvents.patch b/patches/server/0276-Add-PreExplodeEvents.patch index 4fc6f26f6..1b502ebb6 100644 --- a/patches/server/0276-Add-PreExplodeEvents.patch +++ b/patches/server/0276-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index ed31528ddfec06e723827a505daeca5938dba865..58aa5059c484c9e8acf429a3ae4f07d83594f991 100644 +index 69d8ff6a97335b6fe4b20a8229a77f2591b0f050..f5e84bf8817e2d53557e0909d8c9e0e0e8206a16 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -430,6 +430,23 @@ public class Explosion { +@@ -430,6 +430,25 @@ public class Explosion { return; } // CraftBukkit end @@ -22,7 +22,9 @@ index ed31528ddfec06e723827a505daeca5938dba865..58aa5059c484c9e8acf429a3ae4f07d8 + } + }else { + Location location = new Location(this.level.getWorld(), this.x, this.y, this.z); -+ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, this.damageSource.explodedBlockState).callEvent()) { ++ org.bukkit.block.Block block = location.getBlock(); ++ org.bukkit.block.BlockState blockState = (this.damageSource.blockState != null) ? this.damageSource.blockState : block.getState(); ++ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState).callEvent()) { + this.wasCanceled = true; + return; + } From f2ab96477484d67380887d78e514cd34b9338982 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 03:31:19 -0700 Subject: [PATCH 124/148] make silk touch spawner patch work properly --- patches/server/0017-Silk-touch-spawners.patch | 56 +++++++++++-------- ...e-shulker-box-items-from-dropping-co.patch | 12 +--- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/patches/server/0017-Silk-touch-spawners.patch b/patches/server/0017-Silk-touch-spawners.patch index a00b7e056..d1ee5a1b5 100644 --- a/patches/server/0017-Silk-touch-spawners.patch +++ b/patches/server/0017-Silk-touch-spawners.patch @@ -4,6 +4,18 @@ Date: Thu, 9 May 2019 14:27:37 -0500 Subject: [PATCH] Silk touch spawners +diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java +index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..3253361d91e2a2e68d354eaf3dd3e3cd486e191d 100644 +--- a/src/main/java/net/minecraft/world/item/BlockItem.java ++++ b/src/main/java/net/minecraft/world/item/BlockItem.java +@@ -219,6 +219,7 @@ public class BlockItem extends Item { + + if (tileentity != null) { + if (!world.isClientSide && tileentity.onlyOpCanSetNbt() && (player == null || !(player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place"))))) { // Spigot - add permission ++ if (!(!world.isClientSide && world.purpurConfig.silkTouchEnabled && tileentity instanceof net.minecraft.world.level.block.entity.SpawnerBlockEntity && player.getBukkitEntity().hasPermission("purpur.drop.spawners"))) + return false; + } + diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9da39596a 100644 --- a/src/main/java/net/minecraft/world/item/Items.java @@ -18,10 +30,10 @@ index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9 public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..bc3c0b7c06d0ed5c4f54cf08c37f7331bb0cc00d 100644 +index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..66c17bdfecdfbcfb2d853e561432dd51a8f7ed46 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -@@ -42,6 +42,55 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -42,6 +42,57 @@ public class SpawnerBlock extends BaseEntityBlock { return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick); } @@ -29,14 +41,17 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..bc3c0b7c06d0ed5c4f54cf08c37f7331 + @Override + public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack, boolean includeDrops, boolean dropExp) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { -+ java.util.Optional> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); -+ -+ net.minecraft.world.entity.EntityType entityType = type.orElse(null); + ItemStack item = new ItemStack(Blocks.SPAWNER.asItem()); -+ if (entityType != null) { -+ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType.getDescription()); -+ // blockEntityTag.remove("Delay"); // remove this tag to allow stacking duplicate spawners -+ // tag.put("BlockEntityTag", blockEntityTag); ++ ++ net.minecraft.world.level.SpawnData nextSpawnData = blockEntity instanceof SpawnerBlockEntity spawnerBlock ? spawnerBlock.getSpawner().nextSpawnData : null; ++ java.util.Optional> type = java.util.Optional.empty(); ++ if (nextSpawnData != null) { ++ type = net.minecraft.world.entity.EntityType.by(nextSpawnData.getEntityToSpawn()); ++ net.minecraft.world.level.SpawnData.CODEC.encodeStart(net.minecraft.nbt.NbtOps.INSTANCE, nextSpawnData).result().ifPresent(tag -> item.set(net.minecraft.core.component.DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY.update(compoundTag -> compoundTag.put("Purpur.SpawnData", tag)))); ++ } ++ ++ if (type.isPresent()) { ++ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(type.get().getDescription()); + + String name = level.purpurConfig.silkTouchSpawnerName; + if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { @@ -59,7 +74,6 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..bc3c0b7c06d0ed5c4f54cf08c37f7331 + loreComponentList.add(io.papermc.paper.adventure.PaperAdventure.asVanilla(lineComponent)); + } + -+ + item.set(net.minecraft.core.component.DataComponents.LORE, new net.minecraft.world.item.component.ItemLore(loreComponentList, loreComponentList)); + } + item.set(net.minecraft.core.component.DataComponents.HIDE_ADDITIONAL_TOOLTIP, net.minecraft.util.Unit.INSTANCE); @@ -77,7 +91,7 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..bc3c0b7c06d0ed5c4f54cf08c37f7331 @Override protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); -@@ -50,6 +99,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -50,6 +101,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack, boolean flag) { @@ -130,10 +144,10 @@ index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..d4bca5b5f3d10c3a04befd8c365f4643 public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java new file mode 100644 -index 0000000000000000000000000000000000000000..1a929cd455e361f4d544de26b5392b62660b31db +index 0000000000000000000000000000000000000000..ed50cb2115401c9039df4136caf5a087a5f5991c --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java -@@ -0,0 +1,42 @@ +@@ -0,0 +1,40 @@ +package org.purpurmc.purpur.item; + +import net.minecraft.core.BlockPos; @@ -160,16 +174,14 @@ index 0000000000000000000000000000000000000000..1a929cd455e361f4d544de26b5392b62 + protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) { + boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state); + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) { -+ BlockEntity spawner = level.getBlockEntity(pos); -+ if (spawner instanceof SpawnerBlockEntity && stack.has(DataComponents.CUSTOM_DATA)) { -+ CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); ++ BlockEntity blockEntity = level.getBlockEntity(pos); ++ if (blockEntity instanceof SpawnerBlockEntity spawner) { ++ CompoundTag customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag(); + if (customData.contains("Purpur.mob_type")) { -+ CompoundTag unsafe = customData.getUnsafe(); -+ -+ EntityType.byString(unsafe.getString("Purpur.mob_type")).ifPresent(type -> -+ ((SpawnerBlockEntity) spawner).getSpawner().setEntityId(type, level, level.random, pos)); -+ } else if (stack.has(DataComponents.BLOCK_ENTITY_DATA)) { -+ spawner.applyComponentsFromItemStack(stack); ++ EntityType.byString(customData.getString("Purpur.mob_type")).ifPresent(type -> spawner.getSpawner().setEntityId(type, level, level.random, pos)); ++ } else if (customData.contains("Purpur.SpawnData")) { ++ net.minecraft.world.level.SpawnData.CODEC.parse(net.minecraft.nbt.NbtOps.INSTANCE, customData.getCompound("Purpur.SpawnData")).result() ++ .ifPresent(spawnData -> spawner.getSpawner().nextSpawnData = spawnData); + } + } + } diff --git a/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch index 4f3d628a3..d14d88490 100644 --- a/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -6,18 +6,10 @@ Subject: [PATCH] option to disable shulker box items from dropping contents diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..167a8f6fb2354151d5e16aaa6f268f8a536c0a55 100644 +index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c80879cd572a 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -28,6 +28,7 @@ import net.minecraft.world.level.block.ShulkerBoxBlock; - import net.minecraft.world.level.block.SoundType; - import net.minecraft.world.level.block.entity.BlockEntity; - import net.minecraft.world.level.block.entity.BlockEntityType; -+import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity; - import net.minecraft.world.level.block.state.BlockState; - import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.phys.shapes.CollisionContext; -@@ -259,6 +260,7 @@ public class BlockItem extends Item { +@@ -260,6 +260,7 @@ public class BlockItem extends Item { ItemContainerContents itemcontainercontents = (ItemContainerContents) entity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemcontainercontents != null) { From 2e2ceab0367ec08e83ed6e0f2fe3f2020b9d642b Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 03:35:20 -0700 Subject: [PATCH 125/148] avoid using CustomData#getUnsafe() --- patches/server/0280-Stored-Bee-API.patch | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/patches/server/0280-Stored-Bee-API.patch b/patches/server/0280-Stored-Bee-API.patch index 8c167d448..525c836e8 100644 --- a/patches/server/0280-Stored-Bee-API.patch +++ b/patches/server/0280-Stored-Bee-API.patch @@ -141,16 +141,18 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..3beb26ad2ef0fded49a8da8c5dec64f9 } diff --git a/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java new file mode 100644 -index 0000000000000000000000000000000000000000..25d718489a1a589d9754b8a02340cec819eec6d8 +index 0000000000000000000000000000000000000000..7608bf0981fa0d37031e51e57e4086cb5ec4c88b --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java -@@ -0,0 +1,103 @@ +@@ -0,0 +1,106 @@ +package org.purpurmc.purpur.entity; + +import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.text.Component; ++import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.server.MinecraftServer; ++import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +import org.bukkit.block.EntityBlockStorage; +import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; @@ -176,12 +178,13 @@ index 0000000000000000000000000000000000000000..25d718489a1a589d9754b8a02340cec8 + this.handle = data; + this.blockStorage = blockStorage; + -+ this.customName = handle.occupant.entityData().contains("CustomName") -+ ? PaperAdventure.asAdventure(net.minecraft.network.chat.Component.Serializer.fromJson(handle.occupant.entityData().getUnsafe().getString("CustomName"), MinecraftServer.getDefaultRegistryAccess())) ++ CompoundTag customData = handle.occupant.entityData().copyTag(); ++ this.customName = customData.contains("CustomName") ++ ? PaperAdventure.asAdventure(net.minecraft.network.chat.Component.Serializer.fromJson(customData.getString("CustomName"), MinecraftServer.getDefaultRegistryAccess())) + : null; + -+ if(handle.occupant.entityData().getUnsafe().contains("BukkitValues", Tag.TAG_COMPOUND)) { -+ this.persistentDataContainer.putAll(handle.occupant.entityData().getUnsafe().getCompound("BukkitValues")); ++ if(customData.contains("BukkitValues", Tag.TAG_COMPOUND)) { ++ this.persistentDataContainer.putAll(customData.getCompound("BukkitValues")); + } + } + From e41e127ef9398f5d1824158626c42cce520459fd Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 04:16:25 -0700 Subject: [PATCH 126/148] re-add grindstone options --- .../0210-Config-for-grindstones.patch} | 87 ++++++++++++++++--- ....patch => 0211-UPnP-Port-Forwarding.patch} | 4 +- ...Campfire-option-for-lit-when-placed.patch} | 0 ...tinguish-fire-blocks-with-snowballs.patch} | 0 ...on-to-disable-zombie-villagers-cure.patch} | 0 ...-and-twisting-vines-configurable-ma.patch} | 18 ++-- ...=> 0216-Mobs-always-drop-experience.patch} | 0 ...ne-API.patch => 0217-Grindstone-API.patch} | 4 +- ...e-to-replant-crops-and-nether-warts.patch} | 0 ...urtle-eggs-random-tick-crack-chance.patch} | 0 ...=> 0220-Mob-head-visibility-percent.patch} | 0 ...able-valid-characters-for-usernames.patch} | 4 +- ...Shears-can-have-looting-enchantment.patch} | 6 +- ...Stop-bees-from-dying-after-stinging.patch} | 0 ...ounts-in-beehives-to-Purpur-clients.patch} | 4 +- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 2 +- ...ng.patch => 0227-Allow-void-trading.patch} | 0 ...h => 0228-Configurable-phantom-size.patch} | 0 ....patch => 0229-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 0 ... => 0231-Lobotomize-stuck-villagers.patch} | 0 ...ion-for-villager-display-trade-item.patch} | 0 ...wner-not-spawning-water-animals-cor.patch} | 0 ...ig-for-mob-last-hurt-by-player-time.patch} | 0 ...=> 0235-Anvil-repair-damage-options.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 6 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 0 ...ge.patch => 0240-Stonecutter-damage.patch} | 2 +- ...le-damage-settings-for-magma-blocks.patch} | 0 ...242-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0243-Skeletons-eat-wither-roses.patch} | 0 ...44-Enchantment-Table-Persists-Lapis.patch} | 0 ...ofiler.patch => 0245-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 4 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0248-Config-to-not-let-coral-die.patch} | 0 ...ch => 0249-Add-local-difficulty-api.patch} | 0 ...250-Add-toggle-for-RNG-manipulation.patch} | 0 ...imings.patch => 0251-Remove-Timings.patch} | 0 ...atch => 0252-Remove-Mojang-Profiler.patch} | 0 ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0254-Add-Bee-API.patch} | 0 ...-API.patch => 0255-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 0 ...57-Add-skeleton-bow-accuracy-option.patch} | 0 ....patch => 0258-Add-death-screen-API.patch} | 0 ...9-Implement-ram-and-rambar-commands.patch} | 2 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 4 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 4 +- ...uage-API.patch => 0263-Language-API.patch} | 0 ... 0264-Milk-Keeps-Beneficial-Effects.patch} | 0 ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 4 +- ...ow-creeper-to-encircle-target-when-.patch} | 0 ...API.patch => 0268-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 0 ...t.patch => 0270-Added-got-ram-event.patch} | 0 ... 0271-Log-skipped-entity-s-position.patch} | 0 ....patch => 0272-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 4 +- ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0277-Add-PreExplodeEvents.patch} | 0 ...8-Improve-output-of-plugins-command.patch} | 0 ...atch => 0279-Add-mending-multiplier.patch} | 0 ....patch => 0280-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0281-Stored-Bee-API.patch} | 0 ...patch => 0282-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0283-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 6 +- ...0287-place-end-crystal-on-any-block.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...9-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 0 81 files changed, 123 insertions(+), 58 deletions(-) rename patches/{unapplied-server/0211-Config-for-grindstones.patch => server/0210-Config-for-grindstones.patch} (57%) rename patches/server/{0210-UPnP-Port-Forwarding.patch => 0211-UPnP-Port-Forwarding.patch} (96%) rename patches/server/{0211-Campfire-option-for-lit-when-placed.patch => 0212-Campfire-option-for-lit-when-placed.patch} (100%) rename patches/server/{0212-options-to-extinguish-fire-blocks-with-snowballs.patch => 0213-options-to-extinguish-fire-blocks-with-snowballs.patch} (100%) rename patches/server/{0213-Add-option-to-disable-zombie-villagers-cure.patch => 0214-Add-option-to-disable-zombie-villagers-cure.patch} (100%) rename patches/server/{0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (93%) rename patches/server/{0215-Mobs-always-drop-experience.patch => 0216-Mobs-always-drop-experience.patch} (100%) rename patches/server/{0216-Grindstone-API.patch => 0217-Grindstone-API.patch} (92%) rename patches/server/{0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (100%) rename patches/server/{0218-Turtle-eggs-random-tick-crack-chance.patch => 0219-Turtle-eggs-random-tick-crack-chance.patch} (100%) rename patches/server/{0219-Mob-head-visibility-percent.patch => 0220-Mob-head-visibility-percent.patch} (100%) rename patches/server/{0220-Configurable-valid-characters-for-usernames.patch => 0221-Configurable-valid-characters-for-usernames.patch} (92%) rename patches/server/{0221-Shears-can-have-looting-enchantment.patch => 0222-Shears-can-have-looting-enchantment.patch} (98%) rename patches/server/{0222-Stop-bees-from-dying-after-stinging.patch => 0223-Stop-bees-from-dying-after-stinging.patch} (100%) rename patches/server/{0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0224-Configurable-farmland-trample-height.patch => 0225-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0225-Configurable-player-pickup-exp-delay.patch => 0226-Configurable-player-pickup-exp-delay.patch} (97%) rename patches/server/{0226-Allow-void-trading.patch => 0227-Allow-void-trading.patch} (100%) rename patches/server/{0227-Configurable-phantom-size.patch => 0228-Configurable-phantom-size.patch} (100%) rename patches/server/{0228-Max-joins-per-second.patch => 0229-Max-joins-per-second.patch} (94%) rename patches/server/{0229-Configurable-minimum-demand-for-trades.patch => 0230-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0230-Lobotomize-stuck-villagers.patch => 0231-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0231-Option-for-villager-display-trade-item.patch => 0232-Option-for-villager-display-trade-item.patch} (100%) rename patches/server/{0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (100%) rename patches/server/{0233-Config-for-mob-last-hurt-by-player-time.patch => 0234-Config-for-mob-last-hurt-by-player-time.patch} (100%) rename patches/server/{0234-Anvil-repair-damage-options.patch => 0235-Anvil-repair-damage-options.patch} (100%) rename patches/server/{0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0236-Add-toggle-for-enchant-level-clamping.patch => 0237-Add-toggle-for-enchant-level-clamping.patch} (96%) rename patches/server/{0237-Skip-junit-tests-for-purpur-commands.patch => 0238-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0238-Implement-configurable-search-radius-for-villagers-t.patch => 0239-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0239-Stonecutter-damage.patch => 0240-Stonecutter-damage.patch} (98%) rename patches/server/{0240-Configurable-damage-settings-for-magma-blocks.patch => 0241-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0241-Add-config-for-snow-on-blue-ice.patch => 0242-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0242-Skeletons-eat-wither-roses.patch => 0243-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0243-Enchantment-Table-Persists-Lapis.patch => 0244-Enchantment-Table-Persists-Lapis.patch} (100%) rename patches/server/{0244-Spark-Profiler.patch => 0245-Spark-Profiler.patch} (100%) rename patches/server/{0245-Option-to-disable-kick-for-out-of-order-chat.patch => 0246-Option-to-disable-kick-for-out-of-order-chat.patch} (92%) rename patches/server/{0246-Config-for-sculk-shrieker-can_summon-state.patch => 0247-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0247-Config-to-not-let-coral-die.patch => 0248-Config-to-not-let-coral-die.patch} (100%) rename patches/server/{0248-Add-local-difficulty-api.patch => 0249-Add-local-difficulty-api.patch} (100%) rename patches/server/{0249-Add-toggle-for-RNG-manipulation.patch => 0250-Add-toggle-for-RNG-manipulation.patch} (100%) rename patches/server/{0250-Remove-Timings.patch => 0251-Remove-Timings.patch} (100%) rename patches/server/{0251-Remove-Mojang-Profiler.patch => 0252-Remove-Mojang-Profiler.patch} (100%) rename patches/server/{0252-Add-more-logger-output-for-invalid-movement-kicks.patch => 0253-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0253-Add-Bee-API.patch => 0254-Add-Bee-API.patch} (100%) rename patches/server/{0254-Debug-Marker-API.patch => 0255-Debug-Marker-API.patch} (100%) rename patches/server/{0255-mob-spawning-option-to-ignore-creative-players.patch => 0256-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0256-Add-skeleton-bow-accuracy-option.patch => 0257-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0257-Add-death-screen-API.patch => 0258-Add-death-screen-API.patch} (100%) rename patches/server/{0258-Implement-ram-and-rambar-commands.patch => 0259-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (97%) rename patches/server/{0260-Configurable-block-blast-resistance.patch => 0261-Configurable-block-blast-resistance.patch} (94%) rename patches/server/{0261-Configurable-block-fall-damage-modifiers.patch => 0262-Configurable-block-fall-damage-modifiers.patch} (97%) rename patches/server/{0262-Language-API.patch => 0263-Language-API.patch} (100%) rename patches/server/{0263-Milk-Keeps-Beneficial-Effects.patch => 0264-Milk-Keeps-Beneficial-Effects.patch} (100%) rename patches/server/{0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0265-Add-log-suppression-for-LibraryLoader.patch => 0266-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/server/{0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (100%) rename patches/server/{0267-Fire-Immunity-API.patch => 0268-Fire-Immunity-API.patch} (100%) rename patches/server/{0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (100%) rename patches/server/{0269-Added-got-ram-event.patch => 0270-Added-got-ram-event.patch} (100%) rename patches/server/{0270-Log-skipped-entity-s-position.patch => 0271-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0271-End-Crystal-Cramming.patch => 0272-End-Crystal-Cramming.patch} (100%) rename patches/server/{0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0273-Add-attribute-clamping-and-armor-limit-config.patch => 0274-Add-attribute-clamping-and-armor-limit-config.patch} (95%) rename patches/server/{0274-Config-to-remove-explosion-radius-clamp.patch => 0275-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0275-bonemealable-sugarcane-cactus-and-netherwart.patch => 0276-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0276-Add-PreExplodeEvents.patch => 0277-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0277-Improve-output-of-plugins-command.patch => 0278-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0278-Add-mending-multiplier.patch => 0279-Add-mending-multiplier.patch} (100%) rename patches/server/{0279-Make-GUI-Great-Again.patch => 0280-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0280-Stored-Bee-API.patch => 0281-Stored-Bee-API.patch} (100%) rename patches/server/{0281-Shears-can-defuse-TNT.patch => 0282-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0282-Explorer-Map-API.patch => 0283-Explorer-Map-API.patch} (100%) rename patches/server/{0283-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0284-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0285-Add-option-for-always-showing-item-in-player-death-m.patch => 0286-Add-option-for-always-showing-item-in-player-death-m.patch} (92%) rename patches/server/{0286-place-end-crystal-on-any-block.patch => 0287-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0287-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0288-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0288-register-minecraft-debug-commands.patch => 0289-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0289-Configurable-villager-search-radius.patch => 0290-Configurable-villager-search-radius.patch} (100%) diff --git a/patches/unapplied-server/0211-Config-for-grindstones.patch b/patches/server/0210-Config-for-grindstones.patch similarity index 57% rename from patches/unapplied-server/0211-Config-for-grindstones.patch rename to patches/server/0210-Config-for-grindstones.patch index 79efc1f17..5b8243296 100644 --- a/patches/unapplied-server/0211-Config-for-grindstones.patch +++ b/patches/server/0210-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index db9444dda248260372d96ce239a590e88a4c1142..f7948de0180836f5bcf6818fe3a1362445a5befe 100644 +index db9444dda248260372d96ce239a590e88a4c1142..e9451ab9635b3040490a3cbbf0a2bdeb63fd3338 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -26,7 +26,70 @@ index db9444dda248260372d96ce239a590e88a4c1142..f7948de0180836f5bcf6818fe3a13624 itemenchantments_a.upgrade(enchantment, entry.getIntValue()); } } -@@ -240,7 +240,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -237,10 +237,70 @@ public class GrindstoneMenu extends AbstractContainerMenu { + }); + } + ++ // Purpur start ++ private java.util.List> GRINDSTONE_REMOVE_ATTRIBUTES_REMOVAL_LIST = java.util.List.of( ++ // DataComponents.MAX_STACK_SIZE, ++ // DataComponents.DAMAGE, ++ // DataComponents.BLOCK_STATE, ++ DataComponents.CUSTOM_DATA, ++ // DataComponents.MAX_DAMAGE, ++ // DataComponents.UNBREAKABLE, ++ DataComponents.CUSTOM_NAME, ++ // DataComponents.ITEM_NAME, ++ DataComponents.LORE, ++ // DataComponents.RARITY, ++ DataComponents.ENCHANTMENTS, ++ // DataComponents.CAN_PLACE_ON, ++ // DataComponents.CAN_BREAK, ++ DataComponents.ATTRIBUTE_MODIFIERS, ++ DataComponents.CUSTOM_MODEL_DATA, ++ // DataComponents.HIDE_ADDITIONAL_TOOLTIP, ++ // DataComponents.HIDE_TOOLTIP, ++ // DataComponents.REPAIR_COST, ++ // DataComponents.CREATIVE_SLOT_LOCK, ++ // DataComponents.ENCHANTMENT_GLINT_OVERRIDE, ++ // DataComponents.INTANGIBLE_PROJECTILE, ++ // DataComponents.FOOD, ++ // DataComponents.FIRE_RESISTANT, ++ // DataComponents.TOOL, ++ // DataComponents.STORED_ENCHANTMENTS, ++ DataComponents.DYED_COLOR, ++ // DataComponents.MAP_COLOR, ++ // DataComponents.MAP_ID, ++ // DataComponents.MAP_DECORATIONS, ++ // DataComponents.MAP_POST_PROCESSING, ++ // DataComponents.CHARGED_PROJECTILES, ++ // DataComponents.BUNDLE_CONTENTS, ++ // DataComponents.POTION_CONTENTS, ++ DataComponents.SUSPICIOUS_STEW_EFFECTS ++ // DataComponents.WRITABLE_BOOK_CONTENT, ++ // DataComponents.WRITTEN_BOOK_CONTENT, ++ // DataComponents.TRIM, ++ // DataComponents.DEBUG_STICK_STATE, ++ // DataComponents.ENTITY_DATA, ++ // DataComponents.BUCKET_ENTITY_DATA, ++ // DataComponents.BLOCK_ENTITY_DATA, ++ // DataComponents.INSTRUMENT, ++ // DataComponents.OMINOUS_BOTTLE_AMPLIFIER, ++ // DataComponents.RECIPES, ++ // DataComponents.LODESTONE_TRACKER, ++ // DataComponents.FIREWORK_EXPLOSION, ++ // DataComponents.FIREWORKS, ++ // DataComponents.PROFILE, ++ // DataComponents.NOTE_BLOCK_SOUND, ++ // DataComponents.BANNER_PATTERNS, ++ // DataComponents.BASE_COLOR, ++ // DataComponents.POT_DECORATIONS, ++ // DataComponents.CONTAINER, ++ // DataComponents.BEES, ++ // DataComponents.LOCK, ++ // DataComponents.CONTAINER_LOOT, ++ ); ++ // Purpur end private ItemStack removeNonCursesFrom(ItemStack item) { ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments(item, (itemenchantments_a) -> { itemenchantments_a.removeIf((holder) -> { @@ -35,23 +98,25 @@ index db9444dda248260372d96ce239a590e88a4c1142..f7948de0180836f5bcf6818fe3a13624 }); }); -@@ -255,6 +255,21 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -255,6 +315,23 @@ public class GrindstoneMenu extends AbstractContainerMenu { } item.set(DataComponents.REPAIR_COST, i); + + // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes && itemstack1.getTag() != null) { -+ for (String key : itemstack1.getTag().getAllKeys()) { -+ if (!key.equals("display")) { -+ itemstack1.getTag().remove(key); ++ net.minecraft.core.component.DataComponentPatch.Builder builder = net.minecraft.core.component.DataComponentPatch.builder(); ++ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes) { ++ item.getComponents().forEach(typedDataComponent -> { ++ if (GRINDSTONE_REMOVE_ATTRIBUTES_REMOVAL_LIST.contains(typedDataComponent.type())) { ++ builder.remove(typedDataComponent.type()); + } -+ } ++ }); + } -+ -+ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveDisplay && itemstack1.getTag() != null) { -+ itemstack1.getTag().remove("display"); ++ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveDisplay) { ++ builder.remove(DataComponents.CUSTOM_NAME); ++ builder.remove(DataComponents.LORE); + } ++ item.applyComponents(builder.build()); + // Purpur end + return item; diff --git a/patches/server/0210-UPnP-Port-Forwarding.patch b/patches/server/0211-UPnP-Port-Forwarding.patch similarity index 96% rename from patches/server/0210-UPnP-Port-Forwarding.patch rename to patches/server/0211-UPnP-Port-Forwarding.patch index 3563559b9..86b610183 100644 --- a/patches/server/0210-UPnP-Port-Forwarding.patch +++ b/patches/server/0211-UPnP-Port-Forwarding.patch @@ -67,10 +67,10 @@ index 8a132fcdeb620d2e7f1c0c8b9e592ff233cd0568..29af03b8690e4d402d1e4e4516e4dc73 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 042fd443c98258240042d3ce1650f36e601d72e3..e83b33f4e28a6f2310c807db011cae7f550c502c 100644 +index 6653162444df443ca990a25fc8b9f3c336841efb..64c62e4abefb7e95e881fa1d8918e43ae48eb1dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -403,4 +403,9 @@ public class PurpurConfig { +@@ -419,4 +419,9 @@ public class PurpurConfig { private static void tpsCatchup() { tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup); } diff --git a/patches/server/0211-Campfire-option-for-lit-when-placed.patch b/patches/server/0212-Campfire-option-for-lit-when-placed.patch similarity index 100% rename from patches/server/0211-Campfire-option-for-lit-when-placed.patch rename to patches/server/0212-Campfire-option-for-lit-when-placed.patch diff --git a/patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 100% rename from patches/server/0212-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0213-options-to-extinguish-fire-blocks-with-snowballs.patch diff --git a/patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch similarity index 100% rename from patches/server/0213-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0214-Add-option-to-disable-zombie-villagers-cure.patch diff --git a/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 93% rename from patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index 96cc718fe..e0c4575a3 100644 --- a/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,13 +135,13 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e83b33f4e28a6f2310c807db011cae7f550c502c..ae0e335fb3f6d5e6f40de0f0fdac834d29cc0aa9 100644 +index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -309,6 +309,10 @@ public class PurpurConfig { - public static int beeInsideBeeHive = 3; - public static boolean anvilCumulativeCost = true; - public static int lightningRodRange = 128; +@@ -312,6 +312,10 @@ public class PurpurConfig { + public static Set grindstoneIgnoredEnchants = new HashSet<>(); + public static boolean grindstoneRemoveAttributes = false; + public static boolean grindstoneRemoveDisplay = false; + public static int caveVinesMaxGrowthAge = 25; + public static int kelpMaxGrowthAge = 25; + public static int twistingVinesMaxGrowthAge = 25; @@ -149,10 +149,10 @@ index e83b33f4e28a6f2310c807db011cae7f550c502c..ae0e335fb3f6d5e6f40de0f0fdac834d private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -343,6 +347,30 @@ public class PurpurConfig { - beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); - anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); - lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); +@@ -359,6 +363,30 @@ public class PurpurConfig { + }); + grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); + grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay); + caveVinesMaxGrowthAge = getInt("settings.blocks.cave_vines.max-growth-age", caveVinesMaxGrowthAge); + if (caveVinesMaxGrowthAge > 25) { + caveVinesMaxGrowthAge = 25; diff --git a/patches/server/0215-Mobs-always-drop-experience.patch b/patches/server/0216-Mobs-always-drop-experience.patch similarity index 100% rename from patches/server/0215-Mobs-always-drop-experience.patch rename to patches/server/0216-Mobs-always-drop-experience.patch diff --git a/patches/server/0216-Grindstone-API.patch b/patches/server/0217-Grindstone-API.patch similarity index 92% rename from patches/server/0216-Grindstone-API.patch rename to patches/server/0217-Grindstone-API.patch index 330aa12fd..84897e687 100644 --- a/patches/server/0216-Grindstone-API.patch +++ b/patches/server/0217-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index db9444dda248260372d96ce239a590e88a4c1142..6d895008cd0654c9d6b7998ab985df8149a610b2 100644 +index e9451ab9635b3040490a3cbbf0a2bdeb63fd3338..4ab03c778bff9c23eafb36e97fadc0ee416e89f0 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -21,7 +21,7 @@ index db9444dda248260372d96ce239a590e88a4c1142..6d895008cd0654c9d6b7998ab985df81 } world.levelEvent(1042, blockposition, 0); -@@ -316,7 +318,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -393,7 +395,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0219-Mob-head-visibility-percent.patch b/patches/server/0220-Mob-head-visibility-percent.patch similarity index 100% rename from patches/server/0219-Mob-head-visibility-percent.patch rename to patches/server/0220-Mob-head-visibility-percent.patch diff --git a/patches/server/0220-Configurable-valid-characters-for-usernames.patch b/patches/server/0221-Configurable-valid-characters-for-usernames.patch similarity index 92% rename from patches/server/0220-Configurable-valid-characters-for-usernames.patch rename to patches/server/0221-Configurable-valid-characters-for-usernames.patch index 382006d31..a201a978b 100644 --- a/patches/server/0220-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0221-Configurable-valid-characters-for-usernames.patch @@ -17,10 +17,10 @@ index 0bd191acb9596d3aa21c337230d26f09d26f6888..20211f40aeeade9217ece087688974bd return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ae0e335fb3f6d5e6f40de0f0fdac834d29cc0aa9..9e4824e7cb7561a40cae7ccdcf49e01fd5118615 100644 +index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -436,4 +436,11 @@ public class PurpurConfig { +@@ -452,4 +452,11 @@ public class PurpurConfig { private static void networkSettings() { useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); } diff --git a/patches/server/0221-Shears-can-have-looting-enchantment.patch b/patches/server/0222-Shears-can-have-looting-enchantment.patch similarity index 98% rename from patches/server/0221-Shears-can-have-looting-enchantment.patch rename to patches/server/0222-Shears-can-have-looting-enchantment.patch index d8adfecdd..bd8ac1e24 100644 --- a/patches/server/0221-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0222-Shears-can-have-looting-enchantment.patch @@ -139,10 +139,10 @@ index 754eb747179d9318bc5a3883e5622cc400c4e06c..4e929539cb093d58f3311d5f6a62bd1a this.generateShearedMushrooms(drops::add); return drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9e4824e7cb7561a40cae7ccdcf49e01fd5118615..a34c44ba770ded446b7969a31d3d05016717c13b 100644 +index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -375,6 +375,7 @@ public class PurpurConfig { +@@ -391,6 +391,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = true; @@ -150,7 +150,7 @@ index 9e4824e7cb7561a40cae7ccdcf49e01fd5118615..a34c44ba770ded446b7969a31d3d0501 public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -397,6 +398,7 @@ public class PurpurConfig { +@@ -413,6 +414,7 @@ public class PurpurConfig { } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); diff --git a/patches/server/0222-Stop-bees-from-dying-after-stinging.patch b/patches/server/0223-Stop-bees-from-dying-after-stinging.patch similarity index 100% rename from patches/server/0222-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0223-Stop-bees-from-dying-after-stinging.patch diff --git a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 98% rename from patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 527eeff3c..824c375e6 100644 --- a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,10 +29,10 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a34c44ba770ded446b7969a31d3d05016717c13b..e50954e35116ea60b68ae00191771f8d9f78b45d 100644 +index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -418,6 +418,11 @@ public class PurpurConfig { +@@ -434,6 +434,11 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } diff --git a/patches/server/0224-Configurable-farmland-trample-height.patch b/patches/server/0225-Configurable-farmland-trample-height.patch similarity index 100% rename from patches/server/0224-Configurable-farmland-trample-height.patch rename to patches/server/0225-Configurable-farmland-trample-height.patch diff --git a/patches/server/0225-Configurable-player-pickup-exp-delay.patch b/patches/server/0226-Configurable-player-pickup-exp-delay.patch similarity index 97% rename from patches/server/0225-Configurable-player-pickup-exp-delay.patch rename to patches/server/0226-Configurable-player-pickup-exp-delay.patch index b09cede36..dbf7216d1 100644 --- a/patches/server/0225-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0226-Configurable-player-pickup-exp-delay.patch @@ -22,7 +22,7 @@ index 7ca70e9ddda24e2fe661c7b13fa439a6c19726dd..ce608784e0e35b67dde377436aaf42c9 int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 44ef706008a1477d2073c29f2c9d016bf91e15a6..102da46e66ac3a395af98fdb0013587ec6d7b48f 100644 +index 0460bdb52ce6b29cf57ef8f2d7f430e761c82d85..845c4af5d5d38d54de4a1b20fe32bf5dd4776a29 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -632,7 +632,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0226-Allow-void-trading.patch b/patches/server/0227-Allow-void-trading.patch similarity index 100% rename from patches/server/0226-Allow-void-trading.patch rename to patches/server/0227-Allow-void-trading.patch diff --git a/patches/server/0227-Configurable-phantom-size.patch b/patches/server/0228-Configurable-phantom-size.patch similarity index 100% rename from patches/server/0227-Configurable-phantom-size.patch rename to patches/server/0228-Configurable-phantom-size.patch diff --git a/patches/server/0228-Max-joins-per-second.patch b/patches/server/0229-Max-joins-per-second.patch similarity index 94% rename from patches/server/0228-Max-joins-per-second.patch rename to patches/server/0229-Max-joins-per-second.patch index 614606510..46482bbe9 100644 --- a/patches/server/0228-Max-joins-per-second.patch +++ b/patches/server/0229-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e50954e35116ea60b68ae00191771f8d9f78b45d..64fc2ae0b1f086390614f03dc15aff4037d57d68 100644 +index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -440,8 +440,10 @@ public class PurpurConfig { +@@ -456,8 +456,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0229-Configurable-minimum-demand-for-trades.patch b/patches/server/0230-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0229-Configurable-minimum-demand-for-trades.patch rename to patches/server/0230-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0230-Lobotomize-stuck-villagers.patch b/patches/server/0231-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0230-Lobotomize-stuck-villagers.patch rename to patches/server/0231-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0231-Option-for-villager-display-trade-item.patch b/patches/server/0232-Option-for-villager-display-trade-item.patch similarity index 100% rename from patches/server/0231-Option-for-villager-display-trade-item.patch rename to patches/server/0232-Option-for-villager-display-trade-item.patch diff --git a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 100% rename from patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0234-Anvil-repair-damage-options.patch b/patches/server/0235-Anvil-repair-damage-options.patch similarity index 100% rename from patches/server/0234-Anvil-repair-damage-options.patch rename to patches/server/0235-Anvil-repair-damage-options.patch diff --git a/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch similarity index 96% rename from patches/server/0236-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0237-Add-toggle-for-enchant-level-clamping.patch index 2d498458b..5e4013324 100644 --- a/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch @@ -59,10 +59,10 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 64fc2ae0b1f086390614f03dc15aff4037d57d68..1e28c96f5b142a28be530dfc24d67b99c3803948 100644 +index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -382,6 +382,7 @@ public class PurpurConfig { +@@ -398,6 +398,7 @@ public class PurpurConfig { public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; public static boolean replaceIncompatibleEnchants = false; @@ -70,7 +70,7 @@ index 64fc2ae0b1f086390614f03dc15aff4037d57d68..1e28c96f5b142a28be530dfc24d67b99 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -405,6 +406,7 @@ public class PurpurConfig { +@@ -421,6 +422,7 @@ public class PurpurConfig { allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability replaceIncompatibleEnchants = getBoolean("settings.enchantment.anvil.replace-incompatible-enchants", replaceIncompatibleEnchants); diff --git a/patches/server/0237-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0238-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0237-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0238-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0239-Stonecutter-damage.patch b/patches/server/0240-Stonecutter-damage.patch similarity index 98% rename from patches/server/0239-Stonecutter-damage.patch rename to patches/server/0240-Stonecutter-damage.patch index 121a672c9..0e0adcbc4 100644 --- a/patches/server/0239-Stonecutter-damage.patch +++ b/patches/server/0240-Stonecutter-damage.patch @@ -128,7 +128,7 @@ index a49193a023bbd9b65bcd3652dc9c241720500755..6fed586c9a778f7a57e1b4ca2e6f2dbc } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1e28c96f5b142a28be530dfc24d67b99c3803948..cadb07b2ec32baa5f509b9da3bfd9044cee19ba4 100644 +index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { diff --git a/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0241-Add-config-for-snow-on-blue-ice.patch b/patches/server/0242-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0241-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0242-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0242-Skeletons-eat-wither-roses.patch b/patches/server/0243-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0242-Skeletons-eat-wither-roses.patch rename to patches/server/0243-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch b/patches/server/0244-Enchantment-Table-Persists-Lapis.patch similarity index 100% rename from patches/server/0243-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0244-Enchantment-Table-Persists-Lapis.patch diff --git a/patches/server/0244-Spark-Profiler.patch b/patches/server/0245-Spark-Profiler.patch similarity index 100% rename from patches/server/0244-Spark-Profiler.patch rename to patches/server/0245-Spark-Profiler.patch diff --git a/patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 92% rename from patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch index 8064cbf52..aef122660 100644 --- a/patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cadb07b2ec32baa5f509b9da3bfd9044cee19ba4..801d269a038e68d428b31f12d372fd11ab552d50 100644 +index 07d6455c781b8743a833cbc04576015433686c4b..d038e62a0151e3b5c9dee06f1b2682684d0b496e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -445,9 +445,11 @@ public class PurpurConfig { +@@ -461,9 +461,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0247-Config-to-not-let-coral-die.patch b/patches/server/0248-Config-to-not-let-coral-die.patch similarity index 100% rename from patches/server/0247-Config-to-not-let-coral-die.patch rename to patches/server/0248-Config-to-not-let-coral-die.patch diff --git a/patches/server/0248-Add-local-difficulty-api.patch b/patches/server/0249-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0248-Add-local-difficulty-api.patch rename to patches/server/0249-Add-local-difficulty-api.patch diff --git a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch b/patches/server/0250-Add-toggle-for-RNG-manipulation.patch similarity index 100% rename from patches/server/0249-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0250-Add-toggle-for-RNG-manipulation.patch diff --git a/patches/server/0250-Remove-Timings.patch b/patches/server/0251-Remove-Timings.patch similarity index 100% rename from patches/server/0250-Remove-Timings.patch rename to patches/server/0251-Remove-Timings.patch diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0252-Remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0251-Remove-Mojang-Profiler.patch rename to patches/server/0252-Remove-Mojang-Profiler.patch diff --git a/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0253-Add-Bee-API.patch b/patches/server/0254-Add-Bee-API.patch similarity index 100% rename from patches/server/0253-Add-Bee-API.patch rename to patches/server/0254-Add-Bee-API.patch diff --git a/patches/server/0254-Debug-Marker-API.patch b/patches/server/0255-Debug-Marker-API.patch similarity index 100% rename from patches/server/0254-Debug-Marker-API.patch rename to patches/server/0255-Debug-Marker-API.patch diff --git a/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0256-Add-skeleton-bow-accuracy-option.patch b/patches/server/0257-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0256-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0257-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0257-Add-death-screen-API.patch b/patches/server/0258-Add-death-screen-API.patch similarity index 100% rename from patches/server/0257-Add-death-screen-API.patch rename to patches/server/0258-Add-death-screen-API.patch diff --git a/patches/server/0258-Implement-ram-and-rambar-commands.patch b/patches/server/0259-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0258-Implement-ram-and-rambar-commands.patch rename to patches/server/0259-Implement-ram-and-rambar-commands.patch index 6ac14937f..63ca55dde 100644 --- a/patches/server/0258-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0259-Implement-ram-and-rambar-commands.patch @@ -60,7 +60,7 @@ index 826b7e2bb897609a084555632f691ddb38882058..42a623254bd2886d09eb0cfeb01dd12d // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 801d269a038e68d428b31f12d372fd11ab552d50..b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd 100644 +index d038e62a0151e3b5c9dee06f1b2682684d0b496e..b94f7b882405345f6154383beaef8d89673726c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/server/0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 97% rename from patches/server/0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch index c0c0b9b78..2f4116d77 100644 --- a/patches/server/0259-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -86,10 +86,10 @@ index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b2e88e4b9b8afbb9ea6d14c6e268ac53b96b41bd..67fe92fdb068ce3cb45317d250dfeeb30475beb4 100644 +index b94f7b882405345f6154383beaef8d89673726c9..9cda9416f015356a57c28fa5e4f62987f72c15f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -481,4 +481,9 @@ public class PurpurConfig { +@@ -497,4 +497,9 @@ public class PurpurConfig { String setPattern = getString("settings.username-valid-characters", defaultPattern); usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0260-Configurable-block-blast-resistance.patch b/patches/server/0261-Configurable-block-blast-resistance.patch similarity index 94% rename from patches/server/0260-Configurable-block-blast-resistance.patch rename to patches/server/0261-Configurable-block-blast-resistance.patch index 045b703bc..5067e60fa 100644 --- a/patches/server/0260-Configurable-block-blast-resistance.patch +++ b/patches/server/0261-Configurable-block-blast-resistance.patch @@ -18,10 +18,10 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 67fe92fdb068ce3cb45317d250dfeeb30475beb4..c218b0d4cfce46c5c2f042566d618bf36ee5e1b4 100644 +index 9cda9416f015356a57c28fa5e4f62987f72c15f1..bddf643f229d2a62746d89133e7013f1a3fafb45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -486,4 +486,19 @@ public class PurpurConfig { +@@ -502,4 +502,19 @@ public class PurpurConfig { private static void fixProjectileLootingTransfer() { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0261-Configurable-block-fall-damage-modifiers.patch b/patches/server/0262-Configurable-block-fall-damage-modifiers.patch similarity index 97% rename from patches/server/0261-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0262-Configurable-block-fall-damage-modifiers.patch index de16399e5..489e026c7 100644 --- a/patches/server/0261-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0262-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c218b0d4cfce46c5c2f042566d618bf36ee5e1b4..1e66458fc3d91426109d920e8d73d157e91dfed5 100644 +index bddf643f229d2a62746d89133e7013f1a3fafb45..05c90e15cd487335840c7841874ebb99c576e1cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -501,4 +501,50 @@ public class PurpurConfig { +@@ -517,4 +517,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0262-Language-API.patch b/patches/server/0263-Language-API.patch similarity index 100% rename from patches/server/0262-Language-API.patch rename to patches/server/0263-Language-API.patch diff --git a/patches/server/0263-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0264-Milk-Keeps-Beneficial-Effects.patch similarity index 100% rename from patches/server/0263-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0264-Milk-Keeps-Beneficial-Effects.patch diff --git a/patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0264-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0265-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch similarity index 91% rename from patches/server/0265-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0266-Add-log-suppression-for-LibraryLoader.patch index 8cba1853a..aa5f01e9a 100644 --- a/patches/server/0265-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1e66458fc3d91426109d920e8d73d157e91dfed5..6baa4b8a2ab5529e6867de7a9113e020d016aff6 100644 +index 05c90e15cd487335840c7841874ebb99c576e1cc..33011a76cf02d7fa2860432ad13a8666e6094b4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -454,11 +454,14 @@ public class PurpurConfig { +@@ -470,11 +470,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 100% rename from patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch diff --git a/patches/server/0267-Fire-Immunity-API.patch b/patches/server/0268-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0267-Fire-Immunity-API.patch rename to patches/server/0268-Fire-Immunity-API.patch diff --git a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 100% rename from patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch diff --git a/patches/server/0269-Added-got-ram-event.patch b/patches/server/0270-Added-got-ram-event.patch similarity index 100% rename from patches/server/0269-Added-got-ram-event.patch rename to patches/server/0270-Added-got-ram-event.patch diff --git a/patches/server/0270-Log-skipped-entity-s-position.patch b/patches/server/0271-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0270-Log-skipped-entity-s-position.patch rename to patches/server/0271-Log-skipped-entity-s-position.patch diff --git a/patches/server/0271-End-Crystal-Cramming.patch b/patches/server/0272-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0271-End-Crystal-Cramming.patch rename to patches/server/0272-End-Crystal-Cramming.patch diff --git a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 97% rename from patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 6770c73c8..b7c21f3d7 100644 --- a/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 37ce2605c8803d8d87770bf6a95a83aa975b99fe..39d4e47b1408dd7c0174a6cf8b4ebac63d590a53 100644 +index 2b9cc89a2e71b523c90bbfa987b0f8352efff95a..5ad48d2003fbd83e60f6faa68532496131935828 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -178,6 +178,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name diff --git a/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch similarity index 95% rename from patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch index 414bc9582..a3570be64 100644 --- a/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch @@ -39,10 +39,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6baa4b8a2ab5529e6867de7a9113e020d016aff6..cf2c0642fc09b6f806903a684ccc215b0ad6276f 100644 +index 33011a76cf02d7fa2860432ad13a8666e6094b4a..7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -490,6 +490,16 @@ public class PurpurConfig { +@@ -506,6 +506,16 @@ public class PurpurConfig { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0274-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0275-Config-to-remove-explosion-radius-clamp.patch index 8dc99e2b4..574d2b886 100644 --- a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6b6340ae8ca3f81f08f9038b63ebc419e003cf6b..ed31528ddfec06e723827a505daeca5938dba865 100644 +index 6379b3b8e633d1a16532b4664e53fa5afa616ab6..69d8ff6a97335b6fe4b20a8229a77f2591b0f050 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -98,7 +98,7 @@ public class Explosion { diff --git a/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0276-Add-PreExplodeEvents.patch b/patches/server/0277-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0276-Add-PreExplodeEvents.patch rename to patches/server/0277-Add-PreExplodeEvents.patch diff --git a/patches/server/0277-Improve-output-of-plugins-command.patch b/patches/server/0278-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0277-Improve-output-of-plugins-command.patch rename to patches/server/0278-Improve-output-of-plugins-command.patch diff --git a/patches/server/0278-Add-mending-multiplier.patch b/patches/server/0279-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0278-Add-mending-multiplier.patch rename to patches/server/0279-Add-mending-multiplier.patch diff --git a/patches/server/0279-Make-GUI-Great-Again.patch b/patches/server/0280-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0279-Make-GUI-Great-Again.patch rename to patches/server/0280-Make-GUI-Great-Again.patch diff --git a/patches/server/0280-Stored-Bee-API.patch b/patches/server/0281-Stored-Bee-API.patch similarity index 100% rename from patches/server/0280-Stored-Bee-API.patch rename to patches/server/0281-Stored-Bee-API.patch diff --git a/patches/server/0281-Shears-can-defuse-TNT.patch b/patches/server/0282-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0281-Shears-can-defuse-TNT.patch rename to patches/server/0282-Shears-can-defuse-TNT.patch diff --git a/patches/server/0282-Explorer-Map-API.patch b/patches/server/0283-Explorer-Map-API.patch similarity index 100% rename from patches/server/0282-Explorer-Map-API.patch rename to patches/server/0283-Explorer-Map-API.patch diff --git a/patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0283-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0284-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 92% rename from patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch index e66c156fb..b2db4abbe 100644 --- a/patches/server/0285-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch @@ -18,7 +18,7 @@ index 357a79d72a2de02a019595e457fe432bf409e516..4fb025a63628eb60509d90b680922a02 : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb90078ffabff 100644 +index 812091bf6efc067b21b9723b8241360d4b4c79e7..25e614be19b2b29b36af136b823f27f85e1650fa 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -197,7 +197,7 @@ public class DamageSource { @@ -31,10 +31,10 @@ index b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a..b206d65750fee0a42b805de24ecbb900 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cf2c0642fc09b6f806903a684ccc215b0ad6276f..67a719dc069bc77da38b32ba7d32580c8b7f1207 100644 +index 7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8..d7df39dc0937f37746b17bbad810478d11736f4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -560,4 +560,9 @@ public class PurpurConfig { +@@ -576,4 +576,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/server/0286-place-end-crystal-on-any-block.patch b/patches/server/0287-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0286-place-end-crystal-on-any-block.patch rename to patches/server/0287-place-end-crystal-on-any-block.patch diff --git a/patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0287-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0288-register-minecraft-debug-commands.patch b/patches/server/0289-register-minecraft-debug-commands.patch similarity index 95% rename from patches/server/0288-register-minecraft-debug-commands.patch rename to patches/server/0289-register-minecraft-debug-commands.patch index 15b540b12..1e5ed3ea9 100644 --- a/patches/server/0288-register-minecraft-debug-commands.patch +++ b/patches/server/0289-register-minecraft-debug-commands.patch @@ -32,10 +32,10 @@ index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4 io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 67a719dc069bc77da38b32ba7d32580c8b7f1207..df83e258d47fdce819c0f6467e2c0f2d681cb1f9 100644 +index d7df39dc0937f37746b17bbad810478d11736f4b..046304d9149472eaffb3ff5f4fa22a230969de86 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -565,4 +565,9 @@ public class PurpurConfig { +@@ -581,4 +581,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/server/0289-Configurable-villager-search-radius.patch b/patches/server/0290-Configurable-villager-search-radius.patch similarity index 100% rename from patches/server/0289-Configurable-villager-search-radius.patch rename to patches/server/0290-Configurable-villager-search-radius.patch From 21692d44606fd9989ef2364cfb10b6b9232ef06a Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 05:30:40 -0700 Subject: [PATCH 127/148] these don't apply here --- patches/server/0210-Config-for-grindstones.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/server/0210-Config-for-grindstones.patch b/patches/server/0210-Config-for-grindstones.patch index 5b8243296..3360f1d66 100644 --- a/patches/server/0210-Config-for-grindstones.patch +++ b/patches/server/0210-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index db9444dda248260372d96ce239a590e88a4c1142..e9451ab9635b3040490a3cbbf0a2bdeb63fd3338 100644 +index db9444dda248260372d96ce239a590e88a4c1142..99a9b2fbdff41d20719a5d1947d8fcb848080119 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -38,9 +38,9 @@ index db9444dda248260372d96ce239a590e88a4c1142..e9451ab9635b3040490a3cbbf0a2bdeb + DataComponents.CUSTOM_DATA, + // DataComponents.MAX_DAMAGE, + // DataComponents.UNBREAKABLE, -+ DataComponents.CUSTOM_NAME, ++ // DataComponents.CUSTOM_NAME, + // DataComponents.ITEM_NAME, -+ DataComponents.LORE, ++ // DataComponents.LORE, + // DataComponents.RARITY, + DataComponents.ENCHANTMENTS, + // DataComponents.CAN_PLACE_ON, From 3768b6325f8172af06751faf016e2759af9e89bb Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 05:32:49 -0700 Subject: [PATCH 128/148] this too --- patches/server/0210-Config-for-grindstones.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/server/0210-Config-for-grindstones.patch b/patches/server/0210-Config-for-grindstones.patch index 3360f1d66..c9d77067b 100644 --- a/patches/server/0210-Config-for-grindstones.patch +++ b/patches/server/0210-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index db9444dda248260372d96ce239a590e88a4c1142..99a9b2fbdff41d20719a5d1947d8fcb848080119 100644 +index db9444dda248260372d96ce239a590e88a4c1142..5824636332eb35ae6bee9cc0661ee95901bb8c4b 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -42,7 +42,7 @@ index db9444dda248260372d96ce239a590e88a4c1142..99a9b2fbdff41d20719a5d1947d8fcb8 + // DataComponents.ITEM_NAME, + // DataComponents.LORE, + // DataComponents.RARITY, -+ DataComponents.ENCHANTMENTS, ++ // DataComponents.ENCHANTMENTS, + // DataComponents.CAN_PLACE_ON, + // DataComponents.CAN_BREAK, + DataComponents.ATTRIBUTE_MODIFIERS, From 9912d33c23b996c934d9c716984c6492022e54ba Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 05:51:00 -0700 Subject: [PATCH 129/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@25e44bc fix dumpitem command nbt format PaperMC/Paper@3fdd094 Fix sealed package check in BytecodeModifyingURLClassLoader (#10627) PaperMC/Paper@937a67a Add initial size cap to component map --- .idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml | 2 +- ...r_.xml => Upstream_Paper__createMojmapPaperclipJar_.xml} | 6 +++--- gradle.properties | 2 +- patches/server/0001-Rebrand.patch | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename .idea/runConfigurations/{Upstream_Paper__createReobfPaperclipJar_.xml => Upstream_Paper__createMojmapPaperclipJar_.xml} (82%) diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index 24b23bbe9..737c94a7f 100644 --- a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml +++ b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 8c05d797b..9b92dea84 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.6-R0.1-SNAPSHOT mcVersion = 1.20.6 -paperCommit = 812ccb96a480cc6518ba5ddde11e12c22691c061 +paperCommit = 937a67a65172aa7ed2efafd536bbf7cfab2e3489 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 44b00e49e..07e65c2f1 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -250,10 +250,10 @@ index e85b9bb3f9c225d289a4959921970b9963881199..c1e2d3a75b9d4710ab6d8b5c62af4bc1 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 573b93fc4e392456af2f2cf3900a9d7014f67a22..e3fb34549e2f74e1c00f616c5f0fb60948c42d11 100644 +index a1c9989df460d7ae3666fffe7968750832a30b85..ad7f21566271260270db452e2f15c32f8a829d28 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -508,7 +508,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -507,7 +507,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From b02dc7ac072ffbffa0e47c78b20cc51e752c68a6 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 06:40:50 -0700 Subject: [PATCH 130/148] actually transfer the beehive buffer's data --- .../0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 824c375e6..97781867e 100644 --- a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -111,10 +111,10 @@ index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d +} diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..e20fa234520c42e4d32a2a634fc0a2938904f983 +index 0000000000000000000000000000000000000000..56fc359ea32228c2589ac30c9d00a9c4bea30db7 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java -@@ -0,0 +1,66 @@ +@@ -0,0 +1,67 @@ +package org.purpurmc.purpur.task; + +import io.netty.buffer.Unpooled; @@ -178,6 +178,7 @@ index 0000000000000000000000000000000000000000..e20fa234520c42e4d32a2a634fc0a293 + FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(Unpooled.buffer()); + ClientboundBeehivePayload.STREAM_CODEC.encode(friendlyByteBuf, customPacketPayload); + byte[] byteArray = new byte[friendlyByteBuf.readableBytes()]; ++ friendlyByteBuf.readBytes(byteArray); + player.sendPluginMessage(this.plugin, customPacketPayload.type().id().toString(), byteArray); + } +} From 333dc0c9d22d5d59b18b39fd5214a5605653e11a Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 19:04:10 -0700 Subject: [PATCH 131/148] fix one punch not working correctly on hostile & passive mobs --- patches/server/0128-One-Punch-Man.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/server/0128-One-Punch-Man.patch b/patches/server/0128-One-Punch-Man.patch index 8c548bd62..51461e170 100644 --- a/patches/server/0128-One-Punch-Man.patch +++ b/patches/server/0128-One-Punch-Man.patch @@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..0b4384b6898ad591b8b9256b2427359474dd9c57 100644 +index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..523052af43aa86982d2ded0cc0882d34bac24da7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2382,6 +2382,21 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -18,9 +18,9 @@ index dc1c7c55fd13cc1a8ade803bfb1b7c385cf29132..0b4384b6898ad591b8b9256b24273594 + double attackDamage; + net.minecraft.world.item.component.ItemAttributeModifiers itemattributemodifiers = player.getMainHandItem().getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, net.minecraft.world.item.component.ItemAttributeModifiers.EMPTY); + -+ attackDamage = itemattributemodifiers.compute(this.getAttributeBaseValue(Attributes.ATTACK_DAMAGE), EquipmentSlot.MAINHAND); ++ attackDamage = itemattributemodifiers.compute(player.getAttributeBaseValue(Attributes.ATTACK_DAMAGE), EquipmentSlot.MAINHAND); + -+ if (attackDamage == 0) { ++ if (attackDamage == 1.0D) { + this.setHealth(0); + } + } From 37b9ad3bd71fd6b58f98c91d63c6d98e4c26e3d9 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 30 Apr 2024 19:20:51 -0700 Subject: [PATCH 132/148] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4ea67ab [ci skip] Remove trailing comma in projects action PaperMC/Paper@8c058f8 Update paperweight to 1.6.3 (#10626) PaperMC/Paper@fa6013d Fixes beds not exploding in the nether PaperMC/Paper@3e0eb4a Updated Upstream (CraftBukkit) (#10624) --- .idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml | 2 +- build.gradle.kts | 2 +- gradle.properties | 2 +- patches/server/0065-Implement-bed-explosion-options.patch | 8 ++++---- .../0066-Implement-respawn-anchor-explosion-options.patch | 6 +++--- .../0262-Configurable-block-fall-damage-modifiers.patch | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index 737c94a7f..05a5aa732 100644 --- a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml +++ b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml @@ -5,7 +5,7 @@ \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index be3817628..1c342d750 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java `maven-publish` - id("io.papermc.paperweight.patcher") version "1.6.2" + id("io.papermc.paperweight.patcher") version "1.6.3" } allprojects { diff --git a/gradle.properties b/gradle.properties index 9b92dea84..45b60007f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.6-R0.1-SNAPSHOT mcVersion = 1.20.6 -paperCommit = 937a67a65172aa7ed2efafd536bbf7cfab2e3489 +paperCommit = 3e0eb4a1baa5df5847f69982c78814bf9757cb97 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0065-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch index 94fa8a84f..bdfcce98a 100644 --- a/patches/server/0065-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index f726c3839ab93cc81fee26bfeb821bead3533b5e..2590eee0ca6a35fad3351dd6112aa596107fbe8f 100644 +index 4459685d1fb655f93a523ae50b62d6b97785ed90..549e3dd09a91ddf319fe0c1ec09924cbb600c1b8 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java @@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -17,12 +17,12 @@ index f726c3839ab93cc81fee26bfeb821bead3533b5e..2590eee0ca6a35fad3351dd6112aa596 return InteractionResult.SUCCESS; } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first -@@ -156,7 +156,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -157,7 +157,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock Vec3 vec3d = blockposition.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state -+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper - add BlockEntity ++ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Paper - add BlockEntity // Purpur return InteractionResult.SUCCESS; } } diff --git a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch index 260009f57..c8af656e0 100644 --- a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index be85535767bc79875c38da78a209d33d4be87c8a..2b840a5516073da46207552688428d86fc99975b 100644 +index 0699211428f182d8d56a2ba019d89ce05c920430..351fb74d2cccd7f63c2efee197a2968f822eda42 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 vec3d = explodedPos.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state -+ if (world.purpurConfig.respawnAnchorExplode)world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect);// CraftBukkit - add state // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper ++ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Paper // Purpur } public static boolean canSetSpawn(Level world) { diff --git a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch b/patches/server/0262-Configurable-block-fall-damage-modifiers.patch index 489e026c7..a56fb6709 100644 --- a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0262-Configurable-block-fall-damage-modifiers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 2590eee0ca6a35fad3351dd6112aa596107fbe8f..a4bae9631acfc363d22b89fb76965183d9dc79f1 100644 +index 549e3dd09a91ddf319fe0c1ec09924cbb600c1b8..a4a988ab1399702b943019e9c4e2cde3652b4e85 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -180,7 +180,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -181,7 +181,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { From a90a4730d672968428e371f024c8317b64eba9af Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 1 May 2024 00:53:07 -0700 Subject: [PATCH 133/148] re-add persistent-tileentity-display-names-and-lore as two options --- patches/server/0002-Purpur-config-files.patch | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 150 +++------- ...-and-twisting-vines-configurable-ma.patch} | 2 +- ...=> 0217-Mobs-always-drop-experience.patch} | 274 +++++++++--------- ...ne-API.patch => 0218-Grindstone-API.patch} | 2 +- ...e-to-replant-crops-and-nether-warts.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0221-Mob-head-visibility-percent.patch} | 20 +- ...able-valid-characters-for-usernames.patch} | 2 +- ...Shears-can-have-looting-enchantment.patch} | 2 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 6 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0228-Allow-void-trading.patch} | 6 +- ...h => 0229-Configurable-phantom-size.patch} | 6 +- ....patch => 0230-Max-joins-per-second.patch} | 2 +- ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0232-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- ...=> 0236-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0241-Stonecutter-damage.patch} | 8 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...243-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0244-Skeletons-eat-wither-roses.patch} | 6 +- ...45-Enchantment-Table-Persists-Lapis.patch} | 4 +- ...ofiler.patch => 0246-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- ...=> 0249-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0250-Add-local-difficulty-api.patch} | 0 ...251-Add-toggle-for-RNG-manipulation.patch} | 4 +- ...imings.patch => 0252-Remove-Timings.patch} | 0 ...atch => 0253-Remove-Mojang-Profiler.patch} | 2 +- ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0255-Add-Bee-API.patch} | 0 ...-API.patch => 0256-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 6 +- ...58-Add-skeleton-bow-accuracy-option.patch} | 6 +- ....patch => 0259-Add-death-screen-API.patch} | 0 ...0-Implement-ram-and-rambar-commands.patch} | 2 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 2 +- ...gurable-block-fall-damage-modifiers.patch} | 6 +- ...uage-API.patch => 0264-Language-API.patch} | 0 ... 0265-Milk-Keeps-Beneficial-Effects.patch} | 12 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0269-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 6 +- ...t.patch => 0271-Added-got-ram-event.patch} | 0 ... 0272-Log-skipped-entity-s-position.patch} | 0 ....patch => 0273-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 2 +- ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- ....patch => 0278-Add-PreExplodeEvents.patch} | 0 ...9-Improve-output-of-plugins-command.patch} | 0 ...atch => 0280-Add-mending-multiplier.patch} | 4 +- ....patch => 0281-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0282-Stored-Bee-API.patch} | 0 ...patch => 0283-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0284-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 2 +- ...0288-place-end-crystal-on-any-block.patch} | 6 +- ...able-the-copper-oxidation-proximity.patch} | 6 +- ...0-register-minecraft-debug-commands.patch} | 2 +- ...Configurable-villager-search-radius.patch} | 6 +- 78 files changed, 323 insertions(+), 379 deletions(-) rename patches/{dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch => server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch} (53%) rename patches/server/{0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (99%) rename patches/server/{0216-Mobs-always-drop-experience.patch => 0217-Mobs-always-drop-experience.patch} (94%) rename patches/server/{0217-Grindstone-API.patch => 0218-Grindstone-API.patch} (95%) rename patches/server/{0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0219-Turtle-eggs-random-tick-crack-chance.patch => 0220-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0220-Mob-head-visibility-percent.patch => 0221-Mob-head-visibility-percent.patch} (90%) rename patches/server/{0221-Configurable-valid-characters-for-usernames.patch => 0222-Configurable-valid-characters-for-usernames.patch} (94%) rename patches/server/{0222-Shears-can-have-looting-enchantment.patch => 0223-Shears-can-have-looting-enchantment.patch} (99%) rename patches/server/{0223-Stop-bees-from-dying-after-stinging.patch => 0224-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0225-Configurable-farmland-trample-height.patch => 0226-Configurable-farmland-trample-height.patch} (94%) rename patches/server/{0226-Configurable-player-pickup-exp-delay.patch => 0227-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0227-Allow-void-trading.patch => 0228-Allow-void-trading.patch} (93%) rename patches/server/{0228-Configurable-phantom-size.patch => 0229-Configurable-phantom-size.patch} (93%) rename patches/server/{0229-Max-joins-per-second.patch => 0230-Max-joins-per-second.patch} (96%) rename patches/server/{0230-Configurable-minimum-demand-for-trades.patch => 0231-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0231-Lobotomize-stuck-villagers.patch => 0232-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0232-Option-for-villager-display-trade-item.patch => 0233-Option-for-villager-display-trade-item.patch} (92%) rename patches/server/{0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0234-Config-for-mob-last-hurt-by-player-time.patch => 0235-Config-for-mob-last-hurt-by-player-time.patch} (92%) rename patches/server/{0235-Anvil-repair-damage-options.patch => 0236-Anvil-repair-damage-options.patch} (97%) rename patches/server/{0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0237-Add-toggle-for-enchant-level-clamping.patch => 0238-Add-toggle-for-enchant-level-clamping.patch} (98%) rename patches/server/{0238-Skip-junit-tests-for-purpur-commands.patch => 0239-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0239-Implement-configurable-search-radius-for-villagers-t.patch => 0240-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0240-Stonecutter-damage.patch => 0241-Stonecutter-damage.patch} (96%) rename patches/server/{0241-Configurable-damage-settings-for-magma-blocks.patch => 0242-Configurable-damage-settings-for-magma-blocks.patch} (93%) rename patches/server/{0242-Add-config-for-snow-on-blue-ice.patch => 0243-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0243-Skeletons-eat-wither-roses.patch => 0244-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0244-Enchantment-Table-Persists-Lapis.patch => 0245-Enchantment-Table-Persists-Lapis.patch} (97%) rename patches/server/{0245-Spark-Profiler.patch => 0246-Spark-Profiler.patch} (100%) rename patches/server/{0246-Option-to-disable-kick-for-out-of-order-chat.patch => 0247-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0247-Config-for-sculk-shrieker-can_summon-state.patch => 0248-Config-for-sculk-shrieker-can_summon-state.patch} (92%) rename patches/server/{0248-Config-to-not-let-coral-die.patch => 0249-Config-to-not-let-coral-die.patch} (94%) rename patches/server/{0249-Add-local-difficulty-api.patch => 0250-Add-local-difficulty-api.patch} (100%) rename patches/server/{0250-Add-toggle-for-RNG-manipulation.patch => 0251-Add-toggle-for-RNG-manipulation.patch} (95%) rename patches/server/{0251-Remove-Timings.patch => 0252-Remove-Timings.patch} (100%) rename patches/server/{0252-Remove-Mojang-Profiler.patch => 0253-Remove-Mojang-Profiler.patch} (99%) rename patches/server/{0253-Add-more-logger-output-for-invalid-movement-kicks.patch => 0254-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0254-Add-Bee-API.patch => 0255-Add-Bee-API.patch} (100%) rename patches/server/{0255-Debug-Marker-API.patch => 0256-Debug-Marker-API.patch} (100%) rename patches/server/{0256-mob-spawning-option-to-ignore-creative-players.patch => 0257-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0257-Add-skeleton-bow-accuracy-option.patch => 0258-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0258-Add-death-screen-API.patch => 0259-Add-death-screen-API.patch} (100%) rename patches/server/{0259-Implement-ram-and-rambar-commands.patch => 0260-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0261-Configurable-block-blast-resistance.patch => 0262-Configurable-block-blast-resistance.patch} (96%) rename patches/server/{0262-Configurable-block-fall-damage-modifiers.patch => 0263-Configurable-block-fall-damage-modifiers.patch} (96%) rename patches/server/{0263-Language-API.patch => 0264-Language-API.patch} (100%) rename patches/server/{0264-Milk-Keeps-Beneficial-Effects.patch => 0265-Milk-Keeps-Beneficial-Effects.patch} (86%) rename patches/server/{0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0266-Add-log-suppression-for-LibraryLoader.patch => 0267-Add-log-suppression-for-LibraryLoader.patch} (94%) rename patches/server/{0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0268-Fire-Immunity-API.patch => 0269-Fire-Immunity-API.patch} (100%) rename patches/server/{0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0270-Added-got-ram-event.patch => 0271-Added-got-ram-event.patch} (100%) rename patches/server/{0271-Log-skipped-entity-s-position.patch => 0272-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0272-End-Crystal-Cramming.patch => 0273-End-Crystal-Cramming.patch} (91%) rename patches/server/{0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0274-Add-attribute-clamping-and-armor-limit-config.patch => 0275-Add-attribute-clamping-and-armor-limit-config.patch} (97%) rename patches/server/{0275-Config-to-remove-explosion-radius-clamp.patch => 0276-Config-to-remove-explosion-radius-clamp.patch} (93%) rename patches/server/{0276-bonemealable-sugarcane-cactus-and-netherwart.patch => 0277-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0277-Add-PreExplodeEvents.patch => 0278-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0278-Improve-output-of-plugins-command.patch => 0279-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0279-Add-mending-multiplier.patch => 0280-Add-mending-multiplier.patch} (93%) rename patches/server/{0280-Make-GUI-Great-Again.patch => 0281-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0281-Stored-Bee-API.patch => 0282-Stored-Bee-API.patch} (100%) rename patches/server/{0282-Shears-can-defuse-TNT.patch => 0283-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0283-Explorer-Map-API.patch => 0284-Explorer-Map-API.patch} (100%) rename patches/server/{0284-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0285-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (93%) rename patches/server/{0286-Add-option-for-always-showing-item-in-player-death-m.patch => 0287-Add-option-for-always-showing-item-in-player-death-m.patch} (97%) rename patches/server/{0287-place-end-crystal-on-any-block.patch => 0288-place-end-crystal-on-any-block.patch} (91%) rename patches/server/{0288-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0289-Add-option-to-disable-the-copper-oxidation-proximity.patch} (92%) rename patches/server/{0289-register-minecraft-debug-commands.patch => 0290-register-minecraft-debug-commands.patch} (96%) rename patches/server/{0290-Configurable-villager-search-radius.patch => 0291-Configurable-villager-search-radius.patch} (95%) diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index a8730427e..d33e07709 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -179,7 +179,7 @@ index c097f5d5fbd51cbbc01bbd54101905c59b3f3a4c..66a3b28d7b943d443ff66fdcfbce6e52 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f26db5947 +index 0000000000000000000000000000000000000000..19161d9736b626811423deefedd045abe60360cc --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,175 @@ @@ -260,8 +260,8 @@ index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 34); -+ set("config-version", 34); ++ version = getInt("config-version", 35); ++ set("config-version", 35); + + readConfig(PurpurConfig.class, null); + diff --git a/patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 53% rename from patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch index d0ae1607d..7fc9b5408 100644 --- a/patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -7,28 +7,20 @@ Makes it so that when a BlockEntity is placed in the world and then broken, the dropped ItemStack retains any original custom display name/lore. diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index f713734efaad4312be270d808e79f0e562c84466..887fca2931763ca4572ab89473a5303addc6f795 100644 +index 2649188930653610b8aaaeb18797c80879cd572a..7572c289758001c7417a192f0e6e994ffa8408b3 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -158,7 +158,24 @@ public class BlockItem extends Item { +@@ -157,7 +157,16 @@ public class BlockItem extends Item { } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) { - return BlockItem.updateCustomBlockEntityTag(world, player, pos, stack); + // Purpur start + boolean handled = updateCustomBlockEntityTag(world, player, pos, stack); -+ if (world.purpurConfig.persistentTileEntityDisplayNames && stack.hasTag()) { -+ CompoundTag display = stack.getTagElement("display"); -+ if (display != null) { -+ BlockEntity blockEntity = world.getBlockEntity(pos); -+ if (blockEntity != null) { -+ if (display.contains("Name", 8)) { -+ blockEntity.setPersistentDisplayName(display.getString("Name")); -+ } -+ if (display.contains("Lore", 9)) { -+ blockEntity.setPersistentLore(display.getList("Lore", 8)); -+ } -+ } ++ if (world.purpurConfig.persistentTileEntityLore) { ++ BlockEntity blockEntity1 = world.getBlockEntity(pos); ++ if (blockEntity1 != null) { ++ blockEntity1.setPersistentLore(stack.getOrDefault(DataComponents.LORE, net.minecraft.world.item.component.ItemLore.EMPTY)); + } + } + return handled; @@ -37,47 +29,33 @@ index f713734efaad4312be270d808e79f0e562c84466..887fca2931763ca4572ab89473a5303a @Nullable diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada4750b607b4 100644 +index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..7ffe51eedc9d086424cf450026bdc260249864c4 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes; - import net.minecraft.world.phys.shapes.VoxelShape; - import org.slf4j.Logger; - -+// Purpur start -+import net.minecraft.nbt.CompoundTag; -+import net.minecraft.nbt.ListTag; -+import net.minecraft.nbt.StringTag; -+import net.minecraft.world.Nameable; -+// Purpur end -+ - public class Block extends BlockBehaviour implements ItemLike { - - public static final MapCodec CODEC = simpleCodec(Block::new); -@@ -312,7 +319,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -312,7 +312,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { - Block.popResource((ServerLevel) world, pos, itemstack); -+ Block.popResource((ServerLevel) world, pos, applyDisplayNameAndLoreFromTile(itemstack, blockEntity)); // Purpur ++ Block.popResource((ServerLevel) world, pos, applyLoreFromTile(itemstack, blockEntity)); // Purpur }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -331,7 +338,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -331,7 +331,7 @@ public class Block extends BlockBehaviour implements ItemLike { event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { - popResource(serverLevel, pos, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop)); -+ popResource(serverLevel, pos, applyDisplayNameAndLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur ++ popResource(serverLevel, pos, applyLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -348,13 +355,53 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -348,13 +348,32 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { - Block.popResource(world, pos, itemstack1); -+ Block.popResource(world, pos, applyDisplayNameAndLoreFromTile(itemstack1, blockEntity)); // Purpur ++ Block.popResource(world, pos, applyLoreFromTile(itemstack1, blockEntity)); // Purpur }); state.spawnAfterBreak((ServerLevel) world, pos, tool, dropExperience); // Paper - Properly handle xp dropping } @@ -85,39 +63,18 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada47 } + // Purpur start -+ private static ItemStack applyDisplayNameAndLoreFromTile(ItemStack stack, BlockEntity blockEntity) { ++ private static ItemStack applyLoreFromTile(ItemStack stack, @Nullable BlockEntity blockEntity) { + if (stack.getItem() instanceof BlockItem) { -+ if (blockEntity != null && blockEntity.getLevel() instanceof ServerLevel && blockEntity.getLevel().purpurConfig.persistentTileEntityDisplayNames) { -+ String name = blockEntity.getPersistentDisplayName(); -+ ListTag lore = blockEntity.getPersistentLore(); -+ if (blockEntity instanceof Nameable) { -+ Nameable namedTile = (Nameable) blockEntity; -+ if (namedTile.hasCustomName()) { -+ name = Component.Serializer.toJson(namedTile.getCustomName()); -+ } ++ if (blockEntity != null && blockEntity.getLevel() instanceof ServerLevel) { ++ net.minecraft.world.item.component.ItemLore lore = blockEntity.getPersistentLore(); ++ net.minecraft.core.component.DataComponentPatch.Builder builder = net.minecraft.core.component.DataComponentPatch.builder(); ++ if (blockEntity.getLevel().purpurConfig.persistentTileEntityLore && lore != null) { ++ builder.set(net.minecraft.core.component.DataComponents.LORE, lore); + } -+ -+ if (name != null || lore != null) { -+ CompoundTag display = stack.getTagElement("display"); -+ if (display == null) { -+ display = new CompoundTag(); -+ } -+ -+ if (name != null) { -+ display.put("Name", StringTag.valueOf(name)); -+ } -+ if (lore != null) { -+ display.put("Lore", lore); -+ } -+ -+ CompoundTag tag = stack.getTag(); -+ if (tag == null) { -+ tag = new CompoundTag(); -+ } -+ tag.put("display", display); -+ -+ stack.setTag(tag); ++ if (!blockEntity.getLevel().purpurConfig.persistentTileEntityDisplayName) { ++ builder.remove(net.minecraft.core.component.DataComponents.CUSTOM_NAME); + } ++ stack.applyComponents(builder.build()); + } + } + return stack; @@ -128,44 +85,31 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada47 double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c57962651abf69a 100644 +index 7963afff4b32a0e46be9bdeb413657718cfc14f5..5168e8e9ebb54b6c00acb7f2939262eb06a7426d 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -17,6 +17,8 @@ import net.minecraft.core.component.PatchedDataComponentMap; - import net.minecraft.core.registries.BuiltInRegistries; - import net.minecraft.nbt.CompoundTag; - import net.minecraft.nbt.NbtOps; -+import net.minecraft.nbt.ListTag; -+import net.minecraft.nbt.StringTag; - import net.minecraft.network.protocol.Packet; - import net.minecraft.network.protocol.game.ClientGamePacketListener; - import net.minecraft.resources.ResourceLocation; -@@ -86,6 +88,14 @@ public abstract class BlockEntity { +@@ -87,6 +87,12 @@ public abstract class BlockEntity { if (persistentDataTag instanceof CompoundTag) { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } + // Purpur start -+ if (nbt.contains("Purpur.persistentDisplayName")) { -+ this.persistentDisplayName = nbt.getString("Purpur.persistentDisplayName"); -+ } + if (nbt.contains("Purpur.persistentLore")) { -+ this.persistentLore = nbt.getList("Purpur.persistentLore", 8); ++ net.minecraft.world.item.component.ItemLore.CODEC.decode(net.minecraft.nbt.NbtOps.INSTANCE, nbt.getCompound("Purpur.persistentLore")).result() ++ .ifPresent(tag -> this.persistentLore = tag.getFirst()); + } + // Purpur end } // CraftBukkit end -@@ -102,6 +112,17 @@ public abstract class BlockEntity { +@@ -103,6 +109,15 @@ public abstract class BlockEntity { this.loadAdditional(nbt, registryLookup); } + // Purpur start + protected void saveAdditional(CompoundTag nbt) { -+ if (this.persistentDisplayName != null) { -+ nbt.put("Purpur.persistentDisplayName", StringTag.valueOf(this.persistentDisplayName)); -+ } + if (this.persistentLore != null) { -+ nbt.put("Purpur.persistentLore", this.persistentLore); ++ net.minecraft.world.item.component.ItemLore.CODEC.encodeStart(net.minecraft.nbt.NbtOps.INSTANCE, this.persistentLore).result() ++ .ifPresent(tag -> nbt.put("Purpur.persistentLore", tag)); + } + } + // Purpur end @@ -173,48 +117,48 @@ index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c579626 protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {} public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) { -@@ -381,4 +402,24 @@ public abstract class BlockEntity { +@@ -397,4 +412,16 @@ public abstract class BlockEntity { T getOrDefault(DataComponentType type, T fallback); } + // Purpur start -+ private String persistentDisplayName = null; -+ private ListTag persistentLore = null; ++ @Nullable ++ private net.minecraft.world.item.component.ItemLore persistentLore = null; + -+ public void setPersistentDisplayName(String json) { -+ this.persistentDisplayName = json; -+ } -+ -+ public void setPersistentLore(ListTag lore) { ++ public void setPersistentLore(net.minecraft.world.item.component.ItemLore lore) { + this.persistentLore = lore; + } + -+ public String getPersistentDisplayName() { -+ return this.persistentDisplayName; -+ } -+ -+ public ListTag getPersistentLore() { ++ public @org.jetbrains.annotations.Nullable net.minecraft.world.item.component.ItemLore getPersistentLore() { + return this.persistentLore; + } + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c77929516d70407a281a0899c6722cc4210eb79..b4d5ae4025d315cfe0e19fa1b077d1c5956523ba 100644 +index 8d4c3c4a06d40841e8446485364393e36e686fdd..abe3614f2286db8945bc6c4eadd01ec8a7f93555 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -130,6 +130,7 @@ public class PurpurWorldConfig { +@@ -130,6 +130,8 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; -+ public boolean persistentTileEntityDisplayNames = false; ++ public boolean persistentTileEntityLore = false; ++ public boolean persistentTileEntityDisplayName = true; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { +@@ -153,6 +155,14 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); -+ persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); ++ if (PurpurConfig.version < 35) { ++ boolean oldVal = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityLore); ++ set("gameplay-mechanics.persistent-tileentity-display-names-and-lore", null); ++ set("gameplay-mechanics.persistent-tileentity-lore", oldVal); ++ set("gameplay-mechanics.persistent-tileentity-display-name", !oldVal); ++ } ++ persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); ++ persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 99% rename from patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index e0c4575a3..68ed8eff9 100644 --- a/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,7 +135,7 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644 +index f79d0e3907dd89ff0abf8220392bb4e23cf9003e..9ded52a0022e33a6b69191b5fa758d6cc7eb076f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -312,6 +312,10 @@ public class PurpurConfig { diff --git a/patches/server/0216-Mobs-always-drop-experience.patch b/patches/server/0217-Mobs-always-drop-experience.patch similarity index 94% rename from patches/server/0216-Mobs-always-drop-experience.patch rename to patches/server/0217-Mobs-always-drop-experience.patch index c9e873118..dc153d2e5 100644 --- a/patches/server/0216-Mobs-always-drop-experience.patch +++ b/patches/server/0217-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 0d11200ab580cc306602c29c61f7619565d8261d..62f5e5cfe5745deced2811d14d0c7ebb protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6e0913991 100644 +index abe3614f2286db8945bc6c4eadd01ec8a7f93555..6e4990ef903e7a492da953662a2a2a99b051baca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1093,12 +1093,14 @@ public class PurpurWorldConfig { +@@ -1103,12 +1103,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean batRidable = false; -@@ -1114,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1124,6 +1126,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1133,6 +1136,7 @@ public class PurpurWorldConfig { +@@ -1143,6 +1146,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean beeRidable = false; -@@ -1144,6 +1148,7 @@ public class PurpurWorldConfig { +@@ -1154,6 +1158,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1159,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1169,6 +1174,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean blazeRidable = false; -@@ -1167,6 +1173,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1183,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1179,6 +1186,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1196,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean camelRidableInWater = false; -@@ -1210,6 +1218,7 @@ public class PurpurWorldConfig { +@@ -1220,6 +1228,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1230,6 +1239,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1249,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean caveSpiderRidable = false; -@@ -1237,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1247,6 +1257,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1248,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1269,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean chickenRidable = false; -@@ -1257,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1267,6 +1279,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1270,12 +1283,14 @@ public class PurpurWorldConfig { +@@ -1280,12 +1293,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1286,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1311,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean cowRidable = false; -@@ -1297,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1323,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1317,6 +1334,7 @@ public class PurpurWorldConfig { +@@ -1327,6 +1344,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean creeperRidable = false; -@@ -1329,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1357,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1345,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1355,6 +1374,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean dolphinRidable = false; -@@ -1356,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1366,6 +1386,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1371,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1402,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean donkeyRidableInWater = false; -@@ -1382,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1414,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1399,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1432,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean drownedRidable = false; -@@ -1411,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1445,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1427,12 +1452,14 @@ public class PurpurWorldConfig { +@@ -1437,12 +1462,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1443,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1480,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean enderDragonRidable = false; -@@ -1488,6 +1516,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1526,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1511,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1550,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean endermiteRidable = false; -@@ -1518,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1558,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1529,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1570,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean evokerRidable = false; -@@ -1537,6 +1569,7 @@ public class PurpurWorldConfig { +@@ -1547,6 +1579,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1549,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1592,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean foxRidable = false; -@@ -1559,6 +1593,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1603,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1573,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1618,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean frogRidable = false; -@@ -1594,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1604,6 +1640,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1606,6 +1643,7 @@ public class PurpurWorldConfig { +@@ -1616,6 +1653,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean giantRidable = false; -@@ -1619,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1667,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1640,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1689,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean glowSquidRidable = false; -@@ -1647,12 +1687,14 @@ public class PurpurWorldConfig { +@@ -1657,12 +1697,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean goatRidable = false; -@@ -1661,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1713,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1668,12 +1711,14 @@ public class PurpurWorldConfig { +@@ -1678,12 +1721,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1684,6 +1729,7 @@ public class PurpurWorldConfig { +@@ -1694,6 +1739,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean forceHalloweenSeason = false; -@@ -1699,6 +1745,7 @@ public class PurpurWorldConfig { +@@ -1709,6 +1755,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1711,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1768,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean horseRidableInWater = false; -@@ -1722,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1780,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1739,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1798,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean huskRidable = false; -@@ -1750,6 +1800,7 @@ public class PurpurWorldConfig { +@@ -1760,6 +1810,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1765,6 +1816,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1826,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean illusionerRidable = false; -@@ -1774,6 +1826,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1836,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1791,6 +1844,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1854,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ironGolemRidable = false; -@@ -1801,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1811,6 +1865,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1815,6 +1870,7 @@ public class PurpurWorldConfig { +@@ -1825,6 +1880,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean llamaRidable = false; -@@ -1829,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1895,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1849,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1859,6 +1916,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean magmaCubeRidable = false; -@@ -1859,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1927,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1873,6 +1932,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1942,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean mooshroomRidable = false; -@@ -1881,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1891,6 +1951,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1893,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1903,6 +1964,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean muleRidableInWater = false; -@@ -1904,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1914,6 +1976,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1921,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1931,6 +1994,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ocelotRidable = false; -@@ -1929,6 +1993,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2003,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1941,6 +2006,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2016,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pandaRidable = false; -@@ -1949,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1959,6 +2025,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1961,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1971,6 +2038,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean parrotRidable = false; -@@ -1970,6 +2038,7 @@ public class PurpurWorldConfig { +@@ -1980,6 +2048,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1983,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1993,6 +2062,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean phantomRidable = false; -@@ -2010,6 +2080,7 @@ public class PurpurWorldConfig { +@@ -2020,6 +2090,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2045,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2126,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pigRidable = false; -@@ -2054,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2136,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2067,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2077,6 +2150,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean piglinRidable = false; -@@ -2076,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2086,6 +2160,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2089,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2174,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean piglinBruteRidable = false; -@@ -2096,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2106,6 +2182,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2107,6 +2184,7 @@ public class PurpurWorldConfig { +@@ -2117,6 +2194,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pillagerRidable = false; -@@ -2115,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2125,6 +2203,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2127,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2216,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean polarBearRidable = false; -@@ -2137,6 +2217,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2227,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2152,12 +2233,14 @@ public class PurpurWorldConfig { +@@ -2162,12 +2243,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2168,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2178,6 +2261,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean rabbitRidable = false; -@@ -2179,6 +2263,7 @@ public class PurpurWorldConfig { +@@ -2189,6 +2273,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2194,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2204,6 +2289,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ravagerRidable = false; -@@ -2203,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2213,6 +2299,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2232,12 +2319,14 @@ public class PurpurWorldConfig { +@@ -2242,12 +2329,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2248,6 +2337,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2347,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean sheepRidable = false; -@@ -2257,6 +2347,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2357,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2270,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2280,6 +2371,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean shulkerRidable = false; -@@ -2283,6 +2375,7 @@ public class PurpurWorldConfig { +@@ -2293,6 +2385,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2300,6 +2393,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2403,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean silverfishRidable = false; -@@ -2308,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2412,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2320,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2330,6 +2425,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean skeletonRidable = false; -@@ -2327,6 +2423,7 @@ public class PurpurWorldConfig { +@@ -2337,6 +2433,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2338,6 +2435,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2445,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean skeletonHorseRidable = false; -@@ -2350,6 +2448,7 @@ public class PurpurWorldConfig { +@@ -2360,6 +2458,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2367,6 +2466,7 @@ public class PurpurWorldConfig { +@@ -2377,6 +2476,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean slimeRidable = false; -@@ -2377,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2387,6 +2487,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2391,6 +2492,7 @@ public class PurpurWorldConfig { +@@ -2401,6 +2502,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean snowGolemRidable = false; -@@ -2405,6 +2507,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2517,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2423,6 +2526,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2536,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean snifferRidable = false; -@@ -2445,6 +2549,7 @@ public class PurpurWorldConfig { +@@ -2455,6 +2559,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2458,6 +2563,7 @@ public class PurpurWorldConfig { +@@ -2468,6 +2573,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean spiderRidable = false; -@@ -2465,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2475,6 +2581,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2476,6 +2583,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2593,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean strayRidable = false; -@@ -2483,6 +2591,7 @@ public class PurpurWorldConfig { +@@ -2493,6 +2601,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2494,6 +2603,7 @@ public class PurpurWorldConfig { +@@ -2504,6 +2613,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean striderRidable = false; -@@ -2503,6 +2613,7 @@ public class PurpurWorldConfig { +@@ -2513,6 +2623,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2516,6 +2627,7 @@ public class PurpurWorldConfig { +@@ -2526,6 +2637,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean tadpoleRidable = false; -@@ -2538,6 +2650,7 @@ public class PurpurWorldConfig { +@@ -2548,6 +2660,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2557,12 +2670,14 @@ public class PurpurWorldConfig { +@@ -2567,12 +2680,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2573,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2583,6 +2698,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean turtleRidable = false; -@@ -2581,6 +2697,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2707,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2593,6 +2710,7 @@ public class PurpurWorldConfig { +@@ -2603,6 +2720,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean vexRidable = false; -@@ -2601,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2729,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2613,6 +2732,7 @@ public class PurpurWorldConfig { +@@ -2623,6 +2742,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean villagerRidable = false; -@@ -2628,6 +2748,7 @@ public class PurpurWorldConfig { +@@ -2638,6 +2758,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2647,6 +2768,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2778,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean vindicatorRidable = false; -@@ -2655,6 +2777,7 @@ public class PurpurWorldConfig { +@@ -2665,6 +2787,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2667,6 +2790,7 @@ public class PurpurWorldConfig { +@@ -2677,6 +2800,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wanderingTraderRidable = false; -@@ -2677,6 +2801,7 @@ public class PurpurWorldConfig { +@@ -2687,6 +2811,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2691,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2701,6 +2826,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wardenRidable = false; -@@ -2707,6 +2833,7 @@ public class PurpurWorldConfig { +@@ -2717,6 +2843,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2718,6 +2845,7 @@ public class PurpurWorldConfig { +@@ -2728,6 +2855,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean witherRidable = false; -@@ -2732,6 +2860,7 @@ public class PurpurWorldConfig { +@@ -2742,6 +2870,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2754,6 +2883,7 @@ public class PurpurWorldConfig { +@@ -2764,6 +2893,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean witherSkeletonRidable = false; -@@ -2761,6 +2891,7 @@ public class PurpurWorldConfig { +@@ -2771,6 +2901,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2772,6 +2903,7 @@ public class PurpurWorldConfig { +@@ -2782,6 +2913,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wolfRidable = false; -@@ -2783,6 +2915,7 @@ public class PurpurWorldConfig { +@@ -2793,6 +2925,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2802,6 +2935,7 @@ public class PurpurWorldConfig { +@@ -2812,6 +2945,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zoglinRidable = false; -@@ -2809,6 +2943,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2953,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2820,6 +2955,7 @@ public class PurpurWorldConfig { +@@ -2830,6 +2965,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieRidable = false; -@@ -2833,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2843,6 +2979,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2850,6 +2987,7 @@ public class PurpurWorldConfig { +@@ -2860,6 +2997,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieHorseRidable = false; -@@ -2863,6 +3001,7 @@ public class PurpurWorldConfig { +@@ -2873,6 +3011,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2881,6 +3020,7 @@ public class PurpurWorldConfig { +@@ -2891,6 +3030,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieVillagerRidable = false; -@@ -2895,6 +3035,7 @@ public class PurpurWorldConfig { +@@ -2905,6 +3045,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2913,6 +3054,7 @@ public class PurpurWorldConfig { +@@ -2923,6 +3064,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombifiedPiglinRidable = false; -@@ -2925,6 +3067,7 @@ public class PurpurWorldConfig { +@@ -2935,6 +3077,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2941,6 +3084,7 @@ public class PurpurWorldConfig { +@@ -2951,6 +3094,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0217-Grindstone-API.patch b/patches/server/0218-Grindstone-API.patch similarity index 95% rename from patches/server/0217-Grindstone-API.patch rename to patches/server/0218-Grindstone-API.patch index 84897e687..479f112fa 100644 --- a/patches/server/0217-Grindstone-API.patch +++ b/patches/server/0218-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index e9451ab9635b3040490a3cbbf0a2bdeb63fd3338..4ab03c778bff9c23eafb36e97fadc0ee416e89f0 100644 +index 5824636332eb35ae6bee9cc0661ee95901bb8c4b..1d181de9c8fd45b4d9f0230f80d5752ff5c1a432 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 14c0beabc..ade478c77 100644 --- a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b493eb542c3284ce1e748ca8f61312c6e0913991..b82024428de95ba18a21b4294ecc0fc52ad89fee 100644 +index 6e4990ef903e7a492da953662a2a2a99b051baca..d766e9da3cc01c82681c7d96426b705c9449724d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -538,6 +538,8 @@ public class PurpurWorldConfig { +@@ -548,6 +548,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index b493eb542c3284ce1e748ca8f61312c6e0913991..b82024428de95ba18a21b4294ecc0fc5 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -805,6 +807,8 @@ public class PurpurWorldConfig { +@@ -815,6 +817,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch index 4d99f9fb9..04a62a12f 100644 --- a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b82024428de95ba18a21b4294ecc0fc52ad89fee..f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc 100644 +index d766e9da3cc01c82681c7d96426b705c9449724d..e4c1fe03e5ca7fa91ca7fc26eb0ba12e18d009a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1060,11 +1060,13 @@ public class PurpurWorldConfig { +@@ -1070,11 +1070,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0220-Mob-head-visibility-percent.patch b/patches/server/0221-Mob-head-visibility-percent.patch similarity index 90% rename from patches/server/0220-Mob-head-visibility-percent.patch rename to patches/server/0221-Mob-head-visibility-percent.patch index 4dd20025d..91020ffb9 100644 --- a/patches/server/0220-Mob-head-visibility-percent.patch +++ b/patches/server/0221-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b8569998805da8 100644 +index 549579f2bc2e1fd23ece1ead543e3e5242f52ce0..119d2e57995fa20f34b88963b93c945ff87e0cab 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b85699 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46e07b93f1 100644 +index e4c1fe03e5ca7fa91ca7fc26eb0ba12e18d009a4..efcf075ec700e0d9f85a2e8b86580bc693dedf71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1364,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1371,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1382,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean dolphinRidable = false; -@@ -2157,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2167,6 +2169,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2171,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2184,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean piglinBruteRidable = false; -@@ -2430,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2440,6 +2444,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2442,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2457,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean skeletonHorseRidable = false; -@@ -2976,6 +2982,7 @@ public class PurpurWorldConfig { +@@ -2986,6 +2992,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2994,6 +3001,7 @@ public class PurpurWorldConfig { +@@ -3004,6 +3011,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0221-Configurable-valid-characters-for-usernames.patch b/patches/server/0222-Configurable-valid-characters-for-usernames.patch similarity index 94% rename from patches/server/0221-Configurable-valid-characters-for-usernames.patch rename to patches/server/0222-Configurable-valid-characters-for-usernames.patch index a201a978b..ca0221545 100644 --- a/patches/server/0221-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0222-Configurable-valid-characters-for-usernames.patch @@ -17,7 +17,7 @@ index 0bd191acb9596d3aa21c337230d26f09d26f6888..20211f40aeeade9217ece087688974bd return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 +index 9ded52a0022e33a6b69191b5fa758d6cc7eb076f..cd27c2a3343133d688592791bec2a031410ff93f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -452,4 +452,11 @@ public class PurpurConfig { diff --git a/patches/server/0222-Shears-can-have-looting-enchantment.patch b/patches/server/0223-Shears-can-have-looting-enchantment.patch similarity index 99% rename from patches/server/0222-Shears-can-have-looting-enchantment.patch rename to patches/server/0223-Shears-can-have-looting-enchantment.patch index bd8ac1e24..0f524214d 100644 --- a/patches/server/0222-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0223-Shears-can-have-looting-enchantment.patch @@ -139,7 +139,7 @@ index 754eb747179d9318bc5a3883e5622cc400c4e06c..4e929539cb093d58f3311d5f6a62bd1a this.generateShearedMushrooms(drops::add); return drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644 +index cd27c2a3343133d688592791bec2a031410ff93f..91d5c175752f6ee850adada6802c8af8f833d9c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -391,6 +391,7 @@ public class PurpurConfig { diff --git a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0223-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0224-Stop-bees-from-dying-after-stinging.patch index d65e11b3b..141ed0451 100644 --- a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c3fec906da62b627f2570f78f2d3d46e07b93f1..252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c 100644 +index efcf075ec700e0d9f85a2e8b86580bc693dedf71..32bf6874734bc1a34675298c473ef0b87a232010 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1165,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 0c3fec906da62b627f2570f78f2d3d46e07b93f1..252a1ab0c8cd7aaaf21a0683dc0611f9 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1171,6 +1172,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1182,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 98% rename from patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 97781867e..18cb6556b 100644 --- a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,7 +29,7 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644 +index 91d5c175752f6ee850adada6802c8af8f833d9c7..0d6b99822a3a743fe50362702afdca52f6a4a88e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -434,6 +434,11 @@ public class PurpurConfig { diff --git a/patches/server/0225-Configurable-farmland-trample-height.patch b/patches/server/0226-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0225-Configurable-farmland-trample-height.patch rename to patches/server/0226-Configurable-farmland-trample-height.patch index ad933891a..cac8e6958 100644 --- a/patches/server/0225-Configurable-farmland-trample-height.patch +++ b/patches/server/0226-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c..9a920c2bb3efa5754245b76aa13a81ca01028fc1 100644 +index 32bf6874734bc1a34675298c473ef0b87a232010..d2eed1d2695b0baf3bec82cb4220f2f9390b3228 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -958,6 +958,7 @@ public class PurpurWorldConfig { +@@ -968,6 +968,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c..9a920c2bb3efa5754245b76aa13a81ca private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -965,6 +966,7 @@ public class PurpurWorldConfig { +@@ -975,6 +976,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0226-Configurable-player-pickup-exp-delay.patch b/patches/server/0227-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0226-Configurable-player-pickup-exp-delay.patch rename to patches/server/0227-Configurable-player-pickup-exp-delay.patch index dbf7216d1..be59bd6d2 100644 --- a/patches/server/0226-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0227-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 0460bdb52ce6b29cf57ef8f2d7f430e761c82d85..845c4af5d5d38d54de4a1b20fe32bf5d } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a920c2bb3efa5754245b76aa13a81ca01028fc1..e687752dafb2daa5ecc638171e4e8730e7d877c7 100644 +index d2eed1d2695b0baf3bec82cb4220f2f9390b3228..62c1ca38ab9f5fe748ac802b9cd15576736fd16f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -418,6 +418,7 @@ public class PurpurWorldConfig { +@@ -428,6 +428,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 9a920c2bb3efa5754245b76aa13a81ca01028fc1..e687752dafb2daa5ecc638171e4e8730 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -453,6 +454,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0227-Allow-void-trading.patch b/patches/server/0228-Allow-void-trading.patch similarity index 93% rename from patches/server/0227-Allow-void-trading.patch rename to patches/server/0228-Allow-void-trading.patch index ac513522d..3296179f1 100644 --- a/patches/server/0227-Allow-void-trading.patch +++ b/patches/server/0228-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb0 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e687752dafb2daa5ecc638171e4e8730e7d877c7..1cce789eedff397dc3c2a1edcd2991bc9925f5cb 100644 +index 62c1ca38ab9f5fe748ac802b9cd15576736fd16f..72d97b4ee263f52b91bb901a9443c7fcbd0ad458 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -419,6 +419,7 @@ public class PurpurWorldConfig { +@@ -429,6 +429,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index e687752dafb2daa5ecc638171e4e8730e7d877c7..1cce789eedff397dc3c2a1edcd2991bc private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -445,6 +446,7 @@ public class PurpurWorldConfig { +@@ -455,6 +456,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0228-Configurable-phantom-size.patch b/patches/server/0229-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0228-Configurable-phantom-size.patch rename to patches/server/0229-Configurable-phantom-size.patch index c963273a3..18e9653ec 100644 --- a/patches/server/0228-Configurable-phantom-size.patch +++ b/patches/server/0229-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1cce789eedff397dc3c2a1edcd2991bc9925f5cb..ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd 100644 +index 72d97b4ee263f52b91bb901a9443c7fcbd0ad458..5b2cce70f98cd381bf0745bbc267d38a394afc74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2097,6 +2097,8 @@ public class PurpurWorldConfig { +@@ -2107,6 +2107,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 1cce789eedff397dc3c2a1edcd2991bc9925f5cb..ae0ad49d5efc06550a27c40c49f3c4b9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2133,6 +2135,13 @@ public class PurpurWorldConfig { +@@ -2143,6 +2145,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0229-Max-joins-per-second.patch b/patches/server/0230-Max-joins-per-second.patch similarity index 96% rename from patches/server/0229-Max-joins-per-second.patch rename to patches/server/0230-Max-joins-per-second.patch index 46482bbe9..ca1fd577b 100644 --- a/patches/server/0229-Max-joins-per-second.patch +++ b/patches/server/0230-Max-joins-per-second.patch @@ -31,7 +31,7 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644 +index 0d6b99822a3a743fe50362702afdca52f6a4a88e..5879af630bc3711a17d51f455585ccd31f7a6d88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -456,8 +456,10 @@ public class PurpurConfig { diff --git a/patches/server/0230-Configurable-minimum-demand-for-trades.patch b/patches/server/0231-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0230-Configurable-minimum-demand-for-trades.patch rename to patches/server/0231-Configurable-minimum-demand-for-trades.patch index c47c3f1d3..da87e474d 100644 --- a/patches/server/0230-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0231-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd..95382bac24be84f0232930373e8d6128b76a8554 100644 +index 5b2cce70f98cd381bf0745bbc267d38a394afc74..a4bfd2b0e9b98c64c4309a7f660ed01c30ef09f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2778,6 +2778,7 @@ public class PurpurWorldConfig { +@@ -2788,6 +2788,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd..95382bac24be84f0232930373e8d6128 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2798,6 +2799,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2809,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0231-Lobotomize-stuck-villagers.patch b/patches/server/0232-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0231-Lobotomize-stuck-villagers.patch rename to patches/server/0232-Lobotomize-stuck-villagers.patch index 0582fd7cc..0561660f0 100644 --- a/patches/server/0231-Lobotomize-stuck-villagers.patch +++ b/patches/server/0232-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95382bac24be84f0232930373e8d6128b76a8554..158d802ce38a9ae6c222cfa9e4a70806bd6eff51 100644 +index a4bfd2b0e9b98c64c4309a7f660ed01c30ef09f0..62de4877eb54fcb11a4f29e08b1b738a0fcd4076 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2779,6 +2779,9 @@ public class PurpurWorldConfig { +@@ -2789,6 +2789,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 95382bac24be84f0232930373e8d6128b76a8554..158d802ce38a9ae6c222cfa9e4a70806 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2800,6 +2803,18 @@ public class PurpurWorldConfig { +@@ -2810,6 +2813,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0232-Option-for-villager-display-trade-item.patch b/patches/server/0233-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0232-Option-for-villager-display-trade-item.patch rename to patches/server/0233-Option-for-villager-display-trade-item.patch index 935342875..ecce9cc98 100644 --- a/patches/server/0232-Option-for-villager-display-trade-item.patch +++ b/patches/server/0233-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 158d802ce38a9ae6c222cfa9e4a70806bd6eff51..5c2639e142d04fee6c467292b1173917213a537c 100644 +index 62de4877eb54fcb11a4f29e08b1b738a0fcd4076..cc004ccc5bf2e2c2f908fc6d59f3cb7647da3fc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2782,6 +2782,7 @@ public class PurpurWorldConfig { +@@ -2792,6 +2792,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 158d802ce38a9ae6c222cfa9e4a70806bd6eff51..5c2639e142d04fee6c467292b1173917 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2815,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2825,6 +2826,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 9002b9b19..451414c52 100644 --- a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a22 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c2639e142d04fee6c467292b1173917213a537c..ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63 100644 +index cc004ccc5bf2e2c2f908fc6d59f3cb7647da3fc9..3388478292e8e445f6da2ede9c44884467d551b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1047,8 +1047,10 @@ public class PurpurWorldConfig { +@@ -1057,8 +1057,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch index 7e1716dda..ce8f814a7 100644 --- a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 24f002e44a7a485026a814c898b8569998805da8..580e01281f27a4cd1d3a243a7d4791b88910b5bb 100644 +index 119d2e57995fa20f34b88963b93c945ff87e0cab..36022a0ab50655363d26be7dba765e2261baccdf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1561,13 +1561,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index 1a8a76aa31bd1d1670be6e9cada162c540084cf9..b452ebbe11145987fb5e66b399938984 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63..6dd04e6b344f1cfc32f3161832c9012ef5b83ee8 100644 +index 3388478292e8e445f6da2ede9c44884467d551b7..8f5ec67822c4e1619784e6efbc70d726692d13c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,7 @@ public class PurpurWorldConfig { +@@ -143,6 +143,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63..6dd04e6b344f1cfc32f3161832c9012e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -165,6 +166,7 @@ public class PurpurWorldConfig { +@@ -175,6 +176,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0235-Anvil-repair-damage-options.patch b/patches/server/0236-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0235-Anvil-repair-damage-options.patch rename to patches/server/0236-Anvil-repair-damage-options.patch index 55bf79728..59081445d 100644 --- a/patches/server/0235-Anvil-repair-damage-options.patch +++ b/patches/server/0236-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dd04e6b344f1cfc32f3161832c9012ef5b83ee8..4b70ba95de6c238f6d085b343e97a4cdc521eaf7 100644 +index 8f5ec67822c4e1619784e6efbc70d726692d13c5..8e66301da7706679c480f29843a6828bb5d93c07 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -819,9 +819,13 @@ public class PurpurWorldConfig { +@@ -829,9 +829,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 44abee64a..dbdd44bfc 100644 --- a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b70ba95de6c238f6d085b343e97a4cdc521eaf7..1c9ecab6a0fe5da259fa1c080374dab8bd446911 100644 +index 8e66301da7706679c480f29843a6828bb5d93c07..8d5cedccedc8c8bcd32a4313c95bfa4f738c5259 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1075,12 +1075,14 @@ public class PurpurWorldConfig { +@@ -1085,12 +1085,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch similarity index 98% rename from patches/server/0237-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0238-Add-toggle-for-enchant-level-clamping.patch index 5e4013324..e1bddbfc0 100644 --- a/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch @@ -59,7 +59,7 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644 +index 5879af630bc3711a17d51f455585ccd31f7a6d88..7462474f7eff9f50644d0b7ceac341f237c93df0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -398,6 +398,7 @@ public class PurpurConfig { diff --git a/patches/server/0238-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0239-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0238-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0239-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch index 224aaf71a..02e278df0 100644 --- a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c9ecab6a0fe5da259fa1c080374dab8bd446911..e115fe44b20b1e6231d752770c27c4354f2a942c 100644 +index 8d5cedccedc8c8bcd32a4313c95bfa4f738c5259..78ce078a2b85f68d5c43fdf39ed4d60c8f10f65f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2793,6 +2793,8 @@ public class PurpurWorldConfig { +@@ -2803,6 +2803,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 1c9ecab6a0fe5da259fa1c080374dab8bd446911..e115fe44b20b1e6231d752770c27c435 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2827,6 +2829,8 @@ public class PurpurWorldConfig { +@@ -2837,6 +2839,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0240-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch similarity index 96% rename from patches/server/0240-Stonecutter-damage.patch rename to patches/server/0241-Stonecutter-damage.patch index 0e0adcbc4..b0d080371 100644 --- a/patches/server/0240-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -54,7 +54,7 @@ index 894668c96ac36e737910a25cf89651236246200c..812091bf6efc067b21b9723b8241360d } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index 32c0a2df609acc1ecdd5a0a98a997b2f33525621..f0568c3d731afaf610ac2f45db53148d38338cdf 100644 +index 13b596a1e06fa66396c43a6c72659d4342bf6549..5ffe772e29dfd422b664e8123e7f5cf396158674 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -45,12 +45,14 @@ public class DamageSources { @@ -128,7 +128,7 @@ index a49193a023bbd9b65bcd3652dc9c241720500755..6fed586c9a778f7a57e1b4ca2e6f2dbc } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644 +index 7462474f7eff9f50644d0b7ceac341f237c93df0..cb8f67f0ad3531b110613c0ffb3c0cc23da23529 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -143,10 +143,10 @@ index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc045760154 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e115fe44b20b1e6231d752770c27c4354f2a942c..97d7a74c1e6879b2a67c4243b03c35e998773faf 100644 +index 78ce078a2b85f68d5c43fdf39ed4d60c8f10f65f..d1fd7727b7ada1ac1390a7eb1832c35706d8b209 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,6 +1070,11 @@ public class PurpurWorldConfig { +@@ -1080,6 +1080,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch similarity index 93% rename from patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch index a69aacde4..6296cfecd 100644 --- a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30feb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97d7a74c1e6879b2a67c4243b03c35e998773faf..3d06c206b65a1288c72817f82cfa5b9e5ae026ee 100644 +index d1fd7727b7ada1ac1390a7eb1832c35706d8b209..1d0accb74cedf842fb6f8e726943b9ddee582e4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1016,6 +1016,13 @@ public class PurpurWorldConfig { +@@ -1026,6 +1026,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0242-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0243-Add-config-for-snow-on-blue-ice.patch index 75d067b63..a09a64e07 100644 --- a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d06c206b65a1288c72817f82cfa5b9e5ae026ee..dd72530cfa9f1790ebab063e094c255d597dba8a 100644 +index 1d0accb74cedf842fb6f8e726943b9ddee582e4a..335cb3101af8fdf7b8518f847cf54d06e079459e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -997,9 +997,11 @@ public class PurpurWorldConfig { +@@ -1007,9 +1007,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0243-Skeletons-eat-wither-roses.patch b/patches/server/0244-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0243-Skeletons-eat-wither-roses.patch rename to patches/server/0244-Skeletons-eat-wither-roses.patch index c3862e7ab..a79e1c466 100644 --- a/patches/server/0243-Skeletons-eat-wither-roses.patch +++ b/patches/server/0244-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 1aae461eed332fe31c1449c47d0928f655c740da..9eb6ed001bfc578311300977dda6f3f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd72530cfa9f1790ebab063e094c255d597dba8a..66c9464f6c4241c3a14a4057a216418fd5ab067e 100644 +index 335cb3101af8fdf7b8518f847cf54d06e079459e..3745acb6de975db70c78493907eb8784d3a10d75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2476,6 +2476,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2486,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index dd72530cfa9f1790ebab063e094c255d597dba8a..66c9464f6c4241c3a14a4057a216418f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2489,6 +2490,7 @@ public class PurpurWorldConfig { +@@ -2499,6 +2500,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0244-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0244-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 834e303f8..f420bb114 100644 --- a/patches/server/0244-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 66c9464f6c4241c3a14a4057a216418fd5ab067e..8ad6437173dd39aa7415709efc8f65404abf7bd9 100644 +index 3745acb6de975db70c78493907eb8784d3a10d75..71795b553145ae497c31947f5fbb03574a860767 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1513,6 +1513,11 @@ public class PurpurWorldConfig { +@@ -1523,6 +1523,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0245-Spark-Profiler.patch b/patches/server/0246-Spark-Profiler.patch similarity index 100% rename from patches/server/0245-Spark-Profiler.patch rename to patches/server/0246-Spark-Profiler.patch diff --git a/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch index aef122660..ea255b08c 100644 --- a/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,7 +18,7 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 07d6455c781b8743a833cbc04576015433686c4b..d038e62a0151e3b5c9dee06f1b2682684d0b496e 100644 +index cb8f67f0ad3531b110613c0ffb3c0cc23da23529..620f1207fc773f8602b748128557f1c73f0319fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -461,9 +461,11 @@ public class PurpurConfig { diff --git a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch index a9326ca70..43c83bb39 100644 --- a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ad6437173dd39aa7415709efc8f65404abf7bd9..0811baed3de98fa011f191afeedb5cccd1a0ef4b 100644 +index 71795b553145ae497c31947f5fbb03574a860767..c94463436d3bb8c6658f489746db450896fd14fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1056,6 +1056,11 @@ public class PurpurWorldConfig { +@@ -1066,6 +1066,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0248-Config-to-not-let-coral-die.patch b/patches/server/0249-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0248-Config-to-not-let-coral-die.patch rename to patches/server/0249-Config-to-not-let-coral-die.patch index dce57f281..1532269c0 100644 --- a/patches/server/0248-Config-to-not-let-coral-die.patch +++ b/patches/server/0249-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0811baed3de98fa011f191afeedb5cccd1a0ef4b..2e7b471b23694cdce1b8017c14e1f2ca62b90538 100644 +index c94463436d3bb8c6658f489746db450896fd14fa..7b447d350029ecdb5a6539e15d3adbc4dcb05c59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -903,6 +903,11 @@ public class PurpurWorldConfig { +@@ -913,6 +913,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0249-Add-local-difficulty-api.patch b/patches/server/0250-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0249-Add-local-difficulty-api.patch rename to patches/server/0250-Add-local-difficulty-api.patch diff --git a/patches/server/0250-Add-toggle-for-RNG-manipulation.patch b/patches/server/0251-Add-toggle-for-RNG-manipulation.patch similarity index 95% rename from patches/server/0250-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0251-Add-toggle-for-RNG-manipulation.patch index bc62eb562..2e00d9f13 100644 --- a/patches/server/0250-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0251-Add-toggle-for-RNG-manipulation.patch @@ -33,10 +33,10 @@ index b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e7b471b23694cdce1b8017c14e1f2ca62b90538..da2bde5acf5a2e79ad2885f4727844e85de5ca0d 100644 +index 7b447d350029ecdb5a6539e15d3adbc4dcb05c59..add6e4eb827831478b33502aeb74a230bcd072fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -202,9 +202,11 @@ public class PurpurWorldConfig { +@@ -212,9 +212,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0251-Remove-Timings.patch b/patches/server/0252-Remove-Timings.patch similarity index 100% rename from patches/server/0251-Remove-Timings.patch rename to patches/server/0252-Remove-Timings.patch diff --git a/patches/server/0252-Remove-Mojang-Profiler.patch b/patches/server/0253-Remove-Mojang-Profiler.patch similarity index 99% rename from patches/server/0252-Remove-Mojang-Profiler.patch rename to patches/server/0253-Remove-Mojang-Profiler.patch index 48bd9762b..482365b9c 100644 --- a/patches/server/0252-Remove-Mojang-Profiler.patch +++ b/patches/server/0253-Remove-Mojang-Profiler.patch @@ -1211,7 +1211,7 @@ index 68e8f9913055219486ce19d95dcf9d7c76e08082..2c3ad553272ad651e6ca26917719e6d9 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 580e01281f27a4cd1d3a243a7d4791b88910b5bb..5e979618feda785d3f36cf085e72eed23bdd3f22 100644 +index 36022a0ab50655363d26be7dba765e2261baccdf..09cbc472d89d7d8730aedb76ef584b1ff159756b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0254-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0254-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0254-Add-Bee-API.patch b/patches/server/0255-Add-Bee-API.patch similarity index 100% rename from patches/server/0254-Add-Bee-API.patch rename to patches/server/0255-Add-Bee-API.patch diff --git a/patches/server/0255-Debug-Marker-API.patch b/patches/server/0256-Debug-Marker-API.patch similarity index 100% rename from patches/server/0255-Debug-Marker-API.patch rename to patches/server/0256-Debug-Marker-API.patch diff --git a/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch index 0c8370562..3b71d823b 100644 --- a/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da2bde5acf5a2e79ad2885f4727844e85de5ca0d..d678fbb4ea310b4f833f131618ed5901f1eebd7e 100644 +index add6e4eb827831478b33502aeb74a230bcd072fb..79577d858edda20329e91520e0c0f66254272838 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -375,6 +375,7 @@ public class PurpurWorldConfig { +@@ -385,6 +385,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index da2bde5acf5a2e79ad2885f4727844e85de5ca0d..d678fbb4ea310b4f833f131618ed5901 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -383,6 +384,7 @@ public class PurpurWorldConfig { +@@ -393,6 +394,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0257-Add-skeleton-bow-accuracy-option.patch b/patches/server/0258-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0257-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0258-Add-skeleton-bow-accuracy-option.patch index 2688c8cb2..af8f5577b 100644 --- a/patches/server/0257-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0258-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e4592768 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d678fbb4ea310b4f833f131618ed5901f1eebd7e..af8be03143ea89af74ba86b6c0777c13e2eb7121 100644 +index 79577d858edda20329e91520e0c0f66254272838..4cf4d2c3fef588cc4fbda4d27a08c7e34f11c1e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2496,6 +2496,8 @@ public class PurpurWorldConfig { +@@ -2506,6 +2506,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index d678fbb4ea310b4f833f131618ed5901f1eebd7e..af8be03143ea89af74ba86b6c0777c13 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2510,6 +2512,18 @@ public class PurpurWorldConfig { +@@ -2520,6 +2522,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0258-Add-death-screen-API.patch b/patches/server/0259-Add-death-screen-API.patch similarity index 100% rename from patches/server/0258-Add-death-screen-API.patch rename to patches/server/0259-Add-death-screen-API.patch diff --git a/patches/server/0259-Implement-ram-and-rambar-commands.patch b/patches/server/0260-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0259-Implement-ram-and-rambar-commands.patch rename to patches/server/0260-Implement-ram-and-rambar-commands.patch index 63ca55dde..845f5a78e 100644 --- a/patches/server/0259-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0260-Implement-ram-and-rambar-commands.patch @@ -60,7 +60,7 @@ index 826b7e2bb897609a084555632f691ddb38882058..42a623254bd2886d09eb0cfeb01dd12d // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d038e62a0151e3b5c9dee06f1b2682684d0b496e..b94f7b882405345f6154383beaef8d89673726c9 100644 +index 620f1207fc773f8602b748128557f1c73f0319fb..62612451c23bb146e82f4082ca8677e5dc57a08f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 2f4116d77..66fc363c9 100644 --- a/patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -86,7 +86,7 @@ index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b94f7b882405345f6154383beaef8d89673726c9..9cda9416f015356a57c28fa5e4f62987f72c15f1 100644 +index 62612451c23bb146e82f4082ca8677e5dc57a08f..3b3d5bd9e645f440e033abd3c234a017972efa59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -497,4 +497,9 @@ public class PurpurConfig { diff --git a/patches/server/0261-Configurable-block-blast-resistance.patch b/patches/server/0262-Configurable-block-blast-resistance.patch similarity index 96% rename from patches/server/0261-Configurable-block-blast-resistance.patch rename to patches/server/0262-Configurable-block-blast-resistance.patch index 5067e60fa..482d21fe3 100644 --- a/patches/server/0261-Configurable-block-blast-resistance.patch +++ b/patches/server/0262-Configurable-block-blast-resistance.patch @@ -18,7 +18,7 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9cda9416f015356a57c28fa5e4f62987f72c15f1..bddf643f229d2a62746d89133e7013f1a3fafb45 100644 +index 3b3d5bd9e645f440e033abd3c234a017972efa59..b2207e2baed339adb1594f19f9a3d4a709669935 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -502,4 +502,19 @@ public class PurpurConfig { diff --git a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch b/patches/server/0263-Configurable-block-fall-damage-modifiers.patch similarity index 96% rename from patches/server/0262-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0263-Configurable-block-fall-damage-modifiers.patch index a56fb6709..541a9698e 100644 --- a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0263-Configurable-block-fall-damage-modifiers.patch @@ -18,7 +18,7 @@ index 549e3dd09a91ddf319fe0c1ec09924cbb600c1b8..a4a988ab1399702b943019e9c4e2cde3 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..c6ed00f89127a2857dfb9ce9e04513e5cf510dfb 100644 +index 7ffe51eedc9d086424cf450026bdc260249864c4..5ae3decf100d21f7d4a471c155eaf5e00e996580 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -89,6 +89,10 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -32,7 +32,7 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..c6ed00f89127a2857dfb9ce9e04513e5 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -467,7 +471,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -486,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,7 +54,7 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bddf643f229d2a62746d89133e7013f1a3fafb45..05c90e15cd487335840c7841874ebb99c576e1cc 100644 +index b2207e2baed339adb1594f19f9a3d4a709669935..508b094272bede66826ad0f4908f115454b7d4f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -517,4 +517,50 @@ public class PurpurConfig { diff --git a/patches/server/0263-Language-API.patch b/patches/server/0264-Language-API.patch similarity index 100% rename from patches/server/0263-Language-API.patch rename to patches/server/0264-Language-API.patch diff --git a/patches/server/0264-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0265-Milk-Keeps-Beneficial-Effects.patch similarity index 86% rename from patches/server/0264-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0265-Milk-Keeps-Beneficial-Effects.patch index af54814e3..de09bd418 100644 --- a/patches/server/0264-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0265-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5e979618feda785d3f36cf085e72eed23bdd3f22..fa698cfefccdddf5e5e9938a2959004c70f743a7 100644 +index 09cbc472d89d7d8730aedb76ef584b1ff159756b..53ff232129443ba3242cfc57fc57026bf76d96e8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1154,6 +1154,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,7 +30,7 @@ index 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af8be03143ea89af74ba86b6c0777c13e2eb7121..af8819ef2c6edc91e6ba2c11f31b677bf136117e 100644 +index 4cf4d2c3fef588cc4fbda4d27a08c7e34f11c1e6..80b329b028f5224ce6a9d9ea64c92c633548fcb8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { @@ -40,12 +40,12 @@ index af8be03143ea89af74ba86b6c0777c13e2eb7121..af8819ef2c6edc91e6ba2c11f31b677b + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; - public boolean projectilesBypassMobGriefing = false; -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { + public boolean persistentTileEntityLore = false; +@@ -155,6 +156,7 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); - persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); - projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); + if (PurpurConfig.version < 35) { + boolean oldVal = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityLore); diff --git a/patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0267-Add-log-suppression-for-LibraryLoader.patch similarity index 94% rename from patches/server/0266-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0267-Add-log-suppression-for-LibraryLoader.patch index aa5f01e9a..88afdd468 100644 --- a/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0267-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 05c90e15cd487335840c7841874ebb99c576e1cc..33011a76cf02d7fa2860432ad13a8666e6094b4a 100644 +index 508b094272bede66826ad0f4908f115454b7d4f2..16273aec24a4824557c0cfb2af2ac782a7a7ab75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -470,11 +470,14 @@ public class PurpurConfig { diff --git a/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch index b8349c464..7f9529f5f 100644 --- a/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af8819ef2c6edc91e6ba2c11f31b677bf136117e..a3da09a662603d90da4e343e400227e317b4bf24 100644 +index 80b329b028f5224ce6a9d9ea64c92c633548fcb8..396721bdc1a2bc58bd9d475d454d8f558299ac03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1403,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index af8819ef2c6edc91e6ba2c11f31b677bf136117e..a3da09a662603d90da4e343e400227e3 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1421,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1432,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0268-Fire-Immunity-API.patch b/patches/server/0269-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0268-Fire-Immunity-API.patch rename to patches/server/0269-Fire-Immunity-API.patch diff --git a/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 0253810b8..502e40e86 100644 --- a/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,10 +17,10 @@ index 7a27388b5155e7b2478b0daa02cb616829a5d4a2..3aae4fa4176c0bf170f4532ae187e312 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3da09a662603d90da4e343e400227e317b4bf24..f7eba6f2e188ee5504db11feb6b433c46b82f374 100644 +index 396721bdc1a2bc58bd9d475d454d8f558299ac03..4ec1c7efc14edc4245c141bf75f00066dd329ecf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -415,6 +415,7 @@ public class PurpurWorldConfig { +@@ -425,6 +425,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index a3da09a662603d90da4e343e400227e317b4bf24..f7eba6f2e188ee5504db11feb6b433c4 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -442,6 +443,7 @@ public class PurpurWorldConfig { +@@ -452,6 +453,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0270-Added-got-ram-event.patch b/patches/server/0271-Added-got-ram-event.patch similarity index 100% rename from patches/server/0270-Added-got-ram-event.patch rename to patches/server/0271-Added-got-ram-event.patch diff --git a/patches/server/0271-Log-skipped-entity-s-position.patch b/patches/server/0272-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0271-Log-skipped-entity-s-position.patch rename to patches/server/0272-Log-skipped-entity-s-position.patch diff --git a/patches/server/0272-End-Crystal-Cramming.patch b/patches/server/0273-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0272-End-Crystal-Cramming.patch rename to patches/server/0273-End-Crystal-Cramming.patch index 01113d3f5..0b23b567e 100644 --- a/patches/server/0272-End-Crystal-Cramming.patch +++ b/patches/server/0273-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdb // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f7eba6f2e188ee5504db11feb6b433c46b82f374..1c31adc9bebd8a282719ecc16d60bd45672507fe 100644 +index 4ec1c7efc14edc4245c141bf75f00066dd329ecf..c2a1038235d4883bf4440c90e13c2d9fc399178b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -946,6 +946,7 @@ public class PurpurWorldConfig { +@@ -956,6 +956,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index f7eba6f2e188ee5504db11feb6b433c46b82f374..1c31adc9bebd8a282719ecc16d60bd45 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -973,6 +974,7 @@ public class PurpurWorldConfig { +@@ -983,6 +984,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index b7c21f3d7..747628bc0 100644 --- a/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index 2b9cc89a2e71b523c90bbfa987b0f8352efff95a..5ad48d2003fbd83e60f6faa685324961 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c31adc9bebd8a282719ecc16d60bd45672507fe..9702ce32484954ec0aa4828315df443c1f518ec2 100644 +index c2a1038235d4883bf4440c90e13c2d9fc399178b..5b54dcf2d352aa4f998d887fe2d8455b396794a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -845,11 +845,13 @@ public class PurpurWorldConfig { +@@ -855,11 +855,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch similarity index 97% rename from patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch index a3570be64..8eba08dd9 100644 --- a/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch @@ -39,7 +39,7 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 33011a76cf02d7fa2860432ad13a8666e6094b4a..7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8 100644 +index 16273aec24a4824557c0cfb2af2ac782a7a7ab75..e7bce4121f7bc2fe0acd8860a73c58dfed73330b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -506,6 +506,16 @@ public class PurpurConfig { diff --git a/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0276-Config-to-remove-explosion-radius-clamp.patch similarity index 93% rename from patches/server/0275-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0276-Config-to-remove-explosion-radius-clamp.patch index 574d2b886..33bb5f8c5 100644 --- a/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0276-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index 6379b3b8e633d1a16532b4664e53fa5afa616ab6..69d8ff6a97335b6fe4b20a8229a77f25 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9702ce32484954ec0aa4828315df443c1f518ec2..b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd 100644 +index 5b54dcf2d352aa4f998d887fe2d8455b396794a2..77308b060ef41c4782ef8fa92556e41c4bc8dcb0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -211,6 +211,11 @@ public class PurpurWorldConfig { +@@ -221,6 +221,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0277-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0277-bonemealable-sugarcane-cactus-and-netherwart.patch index 6911c8b0a..ff664b460 100644 --- a/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0277-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd..3ad00e226f40685bc68fdb16712876b37a98f5d9 100644 +index 77308b060ef41c4782ef8fa92556e41c4bc8dcb0..7af01c62e227e4a82b97b14aec8194f5b7cf481f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -899,8 +899,20 @@ public class PurpurWorldConfig { +@@ -909,8 +909,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0277-Add-PreExplodeEvents.patch b/patches/server/0278-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0277-Add-PreExplodeEvents.patch rename to patches/server/0278-Add-PreExplodeEvents.patch diff --git a/patches/server/0278-Improve-output-of-plugins-command.patch b/patches/server/0279-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0278-Improve-output-of-plugins-command.patch rename to patches/server/0279-Improve-output-of-plugins-command.patch diff --git a/patches/server/0279-Add-mending-multiplier.patch b/patches/server/0280-Add-mending-multiplier.patch similarity index 93% rename from patches/server/0279-Add-mending-multiplier.patch rename to patches/server/0280-Add-mending-multiplier.patch index 7e09aacf8..3ea944ada 100644 --- a/patches/server/0279-Add-mending-multiplier.patch +++ b/patches/server/0280-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index ce608784e0e35b67dde377436aaf42c956ce0644..f5debc8ddc496cd3e2d8b253511ee5cc public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ad00e226f40685bc68fdb16712876b37a98f5d9..ea64ee3480b12e1c711e55705a2b792c0f473f32 100644 +index 7af01c62e227e4a82b97b14aec8194f5b7cf481f..7fe4cb6bea84ad24ec2f1d7fe2f21fecbb0fc348 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { @@ -38,7 +38,7 @@ index 3ad00e226f40685bc68fdb16712876b37a98f5d9..ea64ee3480b12e1c711e55705a2b792c public boolean alwaysTameInCreative = false; public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; -@@ -145,6 +146,7 @@ public class PurpurWorldConfig { +@@ -147,6 +148,7 @@ public class PurpurWorldConfig { public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0280-Make-GUI-Great-Again.patch b/patches/server/0281-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0280-Make-GUI-Great-Again.patch rename to patches/server/0281-Make-GUI-Great-Again.patch diff --git a/patches/server/0281-Stored-Bee-API.patch b/patches/server/0282-Stored-Bee-API.patch similarity index 100% rename from patches/server/0281-Stored-Bee-API.patch rename to patches/server/0282-Stored-Bee-API.patch diff --git a/patches/server/0282-Shears-can-defuse-TNT.patch b/patches/server/0283-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0282-Shears-can-defuse-TNT.patch rename to patches/server/0283-Shears-can-defuse-TNT.patch index cf09e3ed9..8716633da 100644 --- a/patches/server/0282-Shears-can-defuse-TNT.patch +++ b/patches/server/0283-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea64ee3480b12e1c711e55705a2b792c0f473f32..71d22e8966e24120dc00f79810251341fd243fc1 100644 +index 7fe4cb6bea84ad24ec2f1d7fe2f21fecbb0fc348..15e0e921e60e11d74b0a58135c81a040731f5c7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3267,4 +3267,11 @@ public class PurpurWorldConfig { +@@ -3277,4 +3277,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0283-Explorer-Map-API.patch b/patches/server/0284-Explorer-Map-API.patch similarity index 100% rename from patches/server/0283-Explorer-Map-API.patch rename to patches/server/0284-Explorer-Map-API.patch diff --git a/patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch index cb5cab1f7..c51e83db2 100644 --- a/patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71d22e8966e24120dc00f79810251341fd243fc1..bb965615c778f38e0de6853b4271e39af436e384 100644 +index 15e0e921e60e11d74b0a58135c81a040731f5c7e..bab93aaa84e4cd0a8c6e3a6dede84fd497d63d03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2082,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2092,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 71d22e8966e24120dc00f79810251341fd243fc1..bb965615c778f38e0de6853b4271e39a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2095,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2106,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 3149bf48c..f1049a992 100644 --- a/patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index e25af9af8f87e6762716749c367658bf6bda9e34..b7d5c0b0e3741fcf04c4bac21a82fc41 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb965615c778f38e0de6853b4271e39af436e384..dc85580bd895babb6e10cefe1ab9eee3d3178959 100644 +index bab93aaa84e4cd0a8c6e3a6dede84fd497d63d03..3092afc7ed608a36edddc6a149b25742ffd38fb8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2261,6 +2261,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index bb965615c778f38e0de6853b4271e39af436e384..dc85580bd895babb6e10cefe1ab9eee3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2266,6 +2267,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2277,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 97% rename from patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch index b2db4abbe..84ea3ef77 100644 --- a/patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,7 +31,7 @@ index 812091bf6efc067b21b9723b8241360d4b4c79e7..25e614be19b2b29b36af136b823f27f8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8..d7df39dc0937f37746b17bbad810478d11736f4b 100644 +index e7bce4121f7bc2fe0acd8860a73c58dfed73330b..6e0e871153e0ec85fd40ddf0581b6ed2932b9f99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -576,4 +576,9 @@ public class PurpurConfig { diff --git a/patches/server/0287-place-end-crystal-on-any-block.patch b/patches/server/0288-place-end-crystal-on-any-block.patch similarity index 91% rename from patches/server/0287-place-end-crystal-on-any-block.patch rename to patches/server/0288-place-end-crystal-on-any-block.patch index 4f365c3c2..fb2f41d56 100644 --- a/patches/server/0287-place-end-crystal-on-any-block.patch +++ b/patches/server/0288-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc85580bd895babb6e10cefe1ab9eee3d3178959..5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8 100644 +index 3092afc7ed608a36edddc6a149b25742ffd38fb8..fd596f0e27ecf722cdd90797f4c3ed5b8b4e10e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -968,6 +968,7 @@ public class PurpurWorldConfig { +@@ -978,6 +978,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index dc85580bd895babb6e10cefe1ab9eee3d3178959..5d609c0d67d59c35d9c5ee96dcf2ff0c private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -996,6 +997,7 @@ public class PurpurWorldConfig { +@@ -1006,6 +1007,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch index 107ab9938..ec825696c 100644 --- a/patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8..7ce389e6100b4e8a14ca712f4815350e317dc3f0 100644 +index fd596f0e27ecf722cdd90797f4c3ed5b8b4e10e3..3bf9d778f826f30ed7ccdfc81336f21fa3307fcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -144,6 +144,7 @@ public class PurpurWorldConfig { +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8..7ce389e6100b4e8a14ca712f4815350e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); mendingMultiplier = getDouble("gameplay-mechanics.mending-multiplier", mendingMultiplier); -@@ -171,6 +172,7 @@ public class PurpurWorldConfig { +@@ -181,6 +182,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0289-register-minecraft-debug-commands.patch b/patches/server/0290-register-minecraft-debug-commands.patch similarity index 96% rename from patches/server/0289-register-minecraft-debug-commands.patch rename to patches/server/0290-register-minecraft-debug-commands.patch index 1e5ed3ea9..db1601242 100644 --- a/patches/server/0289-register-minecraft-debug-commands.patch +++ b/patches/server/0290-register-minecraft-debug-commands.patch @@ -32,7 +32,7 @@ index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4 io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d7df39dc0937f37746b17bbad810478d11736f4b..046304d9149472eaffb3ff5f4fa22a230969de86 100644 +index 6e0e871153e0ec85fd40ddf0581b6ed2932b9f99..f49108ed94f7787347c5e0a721646083d6dffafc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -581,4 +581,9 @@ public class PurpurConfig { diff --git a/patches/server/0290-Configurable-villager-search-radius.patch b/patches/server/0291-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0290-Configurable-villager-search-radius.patch rename to patches/server/0291-Configurable-villager-search-radius.patch index 3d8da0513..d7bc61eb5 100644 --- a/patches/server/0290-Configurable-villager-search-radius.patch +++ b/patches/server/0291-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ce389e6100b4e8a14ca712f4815350e317dc3f0..8704cc621937beda692bf484cf5ef11b2d7d7e4c 100644 +index 3bf9d778f826f30ed7ccdfc81336f21fa3307fcd..7a9a5985b1429c25467db732678d0658aafcfafa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2881,6 +2881,8 @@ public class PurpurWorldConfig { +@@ -2891,6 +2891,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 7ce389e6100b4e8a14ca712f4815350e317dc3f0..8704cc621937beda692bf484cf5ef11b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2917,6 +2919,8 @@ public class PurpurWorldConfig { +@@ -2927,6 +2929,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); From 2cbd2dee6882f73544fd818fdaa654d3dc67b09c Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 1 May 2024 19:05:30 -0700 Subject: [PATCH 134/148] [ci skip] bump jdk version in workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4312154a3..fa85615bb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-java@v4 with: distribution: temurin - java-version: 17 + java-version: 21 cache: 'gradle' - uses: gradle/wrapper-validation-action@v2 - uses: gradle/actions/setup-gradle@v3 From 40392f28e45e1d2d45f123a142ffba24e03e0f11 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 1 May 2024 19:08:47 -0700 Subject: [PATCH 135/148] fix broken attribute check --- patches/server/0006-Ridables.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index ecd2f7590..1a8f8a88f 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -444,7 +444,7 @@ index fbfc2f2515ad709b2c1212aef9521e795547d66b..e77bd11af62682d5eca41f6c9e1aed30 this.lookAtCooldown--; this.getYRotD().ifPresent(yaw -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, yaw + 20.0F, this.yMaxRotSpeed)); diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..f8a649b0fee040bbf53084ca7094583ab4ffd900 100644 +index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..c4a09778ca6bf5c15b588234bcadec3496017e3d 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -44,12 +44,59 @@ public class Bat extends AmbientCreature { @@ -460,7 +460,7 @@ index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..f8a649b0fee040bbf53084ca7094583a + // Purpur start + @Override -+ public boolean shouldSendAttribute(net.minecraft.world.entity.ai.attributes.Attribute attribute) { return attribute != Attributes.FLYING_SPEED; } // Fixes log spam on clients ++ public boolean shouldSendAttribute(net.minecraft.world.entity.ai.attributes.Attribute attribute) { return attribute != Attributes.FLYING_SPEED.value(); } // Fixes log spam on clients + + @Override + public boolean isRidable() { @@ -5003,7 +5003,7 @@ index 0854e9b7ee2e6b23b6c1ee6a324a5a253c9d4679..6bdf3d1e3652a661282d61f1dc2bfc27 this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 72b3e64cf6d184e90a6e2c0d822b83312312d67d..90e44c7281935bc7ceb3b220bbcd73187fed44fb 100644 +index 093d1388ff90ad59110a37536b6639f939549068..66753bffa1e21ac5d5aaab4bc6cccb833774ddf5 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -206,6 +206,19 @@ public abstract class Player extends LivingEntity { @@ -5095,7 +5095,7 @@ index a2d336ceb52b63db5c03432ee7bc94dc6a742b82..a6268b3df9691278606501284b5504da + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 5a9c68b60cf3bf694fe1fcd3b095516b6481f8a2..2391a0c59bfbf315f00ce41c5e0a03ea23a25448 100644 +index 547ab158cd0cbf51da06ea97740cfce34bca651b..a49193a023bbd9b65bcd3652dc9c241720500755 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -592,6 +592,15 @@ public class CraftEventFactory { @@ -5123,7 +5123,7 @@ index 5a9c68b60cf3bf694fe1fcd3b095516b6481f8a2..2391a0c59bfbf315f00ce41c5e0a03ea event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index be3b733d7a641a7651ace1b3bd5ac56f26db5947..463af65182c0894a75a138df8100f3f616143f4c 100644 +index 19161d9736b626811423deefedd045abe60360cc..9287376ae1374e355857108d722f1be2fd7276d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -172,4 +172,9 @@ public class PurpurConfig { From 087d43d00bb1275645b578f27472b3c07c1c1a50 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 2 May 2024 14:50:02 -0700 Subject: [PATCH 136/148] [ci skip] add test plugin module --- .gitignore | 1 + settings.gradle.kts | 18 ++++++++++++++++++ test-plugin/build.gradle.kts | 17 +++++++++++++++++ .../org/purpurmc/testplugin/TestPlugin.java | 12 ++++++++++++ .../testplugin/TestPluginBootstrap.java | 4 ++++ .../purpurmc/testplugin/TestPluginLoader.java | 4 ++++ .../src/main/resources/paper-plugin.yml | 12 ++++++++++++ 7 files changed, 68 insertions(+) create mode 100644 test-plugin/build.gradle.kts create mode 100644 test-plugin/src/main/java/org/purpurmc/testplugin/TestPlugin.java create mode 100644 test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginBootstrap.java create mode 100644 test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginLoader.java create mode 100644 test-plugin/src/main/resources/paper-plugin.yml diff --git a/.gitignore b/.gitignore index 938c62654..1fd301e1d 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ Purpur-MojangAPI Purpur-Server paper-api-generator *.jar +test-plugin.settings.gradle.kts diff --git a/settings.gradle.kts b/settings.gradle.kts index eb5a07bf7..0ff9678cd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -37,3 +37,21 @@ for (name in listOf("Purpur-API", "Purpur-Server", "paper-api-generator")) { include(projName) findProject(":$projName")!!.projectDir = file(name) } + +optionalInclude("test-plugin") + +fun optionalInclude(name: String, op: (ProjectDescriptor.() -> Unit)? = null) { + val settingsFile = file("$name.settings.gradle.kts") + if (settingsFile.exists()) { + apply(from = settingsFile) + findProject(":$name")?.let { op?.invoke(it) } + } else { + settingsFile.writeText( + """ + // Uncomment to enable the '$name' project + // include(":$name") + + """.trimIndent() + ) + } +} diff --git a/test-plugin/build.gradle.kts b/test-plugin/build.gradle.kts new file mode 100644 index 000000000..4e1830aa8 --- /dev/null +++ b/test-plugin/build.gradle.kts @@ -0,0 +1,17 @@ +version = "1.0.0-SNAPSHOT" + +dependencies { + compileOnly(project(":purpur-api")) +} + +tasks.processResources { + val apiVersion = rootProject.providers.gradleProperty("mcVersion").get() + val props = mapOf( + "version" to project.version, + "apiversion" to "\"$apiVersion\"", + ) + inputs.properties(props) + filesMatching("paper-plugin.yml") { + expand(props) + } +} diff --git a/test-plugin/src/main/java/org/purpurmc/testplugin/TestPlugin.java b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPlugin.java new file mode 100644 index 000000000..39e2b3557 --- /dev/null +++ b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPlugin.java @@ -0,0 +1,12 @@ +package org.purpurmc.testplugin; + +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; + +public class TestPlugin extends JavaPlugin implements Listener { + + @Override + public void onEnable() { + this.getServer().getPluginManager().registerEvents(this, this); + } +} diff --git a/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginBootstrap.java b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginBootstrap.java new file mode 100644 index 000000000..612aa3e6f --- /dev/null +++ b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginBootstrap.java @@ -0,0 +1,4 @@ +package org.purpurmc.testplugin; + +public class TestPluginBootstrap { +} diff --git a/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginLoader.java b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginLoader.java new file mode 100644 index 000000000..6a00427bd --- /dev/null +++ b/test-plugin/src/main/java/org/purpurmc/testplugin/TestPluginLoader.java @@ -0,0 +1,4 @@ +package org.purpurmc.testplugin; + +public class TestPluginLoader { +} diff --git a/test-plugin/src/main/resources/paper-plugin.yml b/test-plugin/src/main/resources/paper-plugin.yml new file mode 100644 index 000000000..3418d110e --- /dev/null +++ b/test-plugin/src/main/resources/paper-plugin.yml @@ -0,0 +1,12 @@ +name: Purpur-Test-Plugin +version: ${version} +main: org.purpurmc.testplugin.TestPlugin +description: Purpur Test Plugin +author: PurpurMC +api-version: ${apiversion} +load: STARTUP +bootstrapper: org.purpurmc.testplugin.TestPluginBootstrap +loader: org.purpurmc.testplugin.TestPluginLoader +defaultPerm: FALSE +permissions: +dependencies: From 7380cb31e0fb3e7dbc11c9dd778de8c5d1cbb759 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 2 May 2024 14:52:58 -0700 Subject: [PATCH 137/148] [ci skip] update CONTRIBUTING file --- CONTRIBUTING.md | 95 +++++++++++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 34 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 118d9bc9f..6538e3a35 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,11 +4,11 @@ Purpur is happy you're willing to contribute to our projects. We are usually very lenient with all submitted PRs, but there are still some guidelines you can follow to make the approval process go more smoothly. -## Use a Personal Fork and not Organization +## Use a Personal Fork and not an Organization Purpur will routinely modify your PR, whether it's a quick rebase or to take care of any minor nitpicks we might have. Often, it's better for us to solve these -problems for you than make you go back and forth trying to fix it yourself. +problems for you than make you go back and forth trying to fix them yourself. Unfortunately, if you use an organization for your PR, it prevents Purpur from modifying it. This requires us to manually merge your PR, resulting in us @@ -27,12 +27,12 @@ which can be obtained in (most) package managers such as `apt` (Debian / Ubuntu; you will most likely use this for WSL), `homebrew` (macOS / Linux), and more: - `git` (package `git` everywhere); -- A Java 16 or later JDK (packages vary, use Google/DuckDuckGo/etc.). +- A Java 21 or later JDK (packages vary, use Google/DuckDuckGo/etc.). - [Adoptium](https://adoptium.net/) has builds for most operating systems. - - Purpur requires JDK 16 to build, however makes use of Gradle's + - Purpur requires JDK 21 to build, however, makes use of Gradle's [Toolchains](https://docs.gradle.org/current/userguide/toolchains.html) - feature to allow building with only JRE 8 or later installed. (Gradle will - automatically provision JDK 16 for compilation if it cannot find an existing + feature to allow building with only JRE 11 or later installed. (Gradle will + automatically provision JDK 21 for compilation if it cannot find an existing install). If you're on Windows, check @@ -42,16 +42,16 @@ If you're compiling with Docker, you can use Adoptium's [`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin/) images like so: ```console -# docker run -it -v "$(pwd)":/data --rm eclipse-temurin:16.0.2_7-jdk bash +# docker run -it -v "$(pwd)":/data --rm eclipse-temurin:21.0.3_9-jdk bash Pulling image... root@abcdefg1234:/# javac -version -javac 16.0.2 +javac 21.0.3 ``` ## Understanding Patches -Purpur is mostly patches and extensions to Paper/Spigot. These patches/extensions are +Paper is mostly patches and extensions to Spigot. These patches/extensions are split into different directories which target certain parts of the code. These directories are: @@ -66,7 +66,7 @@ Assuming you have already forked the repository: 1. Clone your fork to your local machine; 2. Type `./gradlew applyPatches` in a terminal to apply the changes from upstream. - On Windows, leave out the `./` at the beginning for all `gradlew` commands; + On Windows, replace the `./` with `.\` at the beginning for all `gradlew` commands; 3. cd into `Purpur-Server` for server changes, and `Purpur-API` for API changes.